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

Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов - C++

Восстановить пароль Регистрация
 
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
27.12.2009, 17:05     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #1
Дан вещественный массив А[N][N]. Вывести на экран значения тех элементов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали.

Просьба помочь.
Borland 5.2
Интеллектуальная собственность:

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
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <stdlib.h>
#include <time.h>
#define N 3
int main()
{
randomize();
  int A[N][N],B[255],C[255],q=0,W=0,flag=0;
  cout<<"Matrix: "<<endl;
    for (int i=0;i<N;i++)
    {
      for (int j=0;j<N;j++)
      {
         // A[i][j]=rand()%10;
         // cout<<A[i][j]<<" ";
         cin>>A[i][j];
      }
   //   cout<<endl;
    }
    cout<<endl;
    cout<<"Vishe: "<<endl;
    for (int i=0;i<N;i++)
    {
      for (int j=0;j<N;j++)
      {
          if (i<j)
          {
              B[q]=A[i][j];
              cout<<B[q]<<" ";
              q++;
          }
      }
    }
    q=0;
    cout<<"\nNizhe: "<<endl;
    for(int i=1;i<N;i++)
    {
        for(int j=0;j<i;j++)
        {
            q++;
            cout<<A[i][j]<<" ";
             if (B[j]>A[i][j])
                 flag++;
        }
    }
    for(int i=1;i<N;i++)
    {
        for(int j=0;j<i;j++)
        {
            if (flag==q)
            {
                C[W]=B[j];
                W++;
            }
        }
    }
    cout<<endl<<endl;
    for (int i=0;i<q;i++)
          cout<<C[i]<<" ";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 17:05     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов
Посмотрите здесь:

C++ Подсчитать количество элементов матрицы, лежащих выше главной диагонали
C++ Найти сумму положительных элементов матрицы, которые находятся выше главной диагонали
C++ Найти минимальный среди элементов, лежащих выше главной диагонали
Двумерный массив. Найти минимальный элемент в, среди элементов, лежащих выше главной диагонали C++
Заменить на 0 значения элементов матрицы, лежащих выше главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2009, 17:19     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #2
Darky, Что нужно, код написать под это задание? Исправить код который написан? Или Вы просто выложили код для того что бы с ним ознакомились другие?
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
27.12.2009, 17:23  [ТС]     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #3
Просьба помочь.
Скорее, поглядеть код и сказать, что в нем не так.
За это время он эволюционировал в
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <stdlib.h>
#include <time.h>
#define N 3
int main()
{
randomize();
  int A[N][N],B[255],C[255],q=0,W=0,flag=0;
  cout<<"Matrix: "<<endl;
    for (int i=0;i<N;i++)
    {
      for (int j=0;j<N;j++)
      {
         // A[i][j]=rand()%10;
         // cout<<A[i][j]<<" ";
         cin>>A[i][j];
      }
   //   cout<<endl;
    }
    cout<<endl;
    cout<<"Vishe: "<<endl;
    for (int i=0;i<N;i++)
    {
      for (int j=0;j<N;j++)
      {
          if (i<j)
          {
              B[q]=A[i][j];
              cout<<B[q]<<" ";
              q++;
          }
      }
    }
    q=0;
    cout<<"\nNizhe: "<<endl;
    for(int i=1;i<N;i++)
    {
        for(int j=0;j<i;j++)
        {
            q++;
            cout<<A[i][j]<<" ";
             if (B[W]>A[i][j])
             {
                 flag++;
             }
             else
             W++;
        }
    }
    cout<<endl;
    W=0;
    for(int i=1;i<N;i++)
    {
        for(int j=0;j<i;j++)
        {
            if (flag>=q)
            {
                cout<<B[W];
                W++;
            }
        }
    }
    cout<<endl<<endl;
}
И дело в том, что при некоторых значениях выдает неверные результаты
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2009, 17:45     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #4
В принципе код Ваш понятен. Если задание всетаки такое:
Цитата Сообщение от Darky Посмотреть сообщение
Вывести на экран значения тех элементов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали.
то код требует переработки.
Все дело вот здесь: (я прокоментирую что бы было понятно где рыть дальше)
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
cout<<"\nNizhe: "<<endl;
 for(int i=1;i<N;i++)
 {
 for(int j=0;j<i;j++)
 {
 q++;
 cout<<A[i][j]<<" ";
 if (B[W]>A[i][j])// В данный момент в массиве B[] записаны три числа, попорядку так (из начального массива) [0][1], [0][2], [1][2]. Допустим первое число в этом массиве будет больше любого элемента которые лежат ниже главной диагонали. Смотрим что будет.
 {
 flag++;// а будет то что flag станет равным трем, потому что W все время равно 0
 }
 else
 W++;
 }
 }
 cout<<endl;
 W=0;
 for(int i=1;i<N;i++)
 {
 for(int j=0;j<i;j++)
 {
 if (flag>=q)// теперь это условие будет выполняться
 {
 cout<<B[W];// а значит выведутся на экран все три элемента, которые лежат выше главной диагонали (без пробелов, например так 924)
 W++;
 }
 }
 }
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
27.12.2009, 18:17  [ТС]     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #5
Поколдовал, получилось вот что

V - массив элементов выше главной диагонали,
n - соответственно, элементов ниже
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    for (int i=0;i<N;i++)
    {
        for (int j=0;j<N;j++)
        {
            if (V[q]>n[j])
            {
                flag++;
            }
            else
            {
              q++;
              j=0;
              flag=0;
            }
            if (flag==3)
            {
               cout<<V[i]<<" ";
               flag=0;
            }
        }
    }
Укажите на недочеты.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2009, 18:23     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #6
Не буду я искать недочеты, просто дам совет:
Что бы выполнить это задание, целесообразней найти самый максимальный элемент снизу. Затем выводить только те элементы сверху, которые больше этого максимального снизу. Намного проще получится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2009, 18:43     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов
Еще ссылки по теме:

C++ Найти сумму элементов матрицы, лежащих выше главной диагонали
C++ Сформировать симметричную матрицу из элементов, лежащих выше главной диагонали исходной
Указатели: Найти сумму всех элементов, лежащих выше главной диагонали C++

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

Или воспользуйтесь поиском по форуму:
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
27.12.2009, 18:43  [ТС]     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #7
Не буду я искать недочеты
"ох уж эти назойливые мухи"
Что бы выполнить это задание, целесообразней найти самый максимальный элемент снизу. Затем выводить только те элементы сверху, которые больше этого максимального снизу. Намного проще получится.
А вот за это спасибо.

Добавлено через 15 минут
Все получилось.
Если у кого будет подобная проблема - ПМайте, скопирую код.
Yandex
Объявления
27.12.2009, 18:43     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов
Ответ Создать тему
Опции темы

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