Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/75: Рейтинг темы: голосов - 75, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
1

сумма элементов матрицы

04.09.2013, 15:25. Показов 14607. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С клавиатуры вводится размерность целочисленной матрицы,затем сама матрица.Найти сумму всех элементов.Разрешается при этом использовать только один оператор цикла(кроме цикла ввода матрицы).
Вот сделала эту задачу,правильно ли?или нельзя было еще одно For использовать?
Код:

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
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
int i,j,N,M,S,a[20][20];
int *A;
cout<<"Введите количество строк,N="; 
cin>>N;
cout<<"Введите количество столбцов,M="; 
cin>>M;
A=new int [N*M];
cout<<"Составьте матрицу А\n";
//цикл по переменной i,в которой перебираем строки
for (i=0; i<N; i++)
//цикл по переменной j, в котором перебираем элементы внутри строки
for (j=0; j<M; j++)
cin>>a[i][j]; //ввод элемента матрицы
cout<<"матрица А:\n";
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
cout<<a[i][j]<<"\t"; //вывод элемента матрицы
cout<<endl; //переход на новую строку
}
for (S=i=0; i<N; i++)
for (j=0; j<M; j++)
S+=a[i][j];
cout<<"сумма равна,S="<<S<<endl;
system("pause");
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2013, 15:25
Ответы с готовыми решениями:

Определить длину вектора Х, если х1 - сумма элементов матрицы A, х2 - сумма элементов матрицы B, х3 - сумма С
Заданны три квадратные матрицы A, B, C. Определить длину вектора Х (х1, х2, х3), если х1 - сумма...

Максимальная сумма элементов строки / минимальная сумма элементов столбца матрицы
дан двумерный массив. Найти: а)максимальную сумму элементов строки б) минимальную сумму элементов...

Удалить из матрицы A все строки, сумма элементов которых четна, а из матрицы B – строки, сумма элементов которых нечетна(функции)
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) –...

Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы совпадает с суммой элементов n- го строки
Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы...

18
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 15:43 2
с одним значит с одним)

C++
1
2
3
4
5
6
7
8
9
10
11
12
w - ширина матрицы
h - высота
 
int x,y;
for(int i = 0 ; i < w*h ; ++i)
{
 y = i / w;
 x = i - y * w;
 
S+= Matrix[x][y];
 
}
Добавлено через 8 минут
Цитата Сообщение от fkty Посмотреть сообщение
A=new int [N*M];
вот это у вас зачем, когда вы используете матриицу a[20][20]
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 15:45  [ТС] 3
а можете объяснить как так получается?

Добавлено через 1 минуту
значит a[20][20] вообще не надо?
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 15:50 4
ну вот например у нас матрица 5 на 5, заметим, что нумерация начинается с [0][0]
i, например = 6 , тогда строка будет равна (y = i / w = 6 / 5 = 1 (с учетом сокращения из за int) )
столбец (x = i - y * w = 6 - 1*5 = 1) и попали на a[1][1]. Короче говоря i бегает слева направо от верхней строки к нижней

Добавлено через 1 минуту
Цитата Сообщение от fkty Посмотреть сообщение
значит a[20][20] вообще не надо?
ну в задании написано сделать матрицу, значит именно a и нужно использовать, только размер у вас 20 на 20 ,а нужно как я понял задавать его с клавиатуры
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 15:54  [ТС] 5
но если это убрать,то уже не будет работать
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 15:56 6
Цитата Сообщение от fkty Посмотреть сообщение
int i,j,N,M,S,a[20][20];
int *A;
cout<<"Введите количество строк,N=";
cin>>N;
cout<<"Введите количество столбцов,M=";
cin>>M;
A=new int [N*M];
вот у вас тут создается массив A размером [N * M] а дальше вы продолжаете использовать a вместо нового созданного "A"
нужно что то одно тогда уж или "a" переделывать или использовать массив(не матрицу, хотя в принципе рассматривать как матрицу абстрактно можно) "A"
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 16:02  [ТС] 7
cin>>A[i][j];опять что то не так?программа не работает
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 16:05 8
Цитата Сообщение от fkty Посмотреть сообщение
cin>>A[i][j];
если использовать с двойными скобками, то и создавать нужно 2-х-мерный массив

int **A;
A = new int*[M]
for(int i = 0 ; i < M ; ++i) A[i] = new int[N];
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 16:08  [ТС] 9
а как по другому сделать,что бы A=new int [N*M];сохранилось?
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 16:18 10
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
for (i=0; i<N * M; i++)
{
cin>>A[i]; //ввод элемента матрицы
}
 
cout<<"матрица А:\n";
 
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
 
cout<< A[i * M + j]<<"\t"; //вывод элемента матрицы
 
}
cout<<endl; //переход на новую строку
}
 
int S = 0;
 
for(int i = 0 ; i < M*N ; ++i)
{
 
S+= A[i];
 
}
 
cout<<"сумма равна,S="<<S<<endl;
system("pause");
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 16:33  [ТС] 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
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
int i,j,N,M,S;
int *A;
cout<<"N="; 
cin>>N;
cout<<"M="; 
cin>>M;
A=new int [N*M];
cout<<"Составьте матрицу А\n";
 
for (i=0; i<N*M; i++)
 
for (j=0; j<M*N; j++)
{
cin>>A[i]; 
}
cout<<"матрица А:\n";
for (i=0; i<N; i++)
{
 
for (j=0; j<M; j++)
{
cout<<A[i*M+j]<<"\t"; 
cout<<endl; 
}}
for (S=i=0; i<N*M; ++i)
{
S+=A[i];
}
cout<<"сумма равна,S="<<S<<endl;
system("pause");
return 0;
}
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 16:35 12
Цитата Сообщение от fkty Посмотреть сообщение
for (i=0; i<N*M; i++)
for (j=0; j<M*N; j++)
верхняя лишняя (~15 Строка)
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 16:41  [ТС] 13
теперь выводит матрицу в строчку
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 16:55 14
вместо
Цитата Сообщение от fkty Посмотреть сообщение
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
cout<<A[i*M+j]<<"\t";
cout<<endl;
}}
так

C++
1
2
3
4
5
6
7
8
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
cout<<A[i*M+j]<<"\t"; 
}
cout<<endl;
 }
1
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 17:02  [ТС] 15
cout<<A[i*M+j]<<"\t";как это объяснить?как теперь накопление суммы происходит?
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 17:18 16
Цитата Сообщение от fkty Посмотреть сообщение
for (S=i=0; i<N*M; ++i)
{
S+=A[i];
}
накопление суммы вот тут
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 17:21  [ТС] 17
то есть здесь A[i] индекс i уже не означает номер строки?а что здесь такое считает cout<<A[i*M+j]<<"\t";?
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
04.09.2013, 17:34 18
Цитата Сообщение от fkty Посмотреть сообщение
то есть здесь A[i] индекс i уже не означает номер строки?
ага, здесь мы прогоняем цикл для всей матрицы (до i = M*N), матрицу A[N][M] мы вытянули в строку(массив) A[N*M] для работы с 1 циклом, это строка как бы составлена из маленьких строк матрицы в одну большую, по этому пройдясь от i = 0 до i = M*N мы пробегаем по всей матрице

C++
1
а что здесь такое считает cout<<A[i*M+j]<<"\t";?
а тут у нас два цикла "i" по высоте "j" - по ширине
i*M+j - где М-ширина матрицы - формула для вычисления индекса в массиве A[M*N] как если бы он был бы матрицей A[M][N]
1
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
04.09.2013, 17:41  [ТС] 19
спасибо большое
0
04.09.2013, 17:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2013, 17:41
Помогаю со студенческими работами здесь

Вычислить F=(Sn+So)/(Sn-So), где Sn - сумма положительных элементов в нечетных строках матрицы Y(9x12), а So - сумма отр
Вычислить F=(Sn+So)/(Sn-So), где Sn - сумма положительных элементов в нечетных строках матрицы...

Выполнить сортировку элементов в той строке матрицы сумма элементов в которой максимальная
как я могу писать эту задачу. Задана матрица целых чисел. Выполнить сортировку элементоь в той...

Для матрицы найти такие k и n, что сумма элементов k-столбца совпадает с суммой элементов n-й строки
Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k-столбца матрицы совпадает...

Если сумма индексов каких-либо двух элементов матрицы, расположенных ниже главной диагонали, равна минимальному элементу матрицы, то..
Дана квадратная матрица А порядка N, состоящая из натуральных чисел. Если сумма индексов каких-либо...


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

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