Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 15.05.2010, 12:45   #1
<<Katushka>>
Пользователь
 
Регистрация: 10.05.2010
Сообщений: 12
По умолчанию Дана целочисленная квадратная матрица

Найти минимальную сумму среди сумм элементов главной и побочной диагоналей матрицы.

Вот код, но вместо суммы выводит какой-то бред, решила посмотреть чему равны промежуточные значения и там тоже бред, хотя алгоритм вроде правильный. Посмотрите пожалуйста и исправьте

PHP код:
#include<stdio.h>
#include<math.h>
int main(){
    
int i,j,n,r,s1,s2,mins,a[20][20];
    
printf("\nn? "); 
    
scanf("%i",&n);
    for(
i=0;i<n;i++)
        for(
j=0;j<n;j++){
            
printf("a[%i][%i]? ",i+1,j+1);
            
scanf("%i",&r);
            
a[i][j]=r;
        }
        
s1=0;
        for(
i=0;i<n;i++)
            for(
j=0;j<n;j++) {
                if(
i==j
                    
s1=s1+r;
                }
            
s2=0;
            for(
i=0;i<n;i++)
                for(
j=0;j<n;j++) {
                    if((
i+j)==(n+1)) {
                        
s2=s2+r;
                    }
                }
                if(
s1<s2
                    
s1=mins;
                    else 
                        
s2=mins;
                    
                
                
printf("\nmins=%8i\n",mins); 
                
getchar();
                
getchar();

<<Katushka>> вне форума   Ответить с цитированием
Старый 15.05.2010, 12:53   #2
Aronax
Пользователь
 
Регистрация: 03.07.2009
Сообщений: 45
По умолчанию

что так и не работает? ну щас попробую сам
Aronax вне форума   Ответить с цитированием
Старый 15.05.2010, 13:06   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Во-первых, прибавлять надо не r (это же всего лишь последнее считанное число, а не элемент матрицы), а a[i][j].
Во-вторых, зачем так сложно:
Код:
        for(i=0;i<n;i++) 
            for(j=0;j<n;j++) { 
                if(i==j)  
                    s1=s1+a[i][j];
когда можно просто:
Код:
for (int i = 0; i < n; i++)
   s1+=a[i][i];
Аналогично со второй суммой (только вместо a[i][i] - a[i][n - 1 - i])
В-третьих, не забывайте инициализировать в начале s1 и s2 нулями!
В-четвертых, если вам нужно вывести минимальную из двух сумм, то надо присваивать не s1 или s2 значение некой непонятной mins, а наоборот:
Код:
if (s1 < s2)
 mins = s1;
else
 mins = s2;
Или и вовсе в одну строчку (смысл этого выражения тождественен вышеприведенному):
Код:
mins = (s1 < s2)? s1 : s2;
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума   Ответить с цитированием
Старый 15.05.2010, 13:12   #4
miftayka
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 17
По умолчанию

в цикле для побочной диагонали: проверка должна быть (i+j==n-1) а не +1. Индексы-то от 0 до n-1 в С++. И в нахождении минимума надо не сумме присваивать минимум, а минимуме сумму.
miftayka вне форума   Ответить с цитированием
Старый 16.05.2010, 11:30   #5
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
По умолчанию

не проще ли вычислить суммы главной и побочной диагонали и сравнить их ?
coll3ctor вне форума   Ответить с цитированием
Старый 16.05.2010, 11:44   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
не проще ли вычислить суммы главной и побочной диагонали и сравнить их ?
Не проще ли - чем ЧТО???
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дана целочисленная прямоугольная матрица Jet-Tea Общие вопросы C/C++ 9 02.06.2010 16:41
Дана квадратная матрица 6х6. ЮРИЙ ЮРЫЧ Помощь студентам 0 23.12.2009 20:44
Дана целочисленная прямоугольная матрица... gregorio Помощь студентам 1 22.04.2009 20:27
Дана целочисленная квадратная матрица... kitty Помощь студентам 1 05.12.2007 08:40


20:26.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.