АНОНЫ, ОХУЕННО ДИЧАЙШИЙ СРОЧНЫЙ ВАЖНЫЙ ВОПРОС. Дана целочисленная прямоугольная матрица. Нужно определить номер строки, в которой находится самая длинная серия одинаковых элементов. Помогите, будьте добры.
Программа на C#, если что.
бамп
>>143052097 (OP)Просто брутом сделай.Заведи 2 переменных:1 - самая длинная серия2 - текущая серияпроходи построчно, ++ в текущую, если элем повторился, в конце строки копируй в самую длинную из текущей с условием, что она больше чем там есть.Или ты даже синтаксиса решетки не знаешь? тогда иди нахуй, учицанадобыло
>>143052688Все интернеты облазил в поисках ошибки. Сделал все так же, как ты написал, но все равно он не присваивает нормально номер строки. Но что делать, если я только учусь?
>>143052966Иди со своей проблемой на cyberforum, зарегайся, не поленись, и тебе там помогут
перебирай строки строки с подсчетом одинаковых элементов, объяви две переменных одна с номером строки (например number), другая с количеством одинаковых элементов (например quantity) обе =0. после каждого перебора. сравнивай quantity с подсчитанным количеством. если насчитал больше, чем в quantity, то пиши в нее что насчитал, и в number - номер строки. Надеюсь понятно объяснил. мимо пыхер
int k = 0; int max = 0; int numstr; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (msv[i, j] == msv[i, j + 1]) { k++; } } if (k > max) { max = k; numstr = i; } else { max = 0; numstr = 0; } Console.WriteLine("Номер строки"+numstr); Console.ReadKey();Найдите тут ошибку в листинге.
>>143053115Да у меня времени нет, завтра сдавать, вы моя последняя надежда.
>>143052688Дана тебе строка с n элементов, если делать простым брутом то одну строку надо пройти n раз. Можно Сначала провести ее через квиксорт а потом уже сравнивать.
>>143053151if (msv[i, j] == msv[i, j + 1]) тут, ты должен сам до этого дойти
>>143053151Матрицу то покажи.
>>143053191Подоходчивее для тупых можешь, пожалуйста?
>>143052097 (OP)Создаешь переменную "самая длинная строка", приравниваешь её первой строке массива(матрицы). В цикле проверяешь каждую строчку, если она длинне первой то присваиваешь переменной "самая длинная строка" значение этой строки.
>>143053297матрица рандомом3 на 4
>>143053272не зря я прошу помощи, не первый час ебусь с этой прогой.
>>143053354ты ее хоть сортируешь?
>>143052097 (OP)Какие ограничения на задание то? Linq юзать можно или это задание для первого курса аля "ебаните шобы было как на паскале, не юзая возможностей языка"?
>>143053410это условие никогда не выполнится, и если ты не можешь понять почему, то иди электродояркой лучше работать
>>143053435msv[i, j] = r.Next(-3, 3);Это матрица.
>>143053542Ты прав про первый курс.
>>143053544А если мне даже препод не может подсказать, пушо он не знает? Я просто прошу помощи, а не кидания хуёв в меня.
>>143053631тогда ты не на тот сайт зашел
>>143053631linq можно или нет?
>>143053544У меня-то к через консоль выводится, а потом уже неполадки какие-то происходят.
>>143053765Выход за пределы массива?
>>143053749Нет.
>>143053825Выхода за пределы нет.
>>143053715Я в вас верю больше всех.
array.FindIndex(a => a.GroupBy(b => b).OrderByDescending(c => c.Count()).First());
>>143054009Мы еще не настолько изучили шарп, чтобы писать такие заклинания.
>>143054128щас чай допью запилю по быстрому, коллекции можно юзать? на говнокод пофиг или надо ещё и оптимально?
>>143054327Что такое коллекции я не знаю, говнокод должен уметь писать банальный первокурсник.
>>143053272Лишний знак равенства?
>>143054476логическое равно, а не присваивание, ты че
>>143054476>>143054552Если что, в шарпе = это присваивание, а == это равенство.
>>143053151Ёпта, j <= 2 должно быть. С чем ты сравниваешь, когда j=2?
>>143054998Так-то j изначально 4 равно. Если я сейчас там поставлю =, то вылетит за границы.
>>143055397А что именно выводит консоль? как ошибка то хоть выглядит?
>>143053151Где оно равно 4? Ты его инициализируешь нулём.И второе, если текущий элемент != следующему, то текущий счётчик надо обнулять.
>>143055489ошибку она не выводит, параметр К считается правильно, а уже потов в присваиваниях всяких идет какая-то ошибка и в итоге он выводит всегда не то, что надо
>>143053151>int k = 0; >int max = 0; >int numstr; >for (int i = 0; i < 3; i++) >{ >>for (int j = 0; j < 3; j++) >{ >if (msv[i, j] == msv[i, j + 1]) >{ >k++; >} >} >if (k > max) >{ >max = k; >numstr = i; >} >else >{ >max = 0; >numstr = 0; >} >>Console.WriteLine("Номер строки"+numstr); >Console.ReadKey();Похоже на то что у тебя не хватает скобочек{ }оформи нормально, посчитай там всё
>>143055532у меня матрица задана 3 на 4
>>143055840http://pastebin.com/wajH6DuTЧёто типо такого, вполне можно поверить что это писал ты
>>143055840The name i doesn't exist in this current context
int k = 0;int max = 0;int numstr;for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) { if (msv[i, j] == msv[i, j + 1]) { k++; } else k = 0; if (k > max) { max = k; numstr = i; } else { max = 0; numstr = 0; }}
Бля, нахуя последний else-то:int k = 0;int max = 0;int numstr;for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++){if (msv[i, j] == msv[i, j + 1]){k++;} else k = 0;if (k > max){max = k;numstr = i;}else}
Финалочка int k = 0;int max = 0;int numstr;for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++){if (msv[i, j] == msv[i, j + 1]){k++;} else k = 0;if (k > max){max = k;numstr = i;}}
ОП, у тебя 10 минут и я иду спать.
>>143056485сек, чекну
>>143056414>int k = 0;>int max = 0;>int numstr;>for (int i = 0; i < 3; i++)>>>for (int j = 0; j < 3; j++)>{>if (msv[i, j] == msv[i, j + 1])>{>k++;>} else k = 0;>>if (k > max)>{>max = k;>numstr = i;>}>>>}неа, не то
>>143056414При переходе между строками обнулять k не забывай.
ОП, тебя тут спасают всем двачем.int k = 0;int max = 0;int numstr;for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++){k=0;if (msv[i, j] == msv[i, j + 1]){k++;} else k = 0;if (k > max){max = k;numstr = i;}}
>>143056784а вот нет, тоже неправильно
>>143056900этот вариант бери и мозга не ебиhttp://pastebin.com/wajH6DuT
Да ты заебал, как ты там вообще учишься?int[,] msv = new int[3, 4] { { 1, 2 , 3, 4}, { 3, 3,4, 4 }, { 5,5, 5 ,7} }; int k = 0; int max = 0; int numstr =0; for (int i = 0; i < 3; i++) { k=0; for (int j = 0; j < 3; j++) { if (msv[i, j] == msv[i, j + 1]) { k++; } else k = 0; if (k > max) { max = k; numstr = i; } } } //Your code goes here Console.WriteLine(numstr);
>>143056784Пиши размеры матриц константами, чтоб понятно было. Например, M = 3, N = 43. И во вложенном цикле тогда j<N-1.
>>143056987N=4 фикс
>>143056964>int k = 0;>int max = 0;>int numstr =0;>for (int i = 0; i < 3; i++)>{>k=0;>for (int j = 0; j < 3; j++)>{>>if (msv[i, j] == msv[i, j + 1])>{>k++;>} else k = 0;>>if (k > max)>{>max = k;>numstr = i;>}>>}>}>//Your code goes here>Console.WriteLine(numstr);веришь или нет, ввожу все точь-в-точь, и нихуя. сам понимаю, что должно все работать, но блть.
>>143057202У меня работает, не еби мозги ЛИБО используй дебаггер, удачи завтра с зачётом.
https://dotnetfiddle.net/IU9H7susing System; public class Program{ public static void Main() { int k = 0; int max = 0; int numstr = 0; int[,] msv = { { 4, 0, 1, 8 }, { 7, 7, 7, 7 }, { 3, 5, 5, 8 } }; for (int i = 0; i < 3; i++) { k = 0; for (int j = 0; j < 3; j++) { if (msv[i, j] == msv[i, j + 1]) { k++; if (k > max) { max = k; numstr = i; } } else k=0; } } Console.WriteLine("Номер строки"+ numstr); }}
>>143057264всего лишь сдача лаб)
>>143057296бля ахуенно я скинул
>>143057296http://pastebin.com/gLikJZkiusing System; public class Program{ public static void Main() { int k = 0; int max = 0; int numstr = 0; int[,] msv = { { 4, 0, 1, 8 }, { 7, 7, 7, 7 }, { 3, 5, 5, 8 } }; for (int i = 0; i < 3; i++) { k = 0; for (int j = 0; j < 3; j++) { if (msv[i, j] == msv[i, j + 1]) { k++; if (k > max) { max = k; numstr = i; } } else k=0; } } Console.WriteLine("Номер строки"+ numstr); }}http://pastebin.com/gLikJZki
>>143057429Ах да, в ответе к номеру строки единицу ещё надо добавить. Нумерация же с нуля начинается
>>143057429numstr = i +1;или Console.WriteLine("Номер строки"+ (numstr+1));
>>143057517СПАСИБО, да уже заметил, что все хорошо!
>>143057651Знай, за тебя задачку школьник решил, который только в следующем году начнёт в вузике си сярп учить
>>143052097 (OP)m <- matrix(sample(1:15,replace = T),nrow = 5,ncol = 5)which.max(sapply(apply(m,1,tabulate),function(x) x[which.max(x)]))
>>143052097 (OP)Тебе надо всего элементов или чтобы между ними не было ничего.типа 2332322 Тут самая длинная 2 или 5?