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

Исправить ошибки - C++

Восстановить пароль Регистрация
 
Un Oom
0 / 0 / 0
Регистрация: 19.06.2012
Сообщений: 20
19.06.2012, 14:22     Исправить ошибки #1
Выполнить задание 6-й лабораторной работы («Двумерные массивы»), оформив каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

Я сделала, только не получается что-то, что-то неверно, не понимаю, в чём дело. ПОМОГИТЕ, ПОЖАЛУЙСТА!

Вот мой текст, который неправильный, в котором нужно что-то исправить.
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "stdafx.h"
#include <iostream>
#include <iomanip>
void EnterNum(int &n, const char * name);//Объявление Функции ввода положительного числа
void EnterMatrix(int &n,int &m,int **a);//Объявление Функции ввода матрицы
void WorkWithMatrix(int **a,int &n,int &m);//Объявление Функции работы с матрицей
int Min(int **a,int &n,int &m);//Объявление Функции минимума
void Sum(int **a,int &n,int &m);//Объявление Функции подсчета массива суммы
void DisplayMatrix(int **a,int &n,int &m);//Объявление Функции вывода матрицы
 
 
using namespace std;//Объявление пространства имён//
void main (void)
{
    setlocale(0, "Rus");
    char h;
    cout << "Здравствуйте! " << endl
         << "Желаете начать работу, y/n ";
    cin >> h;
    while (h=='y')
    {
        int n,m;
cout << "Размерность матрицы ";
        cin >> n >> m;
        int **a = new int* [n];
        for (int i = 0; i < n; i++) 
            a [i]=new int[m];
cout << "Введите значение матрицы"<<endl;
for(int i = 0; i < n; i++){
    for(int j = 0; j < m; j++){
        cin >> a [i][j];
    }
}
    int S1=0,S=0 ;
    for(int j = 0; j<n; j++)
    {
        for(int i = 0; i<m; i++){
            if(a[i][j] > 0) S += a[i][j];
            else {
                S=0;
                break;
                }
            } 
        S1+=S;
        S=0;
        }
    cout << "Сумма элементов: " << S1 << endl;
int min=a[0][0];
for(int i=1;i<n-1;i++){
    int sum=0;
    for(int j=0;j<i+1;j++){     
        sum+=a[i][j];
    }   
    if(min>sum){min=sum;}
 
}
 
for(int i=0;i<n-1;i++){
    int sum=0;
    for(int j=1;(j+i)<n;j++){   
        sum+=a[n-j][j+i];
    }   
    if(min>sum){min=sum;}
}
      cout<<"Минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы : "<<min<<"\n";
cout << "\nЖелаете продолжить работу, y/n " << endl;
 
    Sum(a,n,m);
    
}
int Min(int **a,int &n,int &m)//Описание Функции подсчета минимума
{   
    int Min=a[0][0];
    for(int i=1;i<n-1;i++)
    {
    int sum=0;
    for(int j=0;j<i+1;j++)
    {
        sum+=a[i][j];
    }   
    if(Min>sum){Min=sum;}
    }
    for(int i=0;i<n-1;i++){
    int sum=0;
    for(int j=1;(j+i)<n;j++){   
        sum+=a[n-j][j+i];
    }   
    if(Min>sum){Min=sum;}
}
return Min;
}
void Sum(int **a,int &n,int &m)//Описание Функции подсчета массива сумм
{
    int Sum=0;
    for(int j = 0; j<n; j++)
    {
        for(int i = 0; i<m; i++)
        {
            if(a[i][j] > 0 || a[i][j]==0) Sum += a[i][j];
            else
            {
                Sum=0;
                break;
 
            }
        }
        if ( Sum==0)
        {
            cout << "В столбце "<<j+1<<": содержаться отрицательные элементы " << endl;
        }
        else 
        {
        cout << "В столбце "<<j+1<<": " << Sum << endl;
        }
        Sum = 0;
}
}
void DisplayMatrix(int **a,int &n,int &m)//Описание Функции вывода матрицы
{   
    for(int j=0;j<m;j++)
        cout << "-------";
    for(int i=0;i<n;i++) 
    { 
        cout << "-" << endl << "| ";
        for(int j=0; j<m; j++)
            cout << setw(4)<< a[i][j] << " | ";
        cout << endl;
        for(int j=0;j<m;j++)
            cout << "-------";
    }
    cout << "-";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 14:22     Исправить ошибки
Посмотрите здесь:

C++ Исправить ошибки.
C++ Исправить ошибки
C++ Исправить ошибки
Исправить ошибки C++
C++ Исправить ошибки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Root2x
 Аватар для Root2x
12 / 12 / 0
Регистрация: 21.05.2012
Сообщений: 52
19.06.2012, 17:41     Исправить ошибки #2
Для удобства чтения:
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "stdafx.h"
#include <iostream>
#include <iomanip>
void EnterNum(int &n, const char * name);//Объявление Функции ввода положительного числа
void EnterMatrix(int &n,int &m,int **a);//Объявление Функции ввода матрицы
void WorkWithMatrix(int **a,int &n,int &m);//Объявление Функции работы с матрицей
int Min(int **a,int &n,int &m);//Объявление Функции минимума
void Sum(int **a,int &n,int &m);//Объявление Функции подсчета массива суммы
void DisplayMatrix(int **a,int &n,int &m);//Объявление Функции вывода матрицы
 
 
using namespace std;//Объявление пространства имён//
void main (void)
{
setlocale(0, "Rus");
char h;
cout << "Здравствуйте! " << endl
<< "Желаете начать работу, y/n ";
cin >> h;
while (h=='y')
{
int n,m;
cout << "Размерность матрицы ";
cin >> n >> m;
int **a = new int* [n];
for (int i = 0; i < n; i++) 
a [i]=new int[m];
cout << "Введите значение матрицы"<<endl;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> a [i][j];
}
}
int S1=0,S=0 ;
for(int j = 0; j<n; j++)
{
for(int i = 0; i<m; i++){
if(a[i][j] > 0) S += a[i][j];
else {
S=0;
break;
}
} 
S1+=S;
S=0;
}
cout << "Сумма элементов: " << S1 << endl;
int min=a[0][0];
for(int i=1;i<n-1;i++){
int sum=0;
for(int j=0;j<i+1;j++){ 
sum+=a[i][j];
}   
if(min>sum){min=sum;}
 
}
 
for(int i=0;i<n-1;i++){
int sum=0;
for(int j=1;(j+i)<n;j++){   
sum+=a[n-j][j+i];
}   
if(min>sum){min=sum;}
}
cout<<"Минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы : "<<min<<"\n";
cout << "\nЖелаете продолжить работу, y/n " << endl;
 
Sum(a,n,m);
 
}
int Min(int **a,int &n,int &m)//Описание Функции подсчета минимума
{   
int Min=a[0][0];
for(int i=1;i<n-1;i++)
{
int sum=0;
for(int j=0;j<i+1;j++)
{
sum+=a[i][j];
}   
if(Min>sum){Min=sum;}
}
for(int i=0;i<n-1;i++){
int sum=0;
for(int j=1;(j+i)<n;j++){   
sum+=a[n-j][j+i];
}   
if(Min>sum){Min=sum;}
}
return Min;
}
void Sum(int **a,int &n,int &m)//Описание Функции подсчета массива сумм
{
int Sum=0;
for(int j = 0; j<n; j++)
{
for(int i = 0; i<m; i++)
{
if(a[i][j] > 0 || a[i][j]==0) Sum += a[i][j];
else
{
Sum=0;
break;
 
}
}
if ( Sum==0)
{
cout << "В столбце "<<j+1<<": содержаться отрицательные элементы " << endl;
}
else 
{
cout << "В столбце "<<j+1<<": " << Sum << endl;
}
Sum = 0;
}
}
void DisplayMatrix(int **a,int &n,int &m)//Описание Функции вывода матрицы
{   
for(int j=0;j<m;j++)
cout << "-------";
for(int i=0;i<n;i++) 
{ 
cout << "-" << endl << "| ";
for(int j=0; j<m; j++)
cout << setw(4)<< a[i][j] << " | ";
cout << endl;
for(int j=0;j<m;j++)
cout << "-------";
}
cout << "-";
}
Добавлено через 3 минуты
Напишите пожалуйста текст самого задания.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
19.06.2012, 18:00     Исправить ошибки #3
Исправить не сложно, если есть текст задания.
Un Oom
0 / 0 / 0
Регистрация: 19.06.2012
Сообщений: 20
19.06.2012, 18:14  [ТС]     Исправить ошибки #4
вот сам текст задания 6 лабораторной:

Дана целочисленная квадратная матрица. Определить:
1. сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
2. минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
19.06.2012, 18:38     Исправить ошибки #5
Цитата Сообщение от Root2x Посмотреть сообщение
C++
1
if(a[i][j] > 0 || a[i][j]==0) Sum += a[i][j];
здесь можно немного покороче написать:
C++
1
if (a[i][j] >= 0) Sum += a[i][j];
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
19.06.2012, 19:00     Исправить ошибки #6
C++
1
void main (void)
надо
C++
1
int main ()
Память не освободили.
Читать неудобно, отступы абы где.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
19.06.2012, 19:18     Исправить ошибки #7
Угловые элементы матрицы считает тоже как диагональ.
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <conio.h>
#include <ctime>
#include <cstdlib>
#include <cmath>
using namespace std;
void Input(int ** mas,int n)
{
    srand((unsigned)time(NULL));
    int min=-10,max=10;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            mas[i][j]=rand() % (max - min + 1) + min;
    }
}
void Output(int** mas,int n)
{
    cout << "Матрица A("<< n << "*" << n << "):" << endl;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            cout<<mas[i][j]<<" ";
        }
        cout<<endl;
    }
}
void Sum(int** mas,int n)
{
    int* bufmas=new int[n];
    int pos=0,count=0,sum=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(mas[j][i]>0) count++;
        }
        if(count==n) 
        {
            for(int j=0;j<n;j++)
            {
                sum+=mas[j][i];
            }
            bufmas[pos]=sum;
            pos++;
            sum=0;
            count=0;
        }
        else count=0;
    }
    cout<<"Сумма по столбцам: "<<endl;
    for(int i=0;i<pos;i++)
        cout<<bufmas[i]<<" ";
    cout<<endl;
}
void Min(int** mas,int n)
{
    int min=abs(mas[0][0]),sum=0;
    for(int i=1;i<n-1;i++)
    {
        int k=i;
        for(int j=0;j<i+1;j++)
        {
            sum+=abs(mas[k][j]);
            k--;
        }
        if(sum<min) min=sum;
        sum=0;
    }
    sum=0;
    if(min>abs(mas[n-1][n-1])) min=abs(mas[n-1][n-1]);
    for(int i=1;i<n-1;i++)
    {
        int k=i;
        for(int j=n-1;j>i-1;j--)
        {
            sum+=abs(mas[k][j]);
            k++;
        }
        if(sum<min) min=sum;
        sum=0;
    }
    cout<<endl<<"Минимум: "<<min<<endl;
}
int main()
{
    setlocale(0,"Rus");
    int n;
    cout<<"Введите размер матрицы(n): ";cin>>n;
    int **a=new int*[n];
    for(int i=0;i<n;i++)
        a[i]=new int[n];
    int* bufmas=new int[n*2+2];
    Input(a,n);
    Output(a,n);
    Sum(a,n);
    Min(a,n);
 
    for(int i=0;i<n;i++)
        delete[] a[i];
    delete[] a;
    delete[] bufmas;
 
    getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 19:41     Исправить ошибки
Еще ссылки по теме:

C++ исправить ошибки
исправить ошибки C++
C++ Исправить ошибки

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

Или воспользуйтесь поиском по форуму:
Un Oom
0 / 0 / 0
Регистрация: 19.06.2012
Сообщений: 20
19.06.2012, 19:41  [ТС]     Исправить ошибки #8
большое спасибо!
Yandex
Объявления
19.06.2012, 19:41     Исправить ошибки
Ответ Создать тему
Опции темы

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