0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
1

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

04.04.2012, 12:42. Показов 736. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код программы,который должен вычислять минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
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 Попробуйте найти и исправить ошибки
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2012, 12:42
Ответы с готовыми решениями:

Массив, квадратная матрица и квадратная матрица 2
Помогите с тремя задачами: 1. В массиве R (5x5) упорядочьте строки по возрастанию элементов...

Дана квадратная матрица А порядка n. Проверьте, является ли матрица единичной
Дана квадратная матрица А порядка n. Проверьте, является ли матрица единичной. Описать с помощью...

Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной.
Ребят,помогите решить задачу &quot;Дана квадратная матрица А порядка n. Проверить, является ли матрица...

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h...

16
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.04.2012, 14:05 2
Цитата Сообщение от Юлия17071992 Посмотреть сообщение
Попробуйте
Это типа тест чтоль такой?
0
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 14:16  [ТС] 3
Нет, дали задание на дом , написать программку, попробовала написать с помощью тех функций, которые нам давали на занятии, но надо подкорректировать, чтобы в синтаксисе ошибок не было
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
04.04.2012, 14:20 4
Я вижу ошибку в том, что функция sum вставлена посреди main между строчками 44 и 55

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

после getch
0
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 14:25  [ТС] 5
то есть после getch вставить функцию sum и снова закончить функцией getch?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.04.2012, 14:30 6
Цитата Сообщение от Юлия17071992 Посмотреть сообщение
то есть после getch вставить функцию sum и снова закончить функцией getch?
В конец файла.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
04.04.2012, 14:31 7
А что-то я не понял, почему реализация функции sum находится в теле main; а вот, например, реализации функции max нет вообще. Зачем Вы выложили сюда этот код и что именно Вас интересует?
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и не забудь про
return 0; после getch
Зачем?
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 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];
}
}
/////////////////
//ТУТ никакого гетча!!
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
04.04.2012, 14:33 9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
return 0;//нужно возвращать 0!!!
Это необязательно. Так что не надо ставить такой акцент на этом.
0
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 14:41  [ТС] 10
с 51 по 56 строку мне порекомендовал сам преподаватель, может объявила как-то не так?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.04.2012, 14:44 11
Он тебя обманул, для того чтобы ты не сдала, а сам затевает коварные планы по твою душу...
0
138 / 138 / 39
Регистрация: 26.02.2011
Сообщений: 545
04.04.2012, 14:49 12
delit
сообщение нельзя удалить чтоли свое
0
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 15:16  [ТС] 13
подскажите как переделать
0
138 / 138 / 39
Регистрация: 26.02.2011
Сообщений: 545
04.04.2012, 15:20 14
тебе именно твой переделать,или можно другой дать?у меня есть только там максимум среди диагоналей,но недолго переделать
0
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
04.04.2012, 15:25  [ТС] 15
а функции те же использованы?
0
138 / 138 / 39
Регистрация: 26.02.2011
Сообщений: 545
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;
}

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

Добавлено через 38 секунд
как исправить на минимум?
0
12.04.2012, 14:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2012, 14:00
Помогаю со студенческими работами здесь

квадратная матрица
по практике дали, не могу сделать( Для заданной квадратной матрицы порядка n поменять местами...

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

Квадратная матрица !
Дана квадратная матрица размерности n × n . Найти максимальный элемент каждой строки и поменять...

квадратная матрица.С++
1. Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru