C++.Дана матрица С(6,6). Определить количество "особых" элементов массива, считая элемент "особым", если он больше суммы остальных элементов своего столбца. Напечатать индексы "особых" элементов.
#include #include #include using namespace std; int const n=6; int const m=6; int main() { int a[n][m]; int sm; // установка генератора случайных чисел srand(time(NULL)); // генерация массива и вывод на экран for (int i=0; i for (int j=0; j a[i][j]=rand()%50-20; cout<<setw(7)<<a[i][j];<br> } cout<<endl;<br> } // обработка массива for (int i=0; i sm=0; for (int j=0; j for (int j=0; j if (2*a[j][i]>sm) cout<<j+1<<" "<<i+1<<endl;<br> } system("pause"); return 0; } -16 -2 15 4 7 3 -13 16 3 16 -13 3 0 19 20 6 20 -18 -19 7 1 10 -11 25 5 4 3 21 28 -13 26 -19 -7 12 -20 11 1 1 2 1 3 1 5 1 6 1 3 5 5 5 4 6
В вашем результате есть особое число, его индекс 2,2. Учитывая то, что вы выводите с +1, то в выводе должен быть результат 3,3, я его там не увидел.
Согласен, нужно исправить одну строку: if (a[j][i]>sm) cout<<j+1<<" "<<i+1<<endl; на следующую: if (2*a[j][i]>sm) cout<<j+1<<" "<<i+1<<endl;
нет, просто if (sum-a[j][i]<a[j][i]) cout<<j+1<<" "<<i+1<<endl;
Вы то же самое и написали, перенесите из левой части в правую.
Всмысле то же?Вы умножаете на 2 ваш элемент. Не понимаю почему.
Вас в школе плохо учили арифметике?
Нет, я сам её плохо учил, но всё же, к чему это умножение на 2?
Может быть я что-то не понимаю, но как помоему, лоничнее будет от сумы отнять проверяемый элемент, нежели умножать его на 2.
sum - a[j][i] < a[j][i] то же самое, что sum < 2*a[j][i] переносите в правую часть с противоположным знаком, если это не понятно, тогда тяжелый случай.
А, вы умножаете элемент на 2, что-бы не вычетать его из суммы, дошло, но как помоему более правильно будет через sum-a[j][i] :)