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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.74
Brejneff
6 / 6 / 1
Регистрация: 19.10.2008
Сообщений: 10
#1

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

19.10.2008, 20:19. Просмотров 4483. Ответов 11
Метки нет (Все метки)

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

Скока не парился, не получается, подскажите как правильно.
2
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2008, 20:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить максимум среди сумм элементов диагоналей матрицы (C++):

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

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

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

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

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

Максимум среди сумм элементов диагоналей, параллельной главной диагонали матрицы - C++
int i,j, max = 0,sum = 0,index = n-1,dlina = 1; while(index) { for(i = 0,j = index; i < dlina; ++i,...

11
Vourhey
Почетный модератор
6482 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.10.2008, 11:53 #2
Покажи, как парился.
1
Sergei
1435 / 702 / 41
Регистрация: 22.04.2008
Сообщений: 1,608
20.10.2008, 11:56 #3
Да покажи код а мы поможем если что либо задай конкретный вопрос что в этой задачи не понятно как найти диагонали или что- то другое
1
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
20.10.2008, 15:50 #4
Цитата Сообщение от Vourhey Посмотреть сообщение
Покажи, как парился.
Цитата Сообщение от Sergei Посмотреть сообщение
Да покажи код а мы поможем если что либо задай конкретный вопрос что в этой задачи не понятно как найти диагонали или что- то другое
Люди дело говорят...
А если кода нету, то поисчи по форуме, подобные темы были...
1
Brejneff
6 / 6 / 1
Регистрация: 19.10.2008
Сообщений: 10
20.10.2008, 21:25  [ТС] #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Всё, уже разобрался)

PHP
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
    max = INT_MIN;
    
    for(t = 1; t < Len; ++t)
    {
        sum1 = 0;
        i1 = t;
        j1 = 0;
        
        sum2 = 0;
        i2 = 0;
        j2 = t;
        
        while(i1 < Len && j2 < Len)
        {
            sum1 += matrix[i1][j1];
            sum2 += matrix[i2][j2];
            
            ++i1;
            ++j1;    
            ++i2;
            ++j2;            
        }
        maxsum = sum1 > sum2 ? sum1 : sum2;
        max = maxsum > max ? maxsum : max;
    }
    cout<<max<<endl;
вот так получица)
1
a-Nutka
3 / 3 / 1
Регистрация: 20.01.2009
Сообщений: 6
26.04.2009, 16:39 #6
проблема с той же самой задачей на С... честно говоря, не поняла, как решает её Brejneff. поэтому привожу свой пример. нахождение максимальной суммы в виде функции. пока что пыталась выбрать максимум среди сумм выше главной диагонали, но первую сумму считает правильно, и выводит только её. не пойму, в чем ошибка. либо не правильно идёт сравнение сумм, либо не так переходит к следующей диагонали...

очень прошу посмотреть мой вариант и может как-то откорректировать...

нахождение максимальной суммы (Smax) среди элементов диагоналей выше главной:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int summa(int *ar,int n)
  {
  int m,j,i;
  int S=0, Smax=-100;
  m=n;
  for (j=1;j<n;j++)
    {
    for (i=0; i<m-1; i++)
      {
      S=S+(*(ar+i*n+j));
      j++;
      }
    m--;
    if (S>Smax) {Smax=S;}
    }
  return Smax;
}
если надо, могу выложить всю программу для проверки
1
Вера
Сообщений: n/a
06.06.2009, 23:28 #7
A-nutka! очень прошу выложить весь текст программы
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
07.06.2009, 00:10 #8
a-Nutka, Вера: Девочки, мне бы Ваши проблемы...
1
a-Nutka
3 / 3 / 1
Регистрация: 20.01.2009
Сообщений: 6
07.06.2009, 14:02 #9
Вера, вот текст. в комментариях автозаполнение, а так ввод элементов вручную. прога рабочая и зачтённая)))
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
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
 
