В массиве А (N, N) определить произведение и количество положительных элементов, расположенных выше главной диагонали, найти максимальный среди диагональных элементов массива.
На С++ как можно реализовать данную задачу? Массив как сделать знаю, а дальше условия задачи задаются непонятно, как искать произведение и поиск положительных элементов, что выше главной диагонали... Помогите плиз, а то паника.
Другие языки программирования и технологии
задача на С++, нужна помощь в решении
Изучи цикл for и массивы.
" выше главной диагонали... ", когда i> j
for (int i =0; i < n; i++)
for (int j =i+1; j < n; j++)
if (a[j, i] > 0)
{
p *= a[j, i];
s += a[j, i];
}
for (int j =i+1; j < n; j++)
if (a[j, i] > 0)
{
p *= a[j, i];
s += a[j, i];
}
Тут есть два принципиальных затруднения: максимальный элемент главной диагонали может быть неединственным- поэтому надо вводить дополнительный массив размерности N( или динамический!) для хранения всех номеров диагонали с максимальным значением ( насколько я понял, надо ведь найти сам элемент, то есть его номер в диагонали, а не его значение!); вторая трудность- положительных элементов может быть очень много, да ещё и больших, поэтому не исключено переполнение. Так что цикл должен быть примерно такой:
max=-9.9999e300; p=0; for(k=0; k max){max=ak; kol=0; b[kol]=k;} if(ak==max){kol+=1;b[kol]=k;} for(l=k+1;l<n;l++)p+=log10(akl);}}
//Теперь все равные максимальные элементы содержатся в массиве b, а kol+1- их общее количество. Переменная р имеет смысл десятичного порядка искомого произведения положительных элементов матрицы выше главной диагонали.
max=-9.9999e300; p=0; for(k=0; k max){max=ak; kol=0; b[kol]=k;} if(ak==max){kol+=1;b[kol]=k;} for(l=k+1;l<n;l++)p+=log10(akl);}}
//Теперь все равные максимальные элементы содержатся в массиве b, а kol+1- их общее количество. Переменная р имеет смысл десятичного порядка искомого произведения положительных элементов матрицы выше главной диагонали.
Вова Шуляк
Этот козлячий сайт даже не редактирует ошибки в коде, которые сам же и допустил! А у меня ошибок не было...
Если искать среди всех элементов матрицы без исключения, то так
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{ //тут ищем произведение/сумму/все что надо
}//end for j
}//end for i
а если выше главной диагонали
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)// если внимательно сравните, то увидите, что разница только в начальном значении j
{ //тут ищем произведение/сумму/все что надо
}//end for j
}//end for i
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{ //тут ищем произведение/сумму/все что надо
}//end for j
}//end for i
а если выше главной диагонали
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)// если внимательно сравните, то увидите, что разница только в начальном значении j
{ //тут ищем произведение/сумму/все что надо
}//end for j
}//end for i
Похожие вопросы
- Нужна помощь в решении задачи по С++ связанная с матрицами
- Нужна помощь с решением задачи на С++ через Visual Studio
- Нужна помощь в решении задачи по языку программирования С++!!срочно!
- Нужна помощь в решении задач на Циклы и простейшие программы
- Как решить задачу в С++ ?Нужна помощь!!!
- Нужна помощь в решении данной задачи на Си.
- Нужна помощь в решении задачки на паскале )
- задача на паскале нужна помощь
- Задача на паскаль.нужна помощь
- Машине Тьюринга и Машины Поста нужна помощь с решением