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

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

Восстановить пароль Регистрация
 
Flaerok
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 22
14.06.2012, 20:41     Найти максимум среди сумм элементов диагоналей #1
Для заданной целочисленной матрицы 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;
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 20:41     Найти максимум среди сумм элементов диагоналей
Посмотрите здесь:

C++ найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали
C++ Определить максимум среди сумм элементов диагоналей
Максимум среди сумм элементов диагоналей матрицы: исправить C++
C++ максимум среди сумм элементов диагоналей, параллельной главной диагонали матрицы
Найти максимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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){
      ....
      // что-то делаем
      }
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 минуты
Помогите кто-нибудь пожалуйста!!! Для вас же это не сложно....
blits
2 / 2 / 0
Регистрация: 06.02.2012
Сообщений: 33
15.06.2012, 17:35     Найти максимум среди сумм элементов диагоналей #4
Что значит "Max sum1" - максимальная сумма?
Flaerok
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 22
15.06.2012, 21:55  [ТС]     Найти максимум среди сумм элементов диагоналей #5
ну сначала нахожу максимальную сумму элементов между диагоналями, которые выше главной. записываю на переменную maxsum1.
потом ниже главной, записываю на maxsum2.
потом сравниваю их и вывожу на экран максимальную сумму элементов диагонали.
правильно делаю или как-то по другому надо?
подскажите пожалуйста...
blits
2 / 2 / 0
Регистрация: 06.02.2012
Сообщений: 33
15.06.2012, 23:09     Найти максимум среди сумм элементов диагоналей #6
C++ (Qt)
1
2
maxsum1=-1000;
  maxsum2=-1000;
что это?!?
Flaerok
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 22
15.06.2012, 23:38  [ТС]     Найти максимум среди сумм элементов диагоналей #7
эм.... там можно и не -1000 поставить -10, -5 любое число, главное чтобы оно было меньше максимальной суммы.
это начальное значение maxsum. при сравнивании maxsum с суммой элементов смотрим если maxsum меньше суммы тогда присваиваем maxsum значение этой суммы. и таким образом maxsum у нас принимает значение максимальной суммы элементов.
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 то что?!

перепиши нормально.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 15:09     Найти максимум среди сумм элементов диагоналей
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
abulharis
Сообщений: n/a
29.01.2013, 15:09     Найти максимум среди сумм элементов диагоналей #9
Ну как? Защитили работу?
Поступил в институт, а по информатике такую курсовую задали мне...
Yandex
Объявления
29.01.2013, 15:09     Найти максимум среди сумм элементов диагоналей
Ответ Создать тему
Опции темы

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