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

Квадратная матрица, ошибки в коде - C++

Восстановить пароль Регистрация
 
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 12:42     Квадратная матрица, ошибки в коде #1
Код программы,который должен вычислять минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
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
//---------------------------------------------------------------------------
#include <iomanip.h>
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
const int k=4 ;
void sum (int mas[k][k]);
void max(int matrix[k][k]);
int main()
{
char*buffer;
ifstream fin("input.txt", ios :: in | ios :: out) ;
if (! fin )
{
CharToOem("File not found", buffer);
cout<<buffer<<endl;
 return 1;
}
int nrow, ncol;
fin>>nrow>>ncol;
int i,j;
int **a=new int *[nrow];
for (i=0; i<nrow; i++)
a[i] = new int[ncol] ;
for (i=0; i<nrow; i++)
for (j=0; j<ncol; j++)
fin >> a[i][j];
for(i=0; i<nrow; i++)
for (j=0; j<ncol; j++)
{
cout <<setw(4)<<a[i][j] ;
cout << endl;
}
printf("\n \n Minimum sredi summ elementov diagonalej,parallelnyh pobochnoy diagonali matricy: ");
 
void sum(int mas[k][k]) 
{
int i,j,sum,n;
for (j=0;j<3;j++)
{
for (i=3;i>=j;i--)
for (k=4;k>=0;k--)
for (i=3;i<=4-k;i--)&(j=4-k; j<=3;j++)
sum+=a[i][j];
}
}
 
 
getch();
}
В данном случае матрица имеет размерность 4х4. Сама матрица находится в отдельном файле, под названием input.txt Попробуйте найти и исправить ошибки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2012, 12:42     Квадратная матрица, ошибки в коде
Посмотрите здесь:

Квадратная матрица C++
C++ Квадратная матрица
Квадратная матрица C++
C++ Квадратная матрица
Квадратная матрица C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
04.04.2012, 14:05     Квадратная матрица, ошибки в коде #2
Цитата Сообщение от Юлия17071992 Посмотреть сообщение
Попробуйте
Это типа тест чтоль такой?
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 14:16  [ТС]     Квадратная матрица, ошибки в коде #3
Нет, дали задание на дом , написать программку, попробовала написать с помощью тех функций, которые нам давали на занятии, но надо подкорректировать, чтобы в синтаксисе ошибок не было
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.04.2012, 14:20     Квадратная матрица, ошибки в коде #4
Я вижу ошибку в том, что функция sum вставлена посреди main между строчками 44 и 55

Вырежи её оттуда и вставь в конец программы.
и не забудь про
return 0;

после getch
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 14:25  [ТС]     Квадратная матрица, ошибки в коде #5
то есть после getch вставить функцию sum и снова закончить функцией getch?
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
04.04.2012, 14:30     Квадратная матрица, ошибки в коде #6
Цитата Сообщение от Юлия17071992 Посмотреть сообщение
то есть после getch вставить функцию sum и снова закончить функцией getch?
В конец файла.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.04.2012, 14:31     Квадратная матрица, ошибки в коде #7
А что-то я не понял, почему реализация функции sum находится в теле main; а вот, например, реализации функции max нет вообще. Зачем Вы выложили сюда этот код и что именно Вас интересует?
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и не забудь про
return 0; после getch
Зачем?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.04.2012, 14:31     Квадратная матрица, ошибки в коде #8
Я что непонятно объяснил?
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 <iomanip.h>
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
const int k=4 ;
void sum (int mas[k][k]);
void max(int matrix[k][k]);
int main()
{
char*buffer;
ifstream fin("input.txt", ios :: in | ios :: out) ;
if (! fin )
{
CharToOem("File not found", buffer);
cout<<buffer<<endl;
 return 1;
}
int nrow, ncol;
fin>>nrow>>ncol;
int i,j;
int **a=new int *[nrow];
for (i=0; i<nrow; i++)
a[i] = new int[ncol] ;
for (i=0; i<nrow; i++)
for (j=0; j<ncol; j++)
fin >> a[i][j];
for(i=0; i<nrow; i++)
for (j=0; j<ncol; j++)
{
cout <<setw(4)<<a[i][j] ;
cout << endl;
}
printf("\n \n Minimum sredi summ elementov diagonalej,parallelnyh pobochnoy diagonali matricy: ");
  
getch();
return 0;//нужно возвращать 0!!!
}
////конец майн
//////////////////////////////////
void sum(int mas[k][k])
{
int i,j,sum,n;
for (j=0;j<3;j++)
{
for (i=3;i>=j;i--)
for (k=4;k>=0;k--)
for (i=3;i<=4-k;i--)&(j=4-k; j<=3;j++)///это дикий бред, переделай весь sum
sum+=a[i][j];
}
}
/////////////////
//ТУТ никакого гетча!!
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.04.2012, 14:33     Квадратная матрица, ошибки в коде #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
return 0;//нужно возвращать 0!!!
Это необязательно. Так что не надо ставить такой акцент на этом.
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 14:41  [ТС]     Квадратная матрица, ошибки в коде #10
с 51 по 56 строку мне порекомендовал сам преподаватель, может объявила как-то не так?
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
04.04.2012, 14:44     Квадратная матрица, ошибки в коде #11
Он тебя обманул, для того чтобы ты не сдала, а сам затевает коварные планы по твою душу...
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
04.04.2012, 14:49     Квадратная матрица, ошибки в коде #12
delit
сообщение нельзя удалить чтоли свое
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 15:16  [ТС]     Квадратная матрица, ошибки в коде #13
подскажите как переделать
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
04.04.2012, 15:20     Квадратная матрица, ошибки в коде #14
тебе именно твой переделать,или можно другой дать?у меня есть только там максимум среди диагоналей,но недолго переделать
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 15:25  [ТС]     Квадратная матрица, ошибки в коде #15
а функции те же использованы?
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
04.04.2012, 15:35     Квадратная матрица, ошибки в коде #16
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
 
int getSumOfDiagonal(int n, int ** A)
{
int i,j, max = 0,sum = 0,index = n-1,dlina = 1;
    while(index)
    {
        for(i = 0,j = index; i < dlina; ++i, ++j)
            sum += A[i][j];
        if (max < sum)
        {
            max = sum;
        }
        sum = 0;
        for(i = 0, j = index; i < dlina; ++i, ++j)
            sum += A[j][i];
        if (max < sum)
        {
            max = sum;
        }
        sum = 0;
//////////////////////==Cпециально для подсчета на главной диагонали==///
        for ( i = 0; i < n; i++)
        {
            for ( j = 0; j < n; j++)
            {
                if (i==j)
                {
                     sum +=A[i][j];
                }
            }
       }
       if (max < sum)
       {
            max = sum;
       }
       sum = 0;
 //////////////////////////////////////////////////////////////////////////
        ++dlina;//увеличиваем размер диагонали на 1
        --index;//"стартовый" индекс index уменьшаем на 1 и так до тех пор, пока index не равен 0
    }
    printf("\nResult: %d",max);
    return sum;//вернем значение
}
 
int main()
{
          setlocale(LC_ALL,"Russian");
          int i,j,n,m;
                                while(!fflush(stdin)&&printf("Введите размерность матрицы: ")&&!scanf("%d",&n));
                                int **A = (int**)malloc(sizeof(int*) * n);
                                for(i=0; i<n;i++)
                                {
                                                A[i] = (int*)malloc(sizeof(int) * n);
                                }
                                for(i=0;i<n;i++)
                                {
                                                for(j=0;j<n;j++)
                                                {
                                                        while(!fflush(stdin)&&printf("A[%d][%d] = ",i+1,j+1)&&!scanf("%d",&A[i][j]));      
                                                }
                                }
                                printf("\n\n\tМатрица А\n\n");
                                for(i=0;i<n;i++)
                                {
                                                for(j=0;j<n;j++)
                                                {
                                                        printf("%i ",A[i][j]);     
                                                }
                                                printf("\n");
                                }
                                getSumOfDiagonal(n,A);
          getch();
          return 0;
}

ПРосто у меня было для квадратной матрицы максимум искало,смотри меняй под себя
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2012, 14:00     Квадратная матрица, ошибки в коде
Еще ссылки по теме:

C++ Квадратная матрица
C++ Квадратная матрица
Квадратная матрица C++

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

Или воспользуйтесь поиском по форуму:
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
12.04.2012, 14:00  [ТС]     Квадратная матрица, ошибки в коде #17
Подскажите мне, уважаемые форумчане, как исправить?

Добавлено через 38 секунд
как исправить на минимум?
Yandex
Объявления
12.04.2012, 14:00     Квадратная матрица, ошибки в коде
Ответ Создать тему
Опции темы

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