Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
#1

Создать массив, составленный из суммы элементов каждой строки матрицы

29.05.2010, 18:40. Просмотров 1788. Ответов 35
Метки нет (Все метки)

Создать массив, составленный из суммы элементов каждой строки. Вывести на дисплей полученный массив. После этого из исходной матрицы создать новую следующим образом: если первый элемент каждой строки является положительным числом, необходимо заменить все ее элементы значениями первого элемента этой же строки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2010, 18:40
Ответы с готовыми решениями:

Создать массив, составленный из суммы отрицательных элементов каждого столбца матрицы
Помогите немного с программой, не пойму как реализовать... Нужно создать...

Упорядочить строки матрицы по неубыванию суммы элементов каждой строки
17.22. Дан двумерный массив. Разместить его строки так, чтобы при их просмотре...

Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы больше суммы (i-1)-й строки
Дана квадратная матрица натуральных чисел, (получаемая через rand())....

Определить, верно ли утверждение: сумма элементов каждой i-ой строки матрицы больше суммы (i-1)-ой строки
1. Дана квадратная матрица натуральных чисел, (получаемая через rand())....

Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы меньше суммы (i-1)-й строки
Дана квадратная матрица натуральных чисел, (получаемая через rand())....

35
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 18:48 #2
И в чем у вас загвоздка?
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 18:58  [ТС] #3
Помогите , как это сделать
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:00 #4
Помогите, а вы сами то пытались?
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 19:03  [ТС] #5
Да питался
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:09 #6
Алгоритм таков:

1) У нас имеется заполненый двумерный массив, размером Row на Column. Создаем одномерный массив, размером Row (в котором будут хранится сумма элементов каждой строки). Дак вот, циклом считаем сумму и записываем в соответствующую ячейку результат.
2) А тут я вообще не вижу проблем. Проверяем первый элемент строки, если больше нулю, заменяем все последующие элементы, иначе переходим к следующей строке.
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 19:21  [ТС] #7
А можно на языке С пожалуйста
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:23 #8
Я вам рассказал алгоритм решения.
Что у вас не получается?)
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 19:29  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
int mat[10][10]={           {  10, 20, 30, 40, 50, 60, 70, 80,  90, -200},
                    { -10,-20,-30,-40,-50,-60,-70,-80, -90,-100},
                    {   6,  1,  2,  3,  4,  5,  6,  7,   8,   9},
                    {-345, 66, 57, 98, 69, 13, 22, 16,  76,  89},
                    { -66, 76, 45, 32, 76,867, 67,677,  68,   9},
                    {  45, 54, 65, 56, 78, 98, 10, -9,  55,  43},
                    {  16, 13,-20,-80, 44, 55, 66, 77,  88,  99},
                    {   0, -1, -2, -3, -4, -5, -6, -7,  -8,  -9},
                    {  12, 98, 10, 20, 30,-30,-50,-80,-777, -32},
                    {  13, 14, 15, 16, 17, 18, 19, 20,  11,  12}
                };
 
 
int main (int argc, char*argv[])
{
    // цикл как написать ?
}
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:31 #10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

1)
C++
1
2
3
4
5
6
7
8
int MAS_sum[Row];
int sum=0;
 
for (int i=0; i<Row; i++) {
    sum=0;
    for (int j=0; j<Column; j++)
        sum+=MAS[i][j];
    MAS_sum[i]=sum; }
2)
C++
1
2
3
4
for (int i=0; i<Row; i++) 
    if (MAS[i][0]>0)
        for (int j=0; j<Column; j++)
        MAS[i][j]=MAS[i][0];
Отличные у вас попытки.
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:02  [ТС] #11
ничего не получается

Добавлено через 2 минуты
sum всегда равно 155
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 20:13 #12
Покажите ваш вариант программы.
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:20  [ТС] #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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
const int  Row=10,Column=10;
char mat[Row][Column]={         {  1, 1, 1, 1, 1, 1, 1, 1,  1, 1},
                    { 1,1,1,1,1,1,1,1, 1,1},
                    {   6,  1,  2,  3,  4,  5,  6,  7,   8,   9},
                    {-34, 66, 57, 98, 69, 13, 22, 16,  76,  89},
                    { -66, 76, 45, 32, 76,867, 67,677,  68,   9},
                    {  45, 54, 65, 56, 78, 98, 10, -9,  55,  43},
                    {  16, 13,-20,-80, 44, 55, 66, 77,  88,  99},
                    {   0, -1, -2, -3, -4, -5, -6, -7,  -8,  -9},
                    {  12, 98, 10, 20, 30,-30,-50,-80,-777, -32},
                    {  13, 14, 15, 16, 17, 18, 19, 20,  11,  12}
                };
 
 
int main (int argc, char*argv[])
{
    int MAS_sum[Row];
int sum=0;
 
for (int i=0; i<Row; i++) {
    sum=0;
    for (int j=0; j<Column; j++)
        sum+=mat[i][j];
    MAS_sum[i]=sum; }
printf("%d",sum);
for (int i=0; i<Row; i++) 
    if (MAS[i][0]>0)
        for (int j=0; j<Column; j++)
        mat[i][j]=mat[i][0];
}
1
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 20:38 #14
6-ая строчка.
Откуда там взялся char?
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:47  [ТС] #15
Я знаю там int но все равно
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 20:49 #16
C++
1
2
3
4
5
6
for (int i=0; i<Row; i++) {
    sum=0;
    for (int j=0; j<Column; j++)
        sum+=mat[i][j];
    MAS_sum[i]=sum; 
printf("%d",sum); }
Так правильно.
А в вашем коде печатается только сумма последней строки, т.к. у вас вывод суммы в цикл не входил.
0
kypiwindy
372 / 286 / 226
Регистрация: 29.05.2010
Сообщений: 725
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:56  [ТС] #17
Выводит число с 12 цифр
0
fasked
Эксперт С++
4981 / 2560 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 20:58 #18
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
   // size
   const int NROW = 10;
   const int NCOL = 10;
 
   // generate matrix
   int nmatrix[NROW][NCOL];
   for(int i = 0; i < NROW; ++i)
      for(int j = 0; j < NCOL; ++j)
         nmatrix[i][j] = rand() % 9;
 
   for(int i = 0; i < NROW; ++i) {
      std::copy(nmatrix[i], nmatrix[i] + NCOL, std::ostream_iterator<int>(std::cout, " "));
      std::cout << std::endl;
   }  std::cout << std::endl;
 
   // sum rows to array
   int * narray = new int [NROW];
   for(int i = 0; i < NROW; ++i) {
      narray[i] = 0;
      for(int j = 0; j < NCOL; ++j)
         narray[i] += nmatrix[i][j];
   }
 
   std::copy(narray, narray + NROW, std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl << std::endl;
 
   delete [] narray;
 
   // update matrix
   for(int i = 0; i < NROW; ++i)
      if(nmatrix[i][0] > 0)
         std::fill_n(nmatrix[i], NCOL, nmatrix[i][0]);
 
   for(int i = 0; i < NROW; ++i) {
      std::copy(nmatrix[i], nmatrix[i] + NCOL, std::ostream_iterator<int>(std::cout, " "));
      std::cout << std::endl;
   }  std::cout << std::endl;
 
   system("pause");
   return 0;
}
Код
5 8 7 4 8 1 3 0 7 2
8 2 7 6 7 5 7 8 3 0
0 6 5 0 4 7 6 5 8 5
2 0 2 0 6 4 8 1 7 3
2 6 2 3 6 2 3 7 2 1
5 5 1 6 3 7 2 3 7 4
4 2 5 6 0 1 4 5 4 4
5 0 5 6 7 5 3 6 3 2
0 5 0 1 0 5 7 5 8 1
6 3 2 1 2 1 8 3 6 8

45 53 46 33 34 43 35 42 32 40

5 5 5 5 5 5 5 5 5 5
8 8 8 8 8 8 8 8 8 8
0 6 5 0 4 7 6 5 8 5
2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2
5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
0 5 0 1 0 5 7 5 8 1
6 6 6 6 6 6 6 6 6 6
1
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 21:01 #19
fasked, за последующие вопросы по copy/fill_n и .т.п отвечаешь ты)
0
fasked
29.05.2010, 21:05     Создать массив, составленный из суммы элементов каждой строки матрицы
  #20

Не по теме:

Цитата Сообщение от neske Посмотреть сообщение
fasked, за последующие вопросы по copy/fill_n и .т.п отвечаешь ты)
подписался :D

0
29.05.2010, 21:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2010, 21:05
Привет! Вот еще темы с ответами:

Вычислить суммы элементов каждой строки матрицы
как сделать, чтобы выводило номер строки матрицы, и возле него сумму...

Вывести на экран суммы элементов каждой строки матрицы.
Задана матрица размером NxM. Вывести на экран суммы элементов каждой строки...

Вывести на экран суммы элементов каждой строки матрицы
как я понимаю, сумма элементов одной строки матрицы выводится так: ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru