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

Двухмерный массив: вычисление сумм элементов - C++

Восстановить пароль Регистрация
 
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 16:45     Двухмерный массив: вычисление сумм элементов #1
Здравствуйте, дорогие форумчане.
Я тут озадачен и не могу понять... Правильно ли у меня решена задача или нет?
Вот, собственно, задание:
Дана целочисленная квадратная матрица A порядка n. Найти номера строк, все элементы которых чётны.
Если что, то скрин прикрепил с заданием прикрепил.
Вот мои наброски этой программы:
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
int main()
{
    float sum=0;
    srand(time(0));
    float array[10][10];
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            array[i][j]=rand()%10-3;
                cout<<setw(3)<<array[i][j];
        }
        cout<<endl;
    }   
    cout<<endl;
    cout<<endl;
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            if((i==j) & (array[i][j]<0))
            {
                cout<<"Summa v stroke "<<i<<"ravna:";
                for( j=0;j<10;j++)
                {
                    sum+=array[i];
                }
                cout<<sum<<endl; sum=array[i];
            }
        }
    }
    getch();
    return 0;
}
Но по-моему, у меня что-то не так...
Можете подсказать, что именно?
Или исправить программу...Пожалуйста. С меня много +.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 16:47  [ТС]     Двухмерный массив: вычисление сумм элементов #2
Вот скрин задания, если понадобится.
Миниатюры
Двухмерный массив: вычисление сумм элементов  
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 17:08  [ТС]     Двухмерный массив: вычисление сумм элементов #3
АП.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
03.02.2013, 17:09     Двухмерный массив: вычисление сумм элементов #4
Цитата Сообщение от sanyachel9binsk Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
if((i==j) & (array[i][j]<0))
            {
                cout<<"Summa v stroke "<<i<<"ravna:";
                for( j=0;j<10;j++)
                {
                    sum+=array[i];
                }
                cout<<sum<<endl; sum=array[i];
            }
Уважаемый, а зачем нам сумма в строке? И что это это за бредовое условие?
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 17:13  [ТС]     Двухмерный массив: вычисление сумм элементов #5
Цитата Сообщение от Пёс Посмотреть сообщение
Уважаемый, а зачем нам сумма в строке? И что это это за бредовое условие?
Ну дак сумма же ищется всех чётных. Точнее номера всех четных строк.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
if((i==j) & (array[i][j]<0))
            {
                cout<<"Summa chetnix strok "<<i<<"ravna:";
                for( j=0;j<10;j++)
                {
                    sum+=array[i];
                }
                cout<<sum<<endl; sum=array[i];
            }
Вот так тогда.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
03.02.2013, 17:17     Двухмерный массив: вычисление сумм элементов #6
Цитата Сообщение от sanyachel9binsk Посмотреть сообщение
Вот скрин задания, если понадобится.
У вас в задании написано что надо найти НОМЕРА СТРОК, в которых все элементы ЧЁТНЫЕ

Добавлено через 3 минуты
А номера строк в которых все элементы чётные - это такие i в выражении array[i][j], при которых любые j в диапазоне от 0 до 9 (это в вашем случае) при делении на 2 дают остаток 0
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 17:19  [ТС]     Двухмерный массив: вычисление сумм элементов #7
Цитата Сообщение от Пёс Посмотреть сообщение
У вас в задании написано что надо найти НОМЕРА СТРОК, в которых все элементы ЧЁТНЫЕ

Добавлено через 3 минуты
А номера строк в которых все элементы чётные - это такие i в выражении array[i][j], при которых любые j в диапазоне от 0 до 9 (это в вашем случае) при делении на 2 дают остаток 0
А можете код показать?
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
03.02.2013, 17:23     Двухмерный массив: вычисление сумм элементов #8
Но это код не элегантый и не понятный сразу. Сейчас я вам напишу хороший пример.
DEA7H
.NET ONLY
 Аватар для DEA7H
62 / 62 / 1
Регистрация: 05.10.2011
Сообщений: 495
03.02.2013, 17:24     Двухмерный массив: вычисление сумм элементов #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
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
133
134
135
136
// CF1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void goRandom (int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            x[i][j]=rand()%100-50;
        }
    }
}
 
void goHand(int n, int x[100][100])
{
    int m;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cin >> m;
            x[i][j]=m;
        }
    }
}
 
void printMatrix(int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout << "[" << x[i][j]<< "]";
        }
        cout << "\n";
    }
}
 
int search (int n, int x[100][100])
{
    int y[100], s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
            }
        }
        if (result)
        {
            y[s]=i;
        }
    }
    return y[100];
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Rus");
    int x[100][100], y[100];
    int n, sw;
    cout << "Ведите размер матрицы: \n";
    cin >> n;
    cout << "Как заполнить матрицу?\n1 - Рандом\n2 - С клавиатуры\n";
    cin >> sw;
    
    switch (sw)
    {
        case 1:
        {
            goRandom(n, x);
            break;
        }
        case 2:
        {
            goHand(n, x);
            break;
        }
    }
    cout << "Ваша матрица\n";
    printMatrix(n, x);
 
    int s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
                break;
            }
        }
        if (result)
        {
            y[s]=i+1;
            s++;
        }
    }
 
    if (s==0)
    {
        cout << "Не найдено!";
    }
    else
    {
        cout << "Найдены строки с номерами: \n";
        for (int i=0; i<s; i++)
        {
 
            cout << y[i]<<"\n";
        }
    }
    system ("pause");
    return 0;
}
+ exe-шник:
CF1.rar

Пользуйтесь...
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 17:28  [ТС]     Двухмерный массив: вычисление сумм элементов #10
Цитата Сообщение от DEA7H Посмотреть сообщение
Вот полностью готовая задача! Можно даже рандом юзать!
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
133
134
135
136
// CF1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void goRandom (int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            x[i][j]=rand()%100-50;
        }
    }
}
 
void goHand(int n, int x[100][100])
{
    int m;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cin >> m;
            x[i][j]=m;
        }
    }
}
 
void printMatrix(int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout << "[" << x[i][j]<< "]";
        }
        cout << "\n";
    }
}
 
int search (int n, int x[100][100])
{
    int y[100], s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
            }
        }
        if (result)
        {
            y[s]=i;
        }
    }
    return y[100];
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Rus");
    int x[100][100], y[100];
    int n, sw;
    cout << "Ведите размер матрицы: \n";
    cin >> n;
    cout << "Как заполнить матрицу?\n1 - Рандом\n2 - С клавиатуры\n";
    cin >> sw;
    
    switch (sw)
    {
        case 1:
        {
            goRandom(n, x);
            break;
        }
        case 2:
        {
            goHand(n, x);
            break;
        }
    }
    cout << "Ваша матрица\n";
    printMatrix(n, x);
 
    int s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
                break;
            }
        }
        if (result)
        {
            y[s]=i+1;
            s++;
        }
    }
 
    if (s==0)
    {
        cout << "Не найдено!";
    }
    else
    {
        cout << "Найдены строки с номерами: \n";
        for (int i=0; i<s; i++)
        {
 
            cout << y[i]<<"\n";
        }
    }
    system ("pause");
    return 0;
}
+ exe-шник:
Вложение 231518

Пользуйтесь...
Спасибо огромное!)
DEA7H
.NET ONLY
 Аватар для DEA7H
62 / 62 / 1
Регистрация: 05.10.2011
Сообщений: 495
03.02.2013, 17:30     Двухмерный массив: вычисление сумм элементов #11
А забыл удалить.
Вот это лишнее:
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
int search (int n, int x[100][100])
{
    int y[100], s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
            }
        }
        if (result)
        {
            y[s]=i;
        }
    }
    return y[100];
}
Просто сотрите эту функцию search.

Сам код который ищет строки вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
                break;
            }
        }
        if (result)
        {
            y[s]=i+1;
            s++;
        }
    }
Он внутри main.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
03.02.2013, 17:34     Двухмерный массив: вычисление сумм элементов #12
Вам лишь остаётся применить этот код под себя

C++
1
2
3
4
5
6
7
8
9
10
11
12
    int arr[10][10];
 
    for(int i = 0; i<10; i++) //идем по строкам
    {
        bool flag = true;     //предположим что в i-ой строке все элементы четные.
        
        for(int j = 0; j<10; j++)  // идем по каждому элементу.
            if(arr[i][j]%2 != 0)  //если элемент в строке j оказался нечётным, то значит наше предположене неверно.
                flag = false;
        if(flag)                // если предположение оказалось верно
            cout << "Строка №" << i <<" содержит только чётные элементы" << endl;
    }
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 17:34  [ТС]     Двухмерный массив: вычисление сумм элементов #13
Получится вот так?
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
133
134
135
136
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void goRandom (int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            x[i][j]=rand()%100-50;
        }
    }
}
 
void goHand(int n, int x[100][100])
{
    int m;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cin >> m;
            x[i][j]=m;
        }
    }
}
 
void printMatrix(int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout << "[" << x[i][j]<< "]";
        }
        cout << "\n";
    }
}
 
int (int n, int x[100][100])
{
    int y[100], s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
            }
        }
        if (result)
        {
            y[s]=i;
        }
    }
    return y[100];
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Rus");
    int x[100][100], y[100];
    int n, sw;
    cout << "Ведите размер матрицы: \n";
    cin >> n;
    cout << "Как заполнить матрицу?\n1 - Рандом\n2 - С клавиатуры\n";
    cin >> sw;
    
    switch (sw)
    {
        case 1:
        {
            goRandom(n, x);
            break;
        }
        case 2:
        {
            goHand(n, x);
            break;
        }
    }
    cout << "Ваша матрица\n";
    printMatrix(n, x);
 
    int s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
                break;
            }
        }
        if (result)
        {
            y[s]=i+1;
            s++;
        }
    }
 
    if (s==0)
    {
        cout << "Не найдено!";
    }
    else
    {
        cout << "Найдены строки с номерами: \n";
        for (int i=0; i<s; i++)
        {
 
            cout << y[i]<<"\n";
        }
    }
    system ("pause");
    return 0;
}
{
getch();
}
DEA7H
.NET ONLY
 Аватар для DEA7H
62 / 62 / 1
Регистрация: 05.10.2011
Сообщений: 495
03.02.2013, 17:35     Двухмерный массив: вычисление сумм элементов #14
Вот так:
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
// CF1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void goRandom (int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            x[i][j]=rand()%100-50;
        }
    }
}
 
void goHand(int n, int x[100][100])
{
    int m;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cin >> m;
            x[i][j]=m;
        }
    }
}
 
void printMatrix(int n, int x[100][100])
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout << "[" << x[i][j]<< "]";
        }
        cout << "\n";
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Rus");
    int x[100][100], y[100];
    int n, sw;
    cout << "Ведите размер матрицы: \n";
    cin >> n;
    cout << "Как заполнить матрицу?\n1 - Рандом\n2 - С клавиатуры\n";
    cin >> sw;
    
    switch (sw)
    {
        case 1:
        {
            goRandom(n, x);
            break;
        }
        case 2:
        {
            goHand(n, x);
            break;
        }
    }
    cout << "Ваша матрица\n";
    printMatrix(n, x);
 
    int s=0;
 
    bool result = false;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (x[i][j]%2==0)
            {
                result = true;
            }
            else
            {
                result = false;
                break;
            }
        }
        if (result)
        {
            y[s]=i+1;
            s++;
        }
    }
 
    if (s==0)
    {
        cout << "Не найдено!";
    }
    else
    {
        cout << "Найдены строки с номерами: \n";
        for (int i=0; i<s; i++)
        {
 
            cout << y[i]<<"\n";
        }
    }
    system ("pause");
    return 0;
}
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
03.02.2013, 17:36  [ТС]     Двухмерный массив: вычисление сумм элементов #15
Спасибо еще раз)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2013, 17:37     Двухмерный массив: вычисление сумм элементов
Еще ссылки по теме:

C++ Одномерные массивы: вычисление сумм элементов
Вычисление сумм элементов. Операторы и функции C++
Двухмерный массив: вычисление сумм элементов C++

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

Или воспользуйтесь поиском по форуму:
DEA7H
.NET ONLY
 Аватар для DEA7H
62 / 62 / 1
Регистрация: 05.10.2011
Сообщений: 495
03.02.2013, 17:37     Двухмерный массив: вычисление сумм элементов #16
Цитата Сообщение от sanyachel9binsk Посмотреть сообщение
Спасибо еще раз)
Не за что
Yandex
Объявления
03.02.2013, 17:37     Двухмерный массив: вычисление сумм элементов
Ответ Создать тему
Опции темы

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