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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
#1

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

27.12.2009, 17:05. Просмотров 409. Ответов 6
Метки нет (Все метки)

Дан вещественный массив А[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++
Заменить на 0 значения элементов матрицы, лежащих выше главной диагонали C++
Указатели: Найти сумму всех элементов, лежащих выше главной диагонали C++
C++ Подсчитать количество элементов матрицы, лежащих выше главной диагонали
C++ Найти сумму элементов матрицы, лежащих выше главной диагонали
Найти минимальный среди элементов матрицы лежащих выше главной диагонали C++
Верно ли, что среднее арифметическое элементов выше главной диагонали больше среднего арифметического элементов ниже главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2009, 17:19     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов #2
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++
4669 / 2495 / 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
Быдлокодер
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++
4669 / 2495 / 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     Вывести значения тех элементов матрицы, лежащих выше главной диагонали, которые больше всех элементов
Еще ссылки по теме:
Найти max среди элементов, лежащих ниже побочной, и min среди элементов, лежащих выше главной диагонали C++
C++ Найти сумму положительных элементов матрицы, которые находятся выше главной диагонали
Найти сумму элементов главной диагонали и разделить на нее значения всех элементов матрицы C++
C++ Найти минимальный среди элементов, лежащих выше главной диагонали
C++ Сформировать симметричную матрицу из элементов, лежащих выше главной диагонали исходной

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

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru