Koshak Опубликовано 3 мая, 2011 Жалоба Поделиться Опубликовано 3 мая, 2011 1.Упорядочить массив целых положительных чисел в порядке убывания сумм цифр встречающихся в их записи.Ну тут суть в том, что пользователь вводить массив чисел.например, 2,5,9,12,138.программа должна вывести 12(т.к. 1+3+8=12),9,5,3(т.к. 1+2=3),2.я знаю только как из числа вытащить первую и последнюю цифру,но если число будет 981273598231757231571235789 то как мне сложить все цифры?2.получить произведение минимальных элементов столбцов действительной матрицы размера 4х5.вот мой неполный код, где я задаю матрицу.и пытаюсь найти минимальное число,но безуспешно.я присваиваю первому числу значение минимального, но не могу сравнить с остальными.# include # include # include using namespace std;int main(){ setlocale(LC_ALL,"Russian"); const int n=4,m=5; int x[n][m]; int i,j,min1,min2,a; cout << "введите матрицу размера " << n << "х" << m < for (i=0;i for (j=0;j cin >> x[j]; min1=x[0][0]; if(x[0] do { i++; } while(i min1=x[0]; min2=x[0][1]; if(x[0][j] do { j++; } while(j min2=x[0][j]; cout << "мин1= "<< min1 << " мин2= " << min2 << endl; a=min1*min2; cout << "произведение минимальных элементов столбцов матрицы равно" << a << endl; system("pause"); return 0;}тут суть в том, что у нас есть матрица.нужно в каждом столбце найти минимальное число и перемножить их.Язык С++.заранее спасибо. Ссылка на комментарий
Lakers Опубликовано 3 мая, 2011 Жалоба Поделиться Опубликовано 3 мая, 2011 1.int n;//числоint sum=0;while(n>0){ sum+=n%10; n/=10;}2.# include # include # include using namespace std;int main(){setlocale(LC_ALL,"Russian");const int n=4,m=5;int x[n][m];int i,j,min1,min2,a;cout << "введите матрицу размера " << n << "х" << m <for (i=0;ifor (j=0;jcin >> x[i][j];a=1;for (i=0;i min1=x[0][i]; for (j=0;j if(min1>x[j][i]){ min1=x[j][i]; } }a*=min1;}cout << "произведение минимальных элементов столбцов матрицы равно" << a << endl;system("pause");return 0;} Ссылка на комментарий
Koshak Опубликовано 4 мая, 2011 Автор Жалоба Поделиться Опубликовано 4 мая, 2011 спасибо,но объясните, что делает вот эта строчка.for (i=0;i min1=x[0][i]; for (j=0;j if(min1>x[j][i]){ min1=x[j][i];насколько я понял, она самая главная в программе и именно она ищет минимальные числа.но куда она запоминает их? Ссылка на комментарий
Vsadnik665 Опубликовано 4 мая, 2011 Жалоба Поделиться Опубликовано 4 мая, 2011 a - произведение минимальных чиселmin1 - минимальное число в столбце. Ссылка на комментарий
Koshak Опубликовано 4 мая, 2011 Автор Жалоба Поделиться Опубликовано 4 мая, 2011 но как каждое число запоминается?куда? Ссылка на комментарий
Vsadnik665 Опубликовано 4 мая, 2011 Жалоба Поделиться Опубликовано 4 мая, 2011 Оно (min1) не запоминается. Оно (min1) умножается на a. И в а уже хранится произведение минимальных элементов. Ссылка на комментарий
martinges Опубликовано 4 мая, 2011 Жалоба Поделиться Опубликовано 4 мая, 2011 у тебя в памяти уже сидит матрица.Далее пробегаешься по столбцамзаходишь в первый цикл, говоришь пусть первый элемент будет минимальным бежишь по столбцу и проверяешь, а вдруг другой элемент меньше чем мой минимум и тут бац находишь его и говоришь теперь ты будешь минимумом в конце пробежки столбца умножаешь текущее значение минимума на переменную а. Далее идет следующий столбец, перетираем предыдущее значение минимума новым значением 1 элемента текущего столбца) и т.д. пока столбцы не кончаться в конце у тебя в переменной а уже полное произведение минимальных элементов матрицыP.S. Есть такая крутая штука как трассировка) и подсматривалка(watch) тупо бегаешь по строчкам кода и смотришь текущее состояние переменных Ссылка на комментарий
Koshak Опубликовано 4 мая, 2011 Автор Жалоба Поделиться Опубликовано 4 мая, 2011 у тебя в памяти уже сидит матрица.Далее пробегаешься по столбцамзаходишь в первый цикл, говоришь пусть первый элемент будет минимальным бежишь по столбцу и проверяешь, а вдруг другой элемент меньше чем мой минимум и тут бац находишь его и говоришь теперь ты будешь минимумом в конце пробежки столбца умножаешь текущее значение минимума на переменную а. Далее идет следующий столбец, перетираем предыдущее значение минимума новым значением 1 элемента текущего столбца) и т.д. пока столбцы не кончаться в конце у тебя в переменной а уже полное произведение минимальных элементов матрицыP.S. Есть такая крутая штука как трассировка) и подсматривалка(watch) тупо бегаешь по строчкам кода и смотришь текущее состояние переменных спасибо)все разжевано) Ссылка на комментарий
Koshak Опубликовано 5 мая, 2011 Автор Жалоба Поделиться Опубликовано 5 мая, 2011 а как в первой задаче, после нахождения суммы первого числа запомнить его и приступить к обработке второго? Ссылка на комментарий
Vsadnik665 Опубликовано 5 мая, 2011 Жалоба Поделиться Опубликовано 5 мая, 2011 (т.к. 1+3+8=11)Для начала это исправь.Создаешь новый массив - B, того же размера, что и первый - A. И поочередно записываешь сумму цифр следующего числа (скажем sum)в этот массив - B, сравнивая sum с числами в массиве B - если sum>B, то i++ и дальше проверяешь. Если нет - то записываешь его на i-е место, а все числа после него перемещаешь на 1 пункт.Таким образом, сумму опять не надо никуда записывать. Ссылка на комментарий
Koshak Опубликовано 5 мая, 2011 Автор Жалоба Поделиться Опубликовано 5 мая, 2011 (т.к. 1+3+8=11)Для начала это исправь.Создаешь новый массив - B, того же размера, что и первый - A. И поочередно записываешь сумму цифр следующего числа (скажем sum)в этот массив - B, сравнивая sum с числами в массиве B - если sum>B, то i++ и дальше проверяешь. Если нет - то записываешь его на i-е место, а все числа после него перемещаешь на 1 пункт.Таким образом, сумму опять не надо никуда записывать.массив создается при помощи for? Ссылка на комментарий
Vsadnik665 Опубликовано 5 мая, 2011 Жалоба Поделиться Опубликовано 5 мая, 2011 Массив объявляетсяint x[n][m]; Ссылка на комментарий
Koshak Опубликовано 5 мая, 2011 Автор Жалоба Поделиться Опубликовано 5 мая, 2011 ясно, но зачем мне создавать несколько массивов?мне вроде нужен всего один. Ссылка на комментарий
Vsadnik665 Опубликовано 5 мая, 2011 Жалоба Поделиться Опубликовано 5 мая, 2011 Ну тогда используй 1.1) Берешь 1-й элемент. Находишь сумму цифр. Переписываешь.2) Берешь n-й элемент. Находишь сумму цифр (sum). Поочередно сравниваешь, начиная с i=1 и до (n-1) - если sum>x, то в цикле от j=(n-2) до (downto) i переносишь все элементы массива на следующее место. (x[j+1]=x[j]). Затем записываешь x=sumps. возможно начинать нужно не с 1 а с 0, если Си++ Ссылка на комментарий
Koshak Опубликовано 6 мая, 2011 Автор Жалоба Поделиться Опубликовано 6 мая, 2011 кароче, вот что получилось после долгой умопытки.1.Упорядочить массив целых положительных чисел в порядке убывания сумм цифр встречающихся в их записи.мой код.неправильный,но есть в нем хоть капля просвета?# include # include # include using namespace std;int main(){ setlocale(LC_ALL,"Russian"); cout <<"введите ряд чисел" << endl; int a[n],i,j; int sum[m],help; cin >> a[n]; sum[m]=0; help=a[0]; while(n>0) { sum+=n%10; n/=10; } for(j=1;i for(i=0;j if(sum[n]>sum[n+1]) { help=sum[n]; sum[n+1]=a[0]; } cout << "новый ряд " << sum << endl; system("pause"); return 0;} Ссылка на комментарий
Vsadnik665 Опубликовано 6 мая, 2011 Жалоба Поделиться Опубликовано 6 мая, 2011 Чистая пустыня тьмыДавненько не программировал. Так что не суди строго. Тело: { int a[],n,m,i,j,k; int sum; cout <<"введите N" << endl; cin >> n; cout <<"введите ряд чисел" << endl; for (i=0;i cin >> a[i]; for (i=0;i{ while(a[i]>0) { sum+=a[i]%10; a[i]/=10; } m=0; for(j=0;j { if (sum>a[j]) { for (k=i-1;k>j;k--) a[k+1]=a[k]; } else continue; m=j; break; } a[m]=sum;} cout << "новый ряд "; for (i=0;i cout << a[i]; system("pause"); return 0;}не могу нигде проверить верность кода Ссылка на комментарий
Koshak Опубликовано 6 мая, 2011 Автор Жалоба Поделиться Опубликовано 6 мая, 2011 int a[],n,m,i,j,k;пишет неизвеестный размер a Ссылка на комментарий
Vsadnik665 Опубликовано 6 мая, 2011 Жалоба Поделиться Опубликовано 6 мая, 2011 ввели Nпосле этого - int a[n];может так? Где знающие люди? Я dctuj лишь хороший алгоритмизатор. Ссылка на комментарий
Koshak Опубликовано 6 мая, 2011 Автор Жалоба Поделиться Опубликовано 6 мая, 2011 если ставлю int a[n] то пишет, что n-необъявленный идентификатор. Ссылка на комментарий
Vsadnik665 Опубликовано 6 мая, 2011 Жалоба Поделиться Опубликовано 6 мая, 2011 Ну ты совсем Си++ не знаешь чтоли! Сначала хоть одну книжку прочитай!Не помню. Кажется int a[]=new [n];Возможно без скобок после а и без int (при условии что массив уже объявлен) Ссылка на комментарий
Koshak Опубликовано 6 мая, 2011 Автор Жалоба Поделиться Опубликовано 6 мая, 2011 просто я серьезно заболел и пропустил все пары про массивы и функции.а я такой человек, что теорию не могу понять без практики.читаю лекции, но ничего не понимаю.а как задачку сделаю, так все понятно становиться.а без этих задач к сессии не допустят.и кстати,я не могу делать вот этоНе помню. Кажется int a[]=new [n];Возможно без скобок после а и без int (при условии что массив уже объявлен)так как мы не проходили это на парах.что я скажу преподу?=) Ссылка на комментарий
Koshak Опубликовано 8 мая, 2011 Автор Жалоба Поделиться Опубликовано 8 мая, 2011 ну так помогите 1-ю задачу до конца довести Ссылка на комментарий
Vsadnik665 Опубликовано 8 мая, 2011 Жалоба Поделиться Опубликовано 8 мая, 2011 Скажи, читаешь дополнительную литературу!попробуй тогда как во втором примере - int sum; cout <<"введите N" << endl; cin >> n; int a[n];cout <<"введите ряд чисел" << endl; for (i=0;i cin >> a[i];int n,m,i,j,k;Если и здесь не получится - сделай из n константу Ссылка на комментарий
Koshak Опубликовано 9 мая, 2011 Автор Жалоба Поделиться Опубликовано 9 мая, 2011 но n надо же дать какое-то значение. Ссылка на комментарий
martinges Опубликовано 9 мая, 2011 Жалоба Поделиться Опубликовано 9 мая, 2011 2 варианта можешь сделать типа такого:#define n 5 ------> задаешь кол-во элементов заранее в коде илиint a[100]; ------> задаешь кол-во элементов с клавы, но не превышающих 100 некрасивый способ правда)P.S. Самый лучший способ - это метод тыка Впринципе мы можем написать тебе полное решение твоей задачи но тогда ты не научишься кодить А метод тыка это примерно так) закодил, посмотрел, выдало ошибки---> почитал, исправил---> не получилось, почитал help, не получилось Internet в помощь Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти