Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 12:51   #1
Stastriada95
Новичок
Джуниор
 
Регистрация: 28.05.2013
Сообщений: 3
По умолчанию Программа на C++

Доброго времени дня! Очень большая прозьба помочь с задачей по C++.
Задание: В матрице (6,6) найти максимальный из элементов, стоящих выше побочной диагонали и заменить его на 0.
Сам я смог написать (не без помощи интернета конечно же) только программу, которая ищит максимум во всей матрице. Я перепробовал все что знал, чтобы посчитать максимум выше побочной, но никак. Помогите пожалуйста дописать программу или как то по другому (советом например). Зарание спасибо!


#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{setlocale(0,"");
double **a,*p,h;
int n,m=6,i,j,k;
cout << "Находим максимальный элемент матрицы"<< endl;
cout << "--------------------------------------"<< endl;

n=m;

a=new double *[n];
for(i=0;i<n;i++)
a[i]=new double[m];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=rand()%1000;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cout<<a[i][j]<<" | ";
cout<<endl;
}

double l=fabs(a[0][0]);
int s=0,t=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(fabs(a[i][j])>l)
{
l=fabs(a[i][j]);
t=i;
s=j;
}
cout <<"Максимальный эллемент = ";
cout <<l<<endl;
cout<<" "<<endl;

for(i=0;i<n;i++)
delete [] a[i];
delete [] a;
}

программная среда Code::Blocks 10.05
Stastriada95 вне форума Ответить с цитированием
Старый 28.05.2013, 12:59   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
for(i=0;i<n;i++)
for(j=0;j<m;j++)
Этот двойной цикл перебирает все пары (i,j), такие, что 0<=i<n; 0<=j<m.
Во-первых, в Вашем случае m=n (собственно, m можно вообще повсюду заменить на n) - понятие "побочной диагонали" определено только для квадратной матрицы.

Во-вторых, условие "элемент (i,j) находится выше побочной диагонали" можно формально записать - нарисуйте матрицу и посмотрите! - как (i+j)<(n-1).
Поэтому простейший вариант - добавить во (внутренний) цикл, перед сравнением, условие
Код:
if((i+j) >= (n-1)) continue; //Если элемент не выше побочной диагонали - пропускаем
(NB: не забудьте заключить тело двойного цикла в операторные скобки {} - сейчас цикл состоит из одной инструкции, поэтому работает и так, а если добавить ещё инструкцию, то...)
Но есть вариант чуть умнее - если переписать это условие, оставив в левой части неравнства j, получится ограничение на j, которое можно подставить вместо имеющегося j<n.
Abstraction вне форума Ответить с цитированием
Старый 28.05.2013, 13:07   #3
Stastriada95
Новичок
Джуниор
 
Регистрация: 28.05.2013
Сообщений: 3
По умолчанию

Спасибо огромное, буду пробовать! ))
Stastriada95 вне форума Ответить с цитированием
Старый 28.05.2013, 13:19   #4
Stastriada95
Новичок
Джуниор
 
Регистрация: 28.05.2013
Сообщений: 3
По умолчанию

ну вот!!! получилось. Ищит максимум выше побочной!! Спасибо еще раз. Осталось заменить )
Stastriada95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел Yegorka Lazarus, Free Pascal, CodeTyphon 13 20.12.2012 18:02
Программа как программа. вопрос leonidsm Общие вопросы C/C++ 5 02.10.2012 21:30
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09