Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Flaerok
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 22
#1

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

14.06.2012, 20:41. Просмотров 983. Ответов 8
Метки нет (Все метки)

Для заданной целочисленной матрицы nXn (где n - константа) найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Ребят, помогите пожалуйста!!! Моя программа ищет максимум только среди диагоналей, которые выше главной диагонали. Как изменить программу чтобы находил максимум среди сумм диагоналей, которые ниже главной и выше?
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{    
   const int n = 3;
   int i,j,sum=0,vib=0,maxsum=0;   
        int a[n][n],s[2*n];
           printf ("Kak vvodit' elementi?\n0 - random\n1 - s klaviaturi\n");
           scanf ("%i", &vib);
           printf ("\nMi vibrali: %i\n",vib);
        srand(time(0));
        switch (vib)
        {
        case 0://random
                for (i=0; i<n; i++)
                        for (j=0; j<n; j++) 
                                a[i][j] = rand()%20;
                printf("\n");
                break;
        case 1:// sklavi
                for (i=0; i<n; i++)
                        for (j=0; j<n; j++)
                        {
                                printf ("a[%i][%i]= ", i+1, j+1);
                                scanf ("%i", &a[i][j]);
                        }
        }
  printf("Nasha matrica: \n");
  for (i=0; i<n; i++)
        {
                for (j=0; j<n; j++)
                {
                        printf ("%i ", a[i][j]);
                }
                printf ("\n");
        }
printf("\n");
printf ("Cymmi elementov diagonaley matrici, paralel'nie glavnoy: \n");
 for (j=0;j<(2*n);j++) s[j]=0;
  for (i=0;i<n;i++)
  {
      for (j=0;j+i<n;j++)
      {
          s[j]+=a[i][i+j];
          s[n+j]+=a[i+j][i]; 
      }      
  }
  for (j=0;j<n;j++) printf("%d\n",s[j]);
  for (j=n+1;j<(2*n);j++) printf("%d\n",s[j]);
  maxsum=-1000;
  for (j=1;j<n;j++)
      if (maxsum<s[j]) 
          maxsum=s[j];
  printf("\n");
  printf("Max sum = %d\n",maxsum);
  _getch();
  return 0;
  }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 20:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти максимум среди сумм элементов диагоналей (C++):

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

Найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали - C++
Никак мозг не хочет повернуться, что бы понять как делается этот цикл for. У нас есть матрица (к примеру 5*5), надо найти максимум среди...

Найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы - C++
Задана целочисленная квадратная матрица A(N x N). Найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

В матрице найти максимум среди сумм элементов диагоналей, параллельных главной диагонали - C++
Здравствуйте! Помогите пожалуйста, вот задачка: 1) Найти максимальную сумму среди сумм элементов диагоналей, параллельных главной...

Найти максимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace...

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

8
blits
2 / 2 / 0
Регистрация: 06.02.2012
Сообщений: 33
14.06.2012, 22:21 #2
C++ (Qt)
1
2
3
4
5
6
for(int i=0; i<n; i++)
  for(int j=0; j<n; j++)
      if(j>i){
      ....
      // что-то делаем. это если выше главной диагонали
      }
соответственно, если ниже главной диагонали
C++ (Qt)
1
2
3
4
5
6
for(int i=0; i<n; i++)
  for(int j=0; j<n; j++)
      if(j<i){
      ....
      // что-то делаем
      }
