Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
kypiwindy
364 / 278 / 108
Регистрация: 29.05.2010
Сообщений: 711
Записей в блоге: 1
Завершенные тесты: 3
#1

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

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

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

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

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

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

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

Вычислить суммы элементов каждой строки матрицы - C++
как сделать, чтобы выводило номер строки матрицы, и возле него сумму положительных елементов этой строки? #include <iostream> #include...

Вывести на экран суммы элементов каждой строки матрицы - C++
как я понимаю, сумма элементов одной строки матрицы выводится так: for(i=0;i<4;i++) {b1=0; for (j=0;j<m;j++) b1+=b; } ...

35
neske
1504 / 871 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
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
364 / 278 / 108
Регистрация: 29.05.2010
Сообщений: 711
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:56  [ТС] #17
Выводит число с 12 цифр
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 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
1504 / 871 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
29.05.2010, 21:01 #19
fasked, за последующие вопросы по copy/fill_n и .т.п отвечаешь ты)
0
fasked
29.05.2010, 21:05
  #20

Не по теме:

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

0
kypiwindy
364 / 278 / 108
Регистрация: 29.05.2010
Сообщений: 711
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:06  [ТС] #21
А через stdio можно их заменить ?
0
neske
1504 / 871 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
29.05.2010, 21:15 #22
Используем алгоритмы до конца!)
Код.
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
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <numeric>
 
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] = std::accumulate (nmatrix[i], nmatrix[i] + NCOL, 0);
 
   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;
}


Добавлено через 1 минуту
kypiwindy, а ваш последний вариант, почему не подходит? Мы же вроде бы все ошибки исправили.
2
kypiwindy
364 / 278 / 108
Регистрация: 29.05.2010
Сообщений: 711
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:18  [ТС] #23
Дурно потраченное время

Добавлено через 2 минуты
выводило вот это 65654445646-776868
0
neske
1504 / 871 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
29.05.2010, 21:27 #24
Вот, я вашу программу чуть-чуть изменил

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
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    const int  Row=10,Column=10;
    int MAS[Row][Column];
 
    for (int i=0; i<Row; i++) { // заполняем и выводим на экран.
        for (int j=0; j<Column; j++) {
            MAS[i][j]=rand()%50;
            printf ("%d  ", MAS[i][j]); }
        printf ("\n"); }
    printf ("\n");
 
    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;
        printf("%d   ",sum); }
    printf ("\n\n");
 
    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];
 
    for (int i=0; i<Row; i++) {
        for (int j=0; j<Column; j++)
            printf ("%d  ", MAS[i][j]);
        printf ("\n"); }
 
    printf ("\n");
    system ("pause");
    return 0;
}
1
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 21:35 #25
Цитата Сообщение от neske Посмотреть сообщение
C++
1
narray[i] = std::accumulate (nmatrix[i], nmatrix[i] + NCOL, 0)
;
забыл про нее, пытался вспомнить и не осилил

Цитата Сообщение от neske Посмотреть сообщение
C++
1
2
3
for(int i = 0; i < NROW; ++i)
 for(int j = 0; j < NCOL; ++j)
 nmatrix[i][j] = rand() % 9;
может сюда std::generate_n пришпилить?
0
neske
1504 / 871 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
29.05.2010, 21:41 #26
Можно-можно)
0
kypiwindy
364 / 278 / 108
Регистрация: 29.05.2010
Сообщений: 711
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:46  [ТС] #27
Та просто препод не поверит мы не учили stdlib
0
neske
1504 / 871 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
29.05.2010, 21:49 #28
kypiwindy, ну вы же человек разумный !)
Уберите, посмотрите что изменится.
Увидите что выскочит две ошибки.
-warning: unused variable 'system'
-warning: unused variable 'rand()'

Вместо рандома ставите то что вы писали, ручками когда заполняли.
А задержку экрана и вовсе убираете, если не изучали.
1
kypiwindy
364 / 278 / 108
Регистрация: 29.05.2010
Сообщений: 711
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:59  [ТС] #29
Что делать с этим
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;

Добавлено через 4 минуты
То же самое с iostream .Как то по другому можно записать ?
0
neske
1504 / 871 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
29.05.2010, 22:01 #30
Зачем вам это? Я же вам предложил вариант в посте #24 без непонятного вам?
0
29.05.2010, 22:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2010, 22:01
Привет! Вот еще темы с ответами:

Найти суммы элементов каждой строки матрицы и отсортировать - C++
Для матрицы MATR (5,6) найти суммы элементов каждой строки и записать их в одномерный массив. Полученный массив отсортировать по...

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

Вычислить и запомнить суммы и числа элементов каждой строки матрицы - C++
вычислить и запомнить суммы и числа элементов каждой строки матрицы. результаты отпечатать в виде двух столбцов A(N,M) N&lt;=20 ...

Как вычислить суммы положительных элементов каждой строки матрицы? - C++
пожалуйста,помогите написать программу. Даны целые числа n, m и матрица целых чисел A. Вычислить суммы положительных элементов каждой...


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

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

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