Форум программистов, компьютерный форум CyberForum.ru

Найти номера на главной диагонали - C++

Восстановить пароль Регистрация
 
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.01.2011, 21:52     Найти номера на главной диагонали #1
Найти номера всех максимальных элементов на главной диагонали квадратной матрицы.

Вот что вышло...только никак не работает верно...я уже не занаю что не так..((

Добавлено через 25 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const n=4;
 
 
 void  MyIn ( int M[][n])
{ int i , j , x , y  ;
  for(i=0 , y=wherey()+1 ; i<n ; i++ , y++ )
   for (j=0 , x=10 ; j<n ; j++ , x+=5 )
     { gotoxy(x,y) ;
       cin>>M[i][j] ;
 
 }
}
 
 
   void MyMax( int M[][n] )
{
int Mx=M[0][0];
for ( int i = 0; i < n; i++ )
 if ( M[i][i]>Mx)
 {Mx=M[i][n-1-i];
 cout<<i<< "  " ;
   }
}
 
 
 
 
int main()
{
 
int A[n][n];
 
 
  cout<<endl;
    cout<<endl;
    MyIn( A) ;
     
  cout<<endl;
    cout<<endl;
   cout<<"      ";
   MyMax( A ) ;
 
getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2011, 21:52     Найти номера на главной диагонали
Посмотрите здесь:

Найти максимальный элемент по главной диагонали C++
C++ Динамически распределение памяти. Матрицы. Найти максимальный ниже побочной диагонали, и минимальный главной диагонали
C++ Найти произведение элементов главной диагонали и сумму элементов побочной диагонали
C++ В строках матрицы с отрицательным элементом на главной диагонали найти наибольший из всех элементов (найти ошибку в коде)
Вывести на экран значения тех эле-ментов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.01.2011, 21:59     Найти номера на главной диагонали #2
C++
1
2
3
4
5
6
7
8
   void MyMax( int M[][n] )
{
int Mx=M[0][0];
for ( int i = 1; i < n; i++ )
 if ( M[i][i]>Mx)
 {Mx=M[i][n-1-i];// эту строку замените так: {Mx=M[i][i];
    }cout<<Mx<<endl;
}
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.01.2011, 22:09  [ТС]     Найти номера на главной диагонали #3
а ничего не меняется...номера все равно не те выводит..нам номера нужны.

Добавлено через 2 минуты
особенно если номеров несколько...они у меня как один выводятся...
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.01.2011, 22:09     Найти номера на главной диагонали #4
Цитата Сообщение от barlog Посмотреть сообщение
Найти номера всех максимальных элементов на главной диагонали квадратной матрицы.
Тогда уточняю: максимальных элементов в главной диагонали может быть от 1 до n. И нужно вывести номера строк в которых эти элементы расположены? Так?
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.01.2011, 22:15  [ТС]     Найти номера на главной диагонали #5
ну да.матрица же квадратная на главной диагонали номер строки=номеру столбца.а так да...номера строк максимальных элементов на главной диагонали...допустим что у нас 9 максимальная..и на главной диагонали встречатся 3 раза...вот и надо вывести номера где находиться 9.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.01.2011, 22:19     Найти номера на главной диагонали #6
Если правильно понял задание
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(static_cast<int>(time(NULL)));
    const int size=5;
    int mat[size][size];
    int max;
    cout<<"Matrix"<<endl;
     for(int i=0; i<size; i++)
     {
         for(int j=0; j<size; j++)
          {
              mat[i][j]=rand()%9;
              cout<<mat[i][j]<<"  ";
          }
         cout<<endl;
     }
     max=mat[0][0];
     for(int i=0; i<size; i++)
     {
         for(int j=0; j<size; j++)
          {
              if(i==j && mat[i][j]>max)
              {
                  max=mat[i][j];
              }
 
          }
     }
     cout<<"Result"<<endl;
     for(int i=0; i<size; i++)
     {
         for(int j=0; j<size; j++)
          {
              if(i==j && mat[i][j]==max)
              {
                  cout<<"["<<i+1<<"]["<<j+1<<"]"<<endl;
              }
          }
     }
  system("pause");
  return 0;
 
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.01.2011, 22:19     Найти номера на главной диагонали #7
Проверяйте:
C++
1
2
3
4
5
6
7
8
9
10
11
   void MyMax( int M[][n] )
{
int Mx=M[0][0];
for ( int i = 1; i < n; i++ )
 if ( M[i][i]>Mx)
 {Mx=M[i][i];
    }
for ( int i = 0; i < n; i++)
   if(Mx==M[i][i])
cout<<i<<endl;
}
Выводим номера строк.
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.01.2011, 22:24  [ТС]     Найти номера на главной диагонали #8
если честно я не очень понимаю зачем нам это
C++
1
2
for ( int i = 0; i < n; i++)
   if(Mx==M[i][i])
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.01.2011, 22:28     Найти номера на главной диагонали #9
barlog,
Цитата Сообщение от barlog Посмотреть сообщение
.допустим что у нас 9 максимальная..и на главной диагонали встречатся 3 раза
Вот эта часть кода это и делает:
C++
1
2
for ( int i = 0; i < n; i++)
   if(Mx==M[i][i])
// если очередной элемент главной диагонали равен максимальному значению, то...
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
14.01.2011, 22:41     Найти номера на главной диагонали #10
с ответом опоздал, но делал честно))
поэтому выложу ..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{
    const int N = 4;
    int maxel;
    
    int mas[N][N] = {1,2,3,4,5,16,7,8,9,10,11,12,13,14,15,16};
 
    maxel = mas[0][0];
    for (int i = 0; i<N; i++)
    {
        if(maxel < mas[i][i])
        {
            maxel = mas[i][i];
        }
    }
 
    for(int i=0; i<N; i++)
    {
        if(maxel == mas[i][i])
        {cout << "Nomer stroki: " << i+1 << endl;}
    }
    system("pause");
}
критика будет? буду благодарен, если найдете недочеты и ошибки ..)
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.01.2011, 22:58  [ТС]     Найти номера на главной диагонали #11
cпасибо всем!)
только обьясните почему
C++
1
cout<<i<<endl;
пишут после второго for, а не в обоих циклах?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2011, 23:02     Найти номера на главной диагонали
Еще ссылки по теме:

Верно ли, что среднее арифметическое элементов выше главной диагонали больше среднего арифметического элементов ниже главной диагонали C++
C++ Найти произведение максимального элемента главной диагонали на минимальный элемент побочной диагонали
Определить: сумма элементов выше главной диагонали меньше суммы элементов ниже главной диагонали? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
14.01.2011, 23:02     Найти номера на главной диагонали #12
1ый находит максимальное значение, если добавить тут то он будет выодить каждый раз когда условие срабатывает..
2ой выводит номера строк с этими значениями
Yandex
Объявления
14.01.2011, 23:02     Найти номера на главной диагонали
Ответ Создать тему
Опции темы

Текущее время: 13:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru