Двач, как теперь найти и вывести на печать номер и элементыстроки, в которой находится максимальный элемент матрицы? Язык C++
Вот матрица#include<iostream>#include<stdlib.h>#include<conio.h>#include<math.h>using namespace std;main(){int N;cout<<"Введите размерность матрицы"<<endl;cout<<"N=";cin>>N;double A=new double [N];int i,j;for (i=0; i<N; i++) A=new double [N];for (i=0;i<N; i++) for (j=0; j<N; j++) A[j]=jj-i;for (i=0;i<N; i++){ for (j=0; j<N; j++) cout <<A[j]<<" "; cout<<endl;}}
>>222643207 (OP)>>222643363>>222643233Вот смотрите школьники с /b/, не будете учиться - будете как этот анон.
>>222643442Двумерные массивы говно и в реальной работе не юспользуется. Я лучше коллекции выучу потом.
>>222643707Вот тебе решение, нубик:Делаем две переменные:max =-999999line = 0Пробегаемся for ifor jif array[j] > n: max = array[j] line = iВ итоге у тебя будет в max самое большое число а в line номер строки с этим числом.
>>222643822Я ничего не высирал, я только пришел и увидел как ты оправдываешься почему двумерные массивы не нужны
>>222643640Братанчик, какие тебе листы, хэшмапы, если ты не можешь две супер очевидные строки добавить к своему коду
>>222643207 (OP)>>222643489>>222643957Твой потолок - галеры, на которых ты будешь говнокодером за еду.Если ты не можешь решить это простейшее говно (а точнее не можешь даже разобраться сам), то иди заводчанином
>>222644139А твой потолок это быть ручной труд, потому что ты не умеешь читать.3 сообщение написал не оп.
>>222644246Я умею читать поэтому я не буду вычитываться в шизовысерыМне похуй кто там оставил 3 сообщение он такой же шиз как и оп>>222644364Если ты не способен забить в гугле текст задачи, то ты не нужен
>>222645375Может тебе оно и не надо, но поверь, даже умножить вектор на матрицу не такая тривиальная задача, по которой по сей день выходят научные статьи
>>222643897ДЕЛАЕШЬ>max =-999999@В МАТРИЦЕ ВСЕ ЭЛЕМЕНТЫ МЕНЬШЕ -999999@ЖИДКО ПУКНУВ, ВЫДАЁШЬ ЛОЖНЫЙ РЕЗУЛЬТАТ
>>222643207 (OP)int r = 0, c = 0;double max = A[0][0];for(int i = 0; i < N; ++i)for(int j = 0; j < N; ++j)if(A[j] > max){max = A[j];r = i;c = j;}cout << r << "\t" << c << endl;
>>222646708Он работает быстрее иногда но это не точно из-за того, что не создаёт копию переменной перед увеличением.
>>222646783>>222646813Вы в ассемблере сравнивали, чтоб утверждать? Даже если на миллисек быстрее, это нарушение код стайла.
>>222646868>Вы в ассемблере сравнивали, чтоб утверждать?Я книжки про язык читал, чтобы утверждать.>Даже если на миллисек быстрее, это нарушение код стайла.Код стайла двачей, лол?И что, мне теперь выговор сделает двачлид?
>>222643207 (OP)>в которой находится максимальный элемент матрицы?1. Найти максимальный элемент матрицы. При поиске запоминать номер строки, чтобы в конце получить номер строки максимального элемента.2. Распечатать этот номер и элементы строки с этим номером.
>>222646868Чего несёт. Все, пасаны, нам мудак с двача кодстайлы задал, теперь только постфиксный инкремент будем использовать... Пиздос.
>>222646708Страх того, что оно не будет увеличено при использовании.>>222643207 (OP)Палю годноту тебе - декомпозиция или по другому разделение задачи на более простые.Например, писать портянку кода плохая идея.Что тебе нужно сделать? Разбить на функции задачу.ПоехалиСоздание массиваint *MakeArray( int Sizei, int SizeJ );Ввод данныхvoid FillArray( int &Array, int Sizei, int SizeJ );Поиск максимального значения в строкеvoid FindMax( int &Array, int NumberString );Последняя запускается для каждой строки, а потом запускается для некой дополнительной, на основе которой находится итоговый номер строки и значениеНу и выводvoid OutPut( int &Array, int Sizei, int SizeJ );
>>222643489Это правда, ну ок, если сделаешь на двумерных векторах, так и быть, скину тебе решение на массивах.
>>222646985>Я книжки про язык читал, чтобы утверждать.Книжка по какой версии языка? С тех пор компилятор могли изменить.
>>222647043Я использую постфиксный, но если говорить серьёзно, то хули тогда не на цикле while с указателями? Или сложна?
>>222646868Постфиксный использует внутри префиксный. По кодстайлам наоборот везде используется префиксный.
>>222647178Хуйня это твоё мнение, ебанат, ты охуеешь твом подходом решать задачи и потратишь уйму времени на решение.Мой пример истина, если ты отрицаешь, значит ты говнокодер с IQ ниже 10.
>>222643207 (OP)Ты же перебираешь матрицу в двух циклах, когда нашел элемент выведи его координаты. Само собой их надо где-то хранить каждую итерацию. Есть спосоь с применением математики для вектора, но тебе еще рано такое знать.
>>222646868эмм вообще да, в бинаре после компиляции. зависит от флагов компилятора на самом деле, от оптимизации, но в целом быстрее. и если у тебя таких операций миллионы - выигрыш заметен.кодстайл это, конечно, хорошо, но чет в последнее время разработчики забывать начали, что они пишут код чтоб он работал, а не чтоб на него дрочить удобнее было...
>>222647282Ты тоже дебилоид. Код опа даже скроллить не надо, он в экран влезает. Твои функции (в данном случае) нахуй не нужны.
>>222647351Вектором называется одномерный массив, дебилушка, там не трудно, но тебе рано, проще на циклах.
>>222647434>они пишут код чтоб он работал, а не чтоб на него дрочить удобнее было...Зависимые вещи, если код написан хуёво в нём перестают понимать и он перестаёт работать.
>>222647434Просто вот эта тенденция по ускорению всего заметна в основном у сишников++ и растофагов. В других языках все пишут лишь бы было понятнее и легко поддерживать.
>>222647393Это ты дебил, раз не понимаешь почему так правильно.>>222647447Ещё один вылез. Похуй куда он там влезает, важно удобство и простота, а так же дальнейшее использование наработок.
>>222647550Вектором называется стрелочка, на координатной плоскости, это знать надомимо четвёртый курс матфака
>>222643640Чтобы в кеш влезать очевидно, и префетчер хорошо с ними справляется, даже если в кеш не влезтьМимо с++ синьор
>>222647587>почему так правильно.Как блядь? Ты не разбил задачу на подзадачи, ты блядь функции завёл для распечатки, нахождения максимума и ввода. Правильно ты функции объявил? Ну да, а чё бы нет, правильно. Но это не разбиение задачи на подзадачи.
>>222643207 (OP)Легко, загоняешь матрицу в "массивы в массиве", дальше сравниваешь по одному элементу каждого массива между собой, сохраняя информацию "номер массива с числом" "элементы строки, в которой находится максимальный элемент матрица" и "максимальный элемент матрицы".выводишь.
>>222647587>Дальнейшее использование наработок>Laba2>void VvodMassiva()>void VvovMatrici()>void VvodVTvouMamky()Услышал тебя, клоун.
Int biggeststring, biggestvalueFor x=0 to width x++For y=0 to heiht y++If x > biggeststring(Biggeststring =yBiggestvalue = array(x,y))For x=0 to width x++Printf(%d, array(x,biggeststring))Вот тебе псевдокод
>>222647282Ты просто разбил прогу на рваные кусочки процедурные, хотя она не предполагает расширения дальнейшего, это по сути один небольшой алгоритм. Если писать что-то охуенно сложное, лучше сразу по ООП делать.
>>222647641Тоже эта тема выбешивает, но название явно не просто так выбрано.>>222647716Блядь, каков же тупица, охуеть вообще. ФУНКЦИЯ БЛЯДЬ ОТРАЖАЕТ ЕДИНИЦУ РАЗБИЕНИЯ СВОИМ НАЗВАНИЕМ ТУПОЙ ТЫ ДОЛБОЁБ БЛЯДЬ!ХУЛИ НЕПОНЯТНОГО? ТЕБЕ БЛОК СХЕМУ ЧТО ЛИ НАРИСОВАТЬ НАДО?Ёб твою мать! И такие люди у нас код пишут?
>>222647751А в чём проблема, когда он пишёт для себя? В чём проблема, если ему так удобнее?Даун не в курсе, что названия функций должны нести ясный смысл, иначе сам же начнёт плавать и уставать от малопонятных названий.
>>222647866>загоняешь матрицу в "массивы в массиве"Куда?>сравниваешь по одному элементу каждого массива между собойОткуда там несколько массивов уже? Кого с кем сравнивать?
>>222647531ну так на с/c++ и дропаются тогда, когда нужна производительность и полный контроль. сам бог велел оптимизировать. хочешь кодстайл - ну вон ява есть, го в конце концов неплох...наберут блин хипстоту по обьявлению...
>>222643207 (OP)Это очень толстый троллинг или ты серъёзно спрашиваешь? Ты головой-то подумай, подумай головой. Создаёшь переменную a, равную нулю, создаёшь переменную b, равную нулю, шаришь по всему массиву циклом вложенным в цикл, допусим переменная первого цикла i, а второго j, оба от нуля до N, если текущий элемент больше того, что в данный момент в a, то ты кладёшь в a значение оного, а в b кладёшь текущее значение i. Когда он пройдёт весь двумерный массив, в a будет максимальный элемент, в b будет номер строки, где он находится. Потому просто выводишь нужную тебе строку циклом.
>>222647797Предполагает, поиск максимального значения в некой строке массива всегда может пригодиться.>Если писать что-то охуенно сложное, лучше сразу по ООП делать.И убить времени в три раза больше, чем более простое решение. И да, причём тут ООП?
>>222647958А, да, если есть отрицательные числа, то переменная a изначально должна быть равна минус дохуя.
>>222647844>ФУНКЦИЯ БЛЯДЬ ОТРАЖАЕТ ЕДИНИЦУ РАЗБИЕНИЯ СВОИМ НАЗВАНИЕМ ТУПОЙ ТЫ ДОЛБОЁБ БЛЯДЬ!Ну так ты не все единицы перечислил, значит нихуя не отражает.
>>222647958> Создаёшь переменную a, равную нулю, создаёшь переменную b, равную нулюИ тут все элементы матрицы оказываются отрицательнымиБери первый попавшийся элемент в качестве а и шарь, не надо плодить сущности
>>222648008>то переменная a изначально должна быть равна минус дохуя.Даун? Зачем? Просто назначаешь первое же число самоым большим. Либо она реально самое большое, либо найдутся больше.
>>222648017Хуя, странно, что это надо объяснять.>>222648030АХАХАХАХ! Во блядь. А ИСПОЛЬЗОВАТЬ ЕЁ ЭННОЕ КОЛИЧЕСТВО РАЗ, НЕТ?Вывод: на дваче крайне мало людей, которые знают программирование хотя бы на уровне первого курса ВУЗА, беда.
>>222647984>Предполагает, поиск максимального значения в некой строке массива всегда может пригодиться.В таких же ненужных лабах. Ну можно тогда оформить как свою собственную библиотечку на все случаи жизни и пихать в свои лабораторные.
>>222648008>А, да, если есть отрицательные числа, то переменная a изначально должна быть равна минус дохуя.Блядь, да откуда вы лезете, нахуй?Пиздос.
>>222647921Смотри, чтоб с матрицей легко было работать её нужно обозначить одним элементом. Для того, чтоб это сделать нужно создать общий многомерный массив по типу Massive[MassiveInMassive][element]>Откуда там несколько массивов уже? Кого с кем сравнивать?Каждая строка своего рода массив, чтоб, который мы загнали в больший массив, чтоб с ним было удобно работать.Каждый элемент внутреннего массива нужно сравнить со всеми элементами матрицы.
>>222648090Поясняю отсталому дегенерату (тебе), что знание и интеллект это разные вещи. Если следовать твоей сверхущербной логике, то умнейший человек в мире будет тупым только потому, что не знает какого-нибудь дохлого языка племени Мумба-Юмба или их дегенеративных обычаев.
>>222648107Ты чё, пес, охуел?нормирование не даёт результатов потому что он уже нормирован, т.е. его длина равна 1. Но от этого он из твоей жопы не пропал
>>222648187> Вывод: на дваче крайне мало людей, которые знают программирование хотя бы на уровне первого курса ВУЗА, беда.А ты один из них, если чё.
>>222648137Это правда, но чет я не видел кодстайла где постфиксный инкремент предпочитается префиксному. Или наоборот. К тому же нет единого кодстаила от создателей языеп в отличие от пихтона какого-нибудь, так что кодстайлы у каждого свои
>>222648137Двачую. И так язык сложно поддерживать из-за слишком большой фривольности. Можно писать максимально разными способами одни и те же задачи.
>>222648279> где постфиксный инкремент предпочитается префиксномуВ интеле так пишут, инфа сотка. Только префиксный постфиксному.
>>222648300Ну-ну, не агонизируй в бессильной злобе. Я понимаю, что тебе обидно от того, что тебя, тупорылый скот, приложили ебалом в твое же говно, но не убивайся слишком сильно. Миру нужны говночисты, рабы и просто пушечное мясо.
>>222648213Да>>222648207Да, это очень важно для опыта, в книге по Си примеры это уже существующие функции, цель их написать. Тоже верно и для С++, иначе понимания зачем не будет.
>>222643207 (OP)Совсем дебил?Самый просто способ - итерационный.Пройтись по всему массиву и сравнивать все элементы. Максимальный записать в переменную.Пример:У нас есть 2 7 3 8 11 0Выполняем сравнение. 2 /> 7 = 77 > 3 = 78 >7 = 811 > 8 = 110 /> 11 = 11Элементарная задача. Для матриц - вложенный цикл и постоянное сравнение.
>>222648348> понормируй свой вектор {0, 0}Пошли проекции. Мне жаль, что твой вектор нулевой, но это не у всех так
>>222648420Потому что ты скуден умом. Даже обезьяну можно научить трюкам, но станет ли она от этого умнее?
>>222648207> Ну можно тогда оформить как свою собственную библиотечку на все случаи жизни и пихать в свои лабораторные.@ВЕСЬ КОД БИБЛИОТЕКИ - ПОДКЛЮЧЕНИЕ УЖЕ ГОТОВЫХ БИБЛИОТЕК
>>222648569Но он правМатрицу храним одномерным массивом AПотом max_element(A, A+nm) nm - размер матрицы.
>>222648248Если надо максимально быстро что-то посчитать, особенно если при этом надо много раз итерироваться по данным, для процессора нет ничего лучше чем работа с непрерывным куском памяти - он его затянет в кеши и довольно урча будет считать. А что в кеши не влезет будет при необходимости подтягивать префетчер заранее - современные процессоры замечательно определяют паттерны чтения памяти. Тоесть когда ты читаешь линейно с инкрементрм по 8 байт подряд - процессор это замечает и подтягивает данные в кеши заранее А что у тебя будет с вектором векторов: прочитали ряд, пошли на следующий - так, там вектор, прыгаем по указателю - ой бля, кеш мисс, ну лан, ждем 120 тактов пока данные из памяти подтянуться, прочитали ряд, так прыгаем по указателю в следующий ряд, ай бля, опять кеш мисс, ну лан снова ждем. Ну и так далее.А с листами и хеш мапами кеш миссы могут случаться вообще между каждой итерацией
>>222648784#include<stdio.h>chari="\\#include<stdio.h> ",n='\n',q='"',p="%s%cchari=%c%c%s%c,n='%cn',q='%c',p=%c%c%s%c,m=%c%c%s%c%c;%s%c",m="int main(){return!printf(p,i+1,n,q,i,i,q,i,q,n,q,p,q,n,q,m,q,n,m,n);}";int main(){return!printf(p,i+1,n,q,i,i,q,i,q,n,q,p,q,n,q,m,q,n,m,n);}
Держи мой говнокод из первого курса. Сам меняй синтаксис на С++ .#include <stdio.h>#include <stdlib.h>int main() { int C[10]={2, -5, 14, -7, 13, 1, -15, -18, -10, 11};int i, n, k; for (i=0; i<10; i++) { k=0; for (n=0; n<10; n++) { if (C>=C[n]) k++; } if(k==10) break; } printf("%d %d\n", i, C); return 0;}
>>222643707А ты можешь решить эту задачу эффективно? Ото я вот могу написть две строчки кода, но вот нихуя не могу сказать, что это будет самое эффективное решение.
>>222648784x=r"print('x=r'+chr(34)+x+chr(34),x,sep='\n')"print('x=r'+chr(34)+x+chr(34),x,sep='\n')На изи.
>>222649351Да я то отлично понимаю как ее решить, уже устроился джуном. Но у меня горит, что я все время не понимаю, "а действительно ли решение которое применяю лучшее из возможных?"
>>222649527Ещё могу скинуть две программы, которые печатают друг друга, это сложнее куайна и этого точно нигде не найдёшь.первая(печатает вторую)y="print('x='+chr(34)+y+chr(34),'c='+chr(34)+c+chr(34),c+chr(92)+chr(110)+chr(39)+chr(41),sep='" c="print('y='+chr(34)+x+chr(34),'c='+chr(34)+c+chr(34),x+chr(92)+chr(110)+chr(39)+chr(41),sep='" print('x='+chr(34)+y+chr(34),'c='+chr(34)+c+chr(34),c+chr(92)+chr(110)+chr(39)+chr(41),sep='\n')вторая(печатает первую)x="print('x='+chr(34)+y+chr(34),'c='+chr(34)+c+chr(34),c+chr(92)+chr(110)+chr(39)+chr(41),sep='" c="print('y='+chr(34)+x+chr(34),'c='+chr(34)+c+chr(34),x+chr(92)+chr(110)+chr(39)+chr(41),sep='" print('y='+chr(34)+x+chr(34),'c='+chr(34)+c+chr(34),x+chr(92)+chr(110)+chr(39)+chr(41),sep='\n')
>>222649580>Да я то отлично понимаю как ее решить>двач, помоги>Но у меня горит, что я все время не понимаю, "а действительно ли решение которое применяю лучшее из возможных?"И что ты делаешь по этому поводу?
>>222649605>>222649726Пффф, чел, если ты позаменял переменные, то не нагуглю.Вот только это никак не доказывает, что это ты придумал и написал.
>>222649726Цепные квайны? Не, не слышал. Рекорд вроде сейчас 39 программ на разных языках которые друг друша печатают, при этом последняя печатает первую
>>222648187А ты её будешь энное количество раз использовать? Нахуй усложнять? Написал, увидел, зарефактрорил.
>>222649850Так ты вообще не найдёшь такого, как второе. Не то, что переменные, а даже просто похожее. >>222649916Я сам код имею ввиду, примеров просто куайнов дохуя, а двойных меньше гораздо.
>>222650247Вероятность чего? Того что ты не спиздил где-то код его чутка видоизменив? Крайне мала, тут сыглы.
>>222650298Ну так чутка же, если чутка, то в самых первых выдачах должна быть аналогичная хуйня, а раз её нет, то ты понял.
>>222650387Ору с утверждения.Т.е. если я вские перемеменные типоIfJkпозаменяю на x c y, или если я спизжу метод принта как у тебя и добавлю итераций, то конечно оно гуглится не будет.Тут сыглы ++++
>>222650636А то, что нет смысла так запариваться ты учёл? Нахуя рандому так запариваться? Это нелогично, вон чел>>222649029сразу скинул копипасту и норм, короче это сразу видно имхо.
>>222651778Потому что апатия от 100500 бессмысленных задачек. Хоть бы попросили с файловой системой компа что-нибудь поделать.
>>222652085А что, я могу написать консольную утилиту по операциям над матрицами и она мне будет помогать делать дз по вышмату с ними, потом можно веб-приложение запилить, задеплоить на хероку и на парах с телефона заходить считать, когда лень решать. Спасибо, анон!лишь бы к тому времени мы матрицы не закончили
>>222651703Ну так забей хуй на учебу. Пиши что считаешь нужным и докажи что охуенный получая денюжку.
>>222652058Так и есть, будешь ебать эти матрицы. И это еще изи относительно, потому что есть вычисления геометрий и прочей хуйни где ты вообще охуеешь.
>>222652227Это шутка. Не будет такого, 95% лаб бесполезное говно, которое никогда не пригодится, алгоритмы тоже, математика тоже, вузы учат какой-то хуйне если честно.
>>222647434>выигрыш заметенКакой выигрыш, блядина птушная? Не отличается ничем бинарь, в глазенки перестань лупиться блядота https://godbolt.org/z/tnWlBLКомпилятор умные люди писали, ты рили думаешь что ребенок с образованием в три класса вроде тебя сможет оптимизировать что-то лучше?
>>222643489Двумерные массивы -- это матрица твоего экрана, долбоебик. Хочешь бы изменить картинку на экране -- меняй каждый пиксель по очереди.Jpg картинка тоже набор пикселей Аля двойной массив.Господи, долбаеб
>>222643489std::vector<std::vector<int>> vec(10, std::vector<int>(10, 0));А теперь думай, правда ли коллекции лучше.
>>222655363Словно двумерный массив, аналогично построенный, будет сильно лучше. Всё равно будет тот же лишний переход по указателю. Хочется двумерный массив - выделяй память одним куском под него и индексируй как i * row_length + j
>>222656089>Словно двумерный массив, аналогично построенный, будет сильно лучше.В разы, к тому же передача в функцию по указателю, а не объекту.Но надо ебаться с размерами/выделением памяти/удалением.И функции, например, для вставки писать.>выделяй память одним куском под него и индексируй как i * row_length + jЯ так лабу в универе писал, не всегда удобно.
>>222656483Тебе с вектором тоже парится особо не надо. Выхлоп там примерно похожий на двумерный массив:https://godbolt.org/z/vM2YUPА вот у одномерного массива с правильной индексацией индирекции будет куда меньше. Никакой mov rcx [rdi], mov rdx [rcx + ...] и т.п. А чем меньше обращений к памяти, тем лучше, т.к. они нынче дорогими могут выйти, если в кэш что-то не попадёт. А с честным двумерным массивом такое запросто может случиться.
>>222659653Какие же кресты говно, по сравнению с няшным растом. Хочешь получить что-то похожее на нормальный сиди и обтягивай всё констами до посинения.