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

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

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

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

27.12.2009, 17:05. Просмотров 419. Ответов 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++):

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

Заменить на 0 значения элементов матрицы, лежащих выше главной диагонали - C++
Ребят помогите!!! сижу на экзамене Необходимо создать приложение в визуальной среде, которое запрашивает размерность квадратного...

Указатели: Найти сумму всех элементов, лежащих выше главной диагонали - C++
Пожалуйста помогите. В одномерном массиве из 100 элементов. Найти сумму всех элементов, лежащих выше главной диагонали. m = { 16, ...

Найти сумму элементов матрицы, лежащих выше главной диагонали - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; int RandomMas(int **a, const int n, const int...

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

Найти минимальный среди элементов матрицы лежащих выше главной диагонали - C++
Нужно создать функции которые будут обрабатываться с помощью матрицы. Матрица в функция обрабатывается как параметр. С помощью 3...

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

Добавлено через 15 минут
Все получилось.
Если у кого будет подобная проблема - ПМайте, скопирую код.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2009, 18:43
Привет! Вот еще темы с ответами:

Верно ли, что среднее арифметическое элементов выше главной диагонали больше среднего арифметического элементов ниже главной диагонали - C++
Дана квадратная матрица натуральных чисел.Определить верно ли утверждение:Cреднее арифметическое элементов выше главной диагонали больше...

Найти max среди элементов, лежащих ниже побочной, и min среди элементов, лежащих выше главной диагонали - C++
В матрице размером NхM найти максимальный среди элементов, лежащих ниже побочной диагонали, и минимальный среди элементов, лежащих выше...

Найти сумму положительных элементов матрицы, которые находятся выше главной диагонали - C++
Задан динамический двумерный массив размерности n х n, нужно найти сумму положительных элементов, которые находятся выше главной диагонали ...

Найти сумму элементов главной диагонали и разделить на нее значения всех элементов матрицы - C++
Найти сумму элементов главной диагонали и разделить на нее значения всех элементов матрицы. На экран вывести исходный массив, сумму...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.12.2009, 18:43
Ответ Создать тему
Опции темы

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