0
Flaerok
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 22
15.06.2012, 17:33  [ТС] #3
В том то и дело, что так не получается...
Помогите пожалуйста, люди((

Добавлено через 11 минут
Если я тебя правильно понял то получается вот так:
Диагонали которые выше главной он правильно считает, а второе условие, когда ниже главной, он только главную диагональ просматривает.... Помогите пожалуйста!!!Ведь ошибка то на самом деле как обычно и не такая сложная, просто который день с ней мучаюсь никак найти не могу((
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{    
   const int n = 3;
   int i,j,sum=0,vib=0,maxsum1=0,maxsum2=0;   
        int a[n][n],s[2*n];
           printf ("Kak vvodit' elementi?\n0 - random\n1 - s klaviaturi\n");
           scanf ("%i", &vib);
           printf ("\nMi vibrali: %i\n",vib);
        srand(time(0));
        switch (vib)
        {
        case 0://random
                for (i=0; i<n; i++)
                        for (j=0; j<n; j++) 
                                a[i][j] = rand()%20;
                printf("\n");
                break;
        case 1:// sklavi
                for (i=0; i<n; i++)
                        for (j=0; j<n; j++)
                        {
                                printf ("a[%i][%i]= ", i+1, j+1);
                                scanf ("%i", &a[i][j]);
                        }
        }
  printf("Nasha matrica: \n");
  for (i=0; i<n; i++)
        {
                for (j=0; j<n; j++)
                {
                        printf ("%i ", a[i][j]);
                }
                printf ("\n");
        }
printf("\n");
printf ("Cymmi elementov diagonaley matrici, paralel'nie glavnoy: \n");
 for (j=0;j<(2*n);j++) s[j]=0;
  for (i=0;i<n;i++)
  {
      for (j=0;j+i<n;j++)
      {
          s[j]+=a[i][i+j];
          s[n+j]+=a[i+j][i]; 
      }      
  }
  for (j=0;j<n;j++) printf("%d\n",s[j]);
  for (j=n+1;j<(2*n);j++) printf("%d\n",s[j]);
  maxsum1=-1000;
  maxsum2=-1000;
  for(int i=0; i<n; i++)
  for(int j=0; j<n; j++)
      if(j>i)
      {
           if (maxsum1<s[j]) 
          maxsum1=s[j];
      }
  for(int i=0; i<n; i++)
  for(int j=0; j<n; j++)
      if(j<i)
      {
           if (maxsum2<s[j]) 
          maxsum2=s[j];
      }
      if (maxsum1>maxsum2)
           printf("\n");
           printf("Max sum1 = %d\n",maxsum1);
      if (maxsum1<maxsum2)
           printf("Max sum2 = %d\n",maxsum2);printf("\n");         
      if (maxsum1==maxsum2)
           printf("\n");
           printf("Max sum = %d\n",maxsum1);
  _getch();
  return 0;
  }
Добавлено через 2 часа 53 минуты
Помогите кто-нибудь пожалуйста!!! Для вас же это не сложно....
0
blits
2 / 2 / 0
Регистрация: 06.02.2012
Сообщений: 33
15.06.2012, 17:35 #4
Что значит "Max sum1" - максимальная сумма?
0
Flaerok
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 22
15.06.2012, 21:55  [ТС] #5
ну сначала нахожу максимальную сумму элементов между диагоналями, которые выше главной. записываю на переменную maxsum1.
потом ниже главной, записываю на maxsum2.
потом сравниваю их и вывожу на экран максимальную сумму элементов диагонали.
правильно делаю или как-то по другому надо?
подскажите пожалуйста...
0
blits
2 / 2 / 0
Регистрация: 06.02.2012
Сообщений: 33
15.06.2012, 23:09 #6
C++ (Qt)
1
2
maxsum1=-1000;
  maxsum2=-1000;
что это?!?
0
Flaerok
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 22
15.06.2012, 23:38  [ТС] #7
эм.... там можно и не -1000 поставить -10, -5 любое число, главное чтобы оно было меньше максимальной суммы.
это начальное значение maxsum. при сравнивании maxsum с суммой элементов смотрим если maxsum меньше суммы тогда присваиваем maxsum значение этой суммы. и таким образом maxsum у нас принимает значение максимальной суммы элементов.
0
blits
2 / 2 / 0
Регистрация: 06.02.2012
Сообщений: 33
16.06.2012, 00:37 #8
Цитата Сообщение от Flaerok Посмотреть сообщение
там можно и не -1000 поставить -10, -5 любое число, главное чтобы оно было меньше максимальной суммы.
это начальное значение maxsum.
говнакод короче. что за s[j]?! нафиг его вводить?! а в этом условии
C++ (Qt)
1
 if (maxsum1<s[j])
s[j] = -50 000 то что?!

перепиши нормально.
1
abulharis
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 1
29.01.2013, 15:09 #9
Ну как? Защитили работу?
Поступил в институт, а по информатике такую курсовую задали мне...
0
29.01.2013, 15:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 15:09
Привет! Вот еще темы с ответами:

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

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

Максимум среди сумм элементов диагоналей матрицы: исправить - C++
Задача, выводит максимум среди сумм элементов диагоналей матрицы. Помогите, пожалуйста исправить что бы нормально выводилась матрица,...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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