int summa(int *ar,int n)
  {
  int m,j,i,k;
  int S=0, Smax=-10000;
  m=n;
  for (j=1;j<n;j++)
    {
    k=0;
    S=0;
    for (i=0; i<m-1; i++)
      {
      S=S+(*(ar+i*n+j+k));
      k++;
      }
    m--;
    if (S>Smax) {Smax=S;}
    }
  m=n;
  for (i=1;i<n;i++)
    {
    k=0;
    S=0;
    for (j=0; j<m-1; j++)
      {
      S=S+(*(ar+(i+k)*n+j));
      k++;
      }
    m--;
    if (S>Smax) {Smax=S;}
    }
  return Smax;
}
 
void main()
  {
  int i,j,n,Smax,k;  //,p=-3,b=7;
  int Pr[100];
  int *a;
  clrscr();
//  randomize();
  printf("vvedite razmernost matrici: ");
  scanf("%d",&n);
  printf("\n ");
  a=(int*)malloc (n*n*sizeof(int));
  for (i=0;i<n;i++)
    {
    for (j=0;j<n;j++)
      {
    //  *(a+i*n+j)=random(b-p+1)+p;
      //     printf("%d\t", *(a+i*n+j));
      printf("a[%d,%d]=",i+1,j+1);
      scanf("%d",(a+i*n+j));
      }
    }
  printf("\n ");
  for(i=0;i<n;i++)


Search, ну, какой курс, такие и проблемы))) мы ж маленькие ещё)))
2
Вера
Сообщений: n/a
07.06.2009, 15:37 #10
Спасибо большое! Но я уже сделала)), поэтому в вашем коде разбираться не стала...могу сказать одно: задача с подвохом и не такая уж простая как кажется, поэтому все что напишу ниже думаю понадобится кому нибудь)))...
Итак, возьмем например квадратную матрицу 5х5 (хотя легко сделать ввод размера матрицы самим пользователем)...дак вот матрица 5х5: делала в C++Builder в StringGrid'e, поэтому индексы матрицы именно такие:
00 10 20 30 40
01 11 21 31 41
02 12 22 32 42
03 13 23 33 43
04 14 24 34 44
и по заданию по сути необходимо сложить вот эти элементы: 10 21 32 43, затем 20 31 42, затем 30 41.... и соответсвенно параллельные диагонали ниже главной: 01 12 23 34, затем 02, 13, 24, затем 03, 14
Фишка в том , что угловые элементы (в данном случае 40 и 04) диагональю не являются ... Заметила, что у половины вариантов, предложенных на различных форумах это не учтено!
Для удобства я разделила решение задачи на две части: сначала вычисляем суммы элементов каждой паралельной диагонали, находящиеся выше главной! Затем работаемс "нижней" частью! В результате, алгоритм получается следующий (приведу тока часть алгоритма, который работает с верхними паралелльными диагоналями матрицы):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (i=1; i<=n-2; i++)
    {j=0;
     int i1=i;
     sum1=0;
      while (i1<=n-1)
       {
        sum1=sum1+mas[i1][j];
        j++;
        i1++;
       }
     //здесь использую билдеровский компонент....но можно и по другому хранить значения
      Memo2->Lines->Add(sum1); 
      if (sum1>max1) max1=sum1;
    }
таким же образом ищется и максимальный элемент из сумм элементов диагоналей параллельных главной! И в конце у же сравниваются 2 значения....
вот)))
Em$
0 / 0 / 0
Регистрация: 24.04.2009
Сообщений: 41
07.06.2009, 20:10 #11
Здравствуйте...я наверное тупой......помогите решить задачу....
Транспонировать матрцу,т.е заменить строки столбцами....матрицу ввести с клавиатуры.
0
a-Nutka
3 / 3 / 1
Регистрация: 20.01.2009
Сообщений: 6
07.06.2009, 20:30 #12
да, уж, непростая) я над ней два дня безвылазно просидела)
кстати, я считала угловые элементы диагоналями) нам этого в задании не уточняли, решила сделать так, но в решении разницы особо никакой)))
в твоём коде тоже нет особого желания разбираться) тем более, не знаю, что такое билдеровский компонент, мы на С++ не пишем)
тебе тоже спасибо ещё и за пояснения, думаю, кому-нибудь это ещё пригодиться)))

Добавлено через 1 минуту 2 секунды
ёлки... не тому "спасибо" сказала...)))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2009, 20:30
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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