Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 21.01.2018
Сообщений: 5

Создать новую матрицу: каждый элемент - полусумма среднеарифметических соответствующих строки и столбца исходной

24.03.2018, 00:27. Показов 2863. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По введённой матрице действительных чисел размером 5х7 вычислить новую матрицу, в которой каждый элемент вычисляется как полусумма среднеарифметических соответствующего рядка и столбца.
В голову вообще не идёт, как это всё реализовать
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2018, 00:27
Ответы с готовыми решениями:

Сформировать новую матрицу, удалив из исходной строки, имеющие хотя бы один нулевой элемент
написать программу на языки с++. задание на фотографии

Создать квадратную матрицу, сформировать новую матрицу такой же размерности путём транспонирования исходной
Создать квадратную матрицу размерности (30, 30). Заполнить её случайными целыми числами из диапазона . Сформировать новую матрицу такой же...

Дано матрицу А размером 8x7. Разделить каждый элемент столбца на элемент этого столбца...
Дано матрицу А размером 8x7. разделить каждый элемент столбца на элемент этого столбца, который находится на главной диагонали, если этот...

18
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
24.03.2018, 00:41
включаем воображение:
5*7
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *

-считаем отдельно среднеарифметическое для ряда и для столбца
-складываем полученные результаты и делим на 2
-добавляем в новую матрицу полученный элемент

для лучшей визуализации представь как-будто водишь прицелом по ячейкам, а в получившийся крест попадают ряд и столбец:

* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.03.2018, 02:53
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 <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));   
    double a[5][7], sumr[5], sumc[7];
    
    for (size_t i = 0; i < 5; i++)
    {
    for (size_t j = 0; j < 7; j++)
    {
    a[i][j]=rand()%9 + 1;
    cout <<a[i][j]<<" ";    
    sumr[i]+=a[i][j];
    }   
    cout << endl;
    }   
    
    for (size_t j = 0; j < 7; j++)    
    for (size_t i = 0; i < 5; i++)  
    sumc[j]+=a[i][j]; 
    
    cout <<"New matrix:\n";
    for (size_t i = 0; i < 5; i++) 
    {
    for (size_t j = 0; j < 7; j++)
    {
    a[i][j]=(sumr[i]/7+sumc[j]/5)/2;
    cout <<setw(7)<<a[i][j]<<" ";
    }
    cout << endl;
    }   
 
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 21.01.2018
Сообщений: 5
24.03.2018, 13:13  [ТС]
Что-то не так
Миниатюры
Создать новую матрицу: каждый элемент - полусумма среднеарифметических соответствующих строки и столбца исходной  
0
0 / 0 / 0
Регистрация: 21.01.2018
Сообщений: 5
24.03.2018, 13:18  [ТС]
Цитата Сообщение от perevertysh Посмотреть сообщение
-считаем отдельно среднеарифметическое для ряда и для столбца
-складываем полученные результаты и делим на 2
-добавляем в новую матрицу полученный элемент
Я понимаю, что нужно сделать, но реализовать это пока что никак не получилось
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
24.03.2018, 13:34
Лучший ответ Сообщение было отмечено MidlifeHeart как решение

Решение

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
int array[5][7];
//заполнение
 
int array_sums[5][7];
 
int sum=0;
 
for (int i=0; i<5; i++){
 
   for(int j=0; j<7; j++){
 
       for(int k=0; k<5; k++){
 
           sum+=array[k][j]/5;
       }
 
       for(int k=0; k<7; k++){
 
           sum+=array[i][k]/7;
       }
 
       array_sum[i][j]=sum/2;
 
       sum=0;
 
   }
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.03.2018, 14:21
MidlifeHeart, у меня вроде работает:
2 9 5 2 2 3 9
6 6 1 9 5 9 9
2 7 6 1 6 8 2
9 6 5 5 4 8 4
5 7 1 4 6 6 3
New matrix:
4.68571 5.78571 4.08571 4.38571 4.58571 5.68571 4.98571
5.61429 6.71429 5.01429 5.31429 5.51429 6.61429 5.91429
4.68571 5.78571 4.08571 4.38571 4.58571 5.68571 4.98571
5.32857 6.42857 4.72857 5.02857 5.22857 6.32857 5.62857
4.68571 5.78571 4.08571 4.38571 4.58571 5.68571 4.98571

переделаю ввод и проверю введённую Вами матрицу

Добавлено через 41 минуту
один компилятор выдал примерно то же что и Ваш, (т.е. ошибка), второй нормально (почему так пока не понятно).
5 5 6 6 2 4 3
7 7 8 5 4 1 6
7 9 2 5 1 2 7
3 5 8 4 4 1 2
7 2 7 7 8 5 6
New matrix:
5.11429 5.01429 5.31429 4.91429 4.11429 3.51429 4.61429
5.61429 5.51429 5.81429 5.41429 4.61429 4.01429 5.11429
5.25714 5.15714 5.45714 5.05714 4.25714 3.65714 4.75714
4.82857 4.72857 5.02857 4.62857 3.82857 3.22857 4.32857
5.9 5.8 6.1 5.7 4.9 4.3 5.4
1
0 / 0 / 0
Регистрация: 21.01.2018
Сообщений: 5
24.03.2018, 14:24  [ТС]
perevertysh, Ваш вариант заработал, огромное спасибо!

Добавлено через 18 секунд
Yetty, Все равно спасибо за помощь, задача решена
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
24.03.2018, 14:34
MidlifeHeart, только там второй массив и переменная sum должны быть либ double, либ float. рад помочь.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.03.2018, 14:42
perevertysh, у MidlifeHeart задача решена а у меня появилась
можете посмотреть, что в моём варианте не так ?
0
0 / 0 / 0
Регистрация: 21.01.2018
Сообщений: 5
24.03.2018, 14:47  [ТС]
Цитата Сообщение от perevertysh Посмотреть сообщение
только там второй массив и переменная sum должны быть либ double, либ float. рад помочь.
Это понятно
0
 Аватар для igorrr37
2878 / 2025 / 991
Регистрация: 21.12.2010
Сообщений: 3,779
Записей в блоге: 10
24.03.2018, 14:49
Yetty, double a[5][7], sumr[5]{ 0 }, sumc[7]{ 0 };
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.03.2018, 14:55
igorrr37, спасибо. (один компилятор нормально воспринимает, другой нет) т.е. нужно инициализировать одномерные нулями ? А двумерный не нужно ? Можете объяснить ?
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
24.03.2018, 14:56
C++
1
sumr[5], sumc[7];
компилятор считывает последовательно значения, если указать только первое, то он и будет выводить значения первой строки, а в случае выхода за пределы строки будут рандомные значения ячеек выводиться. т.е. если матрица двумерная, то необходимо указывать обе координаты.

иначе :
* * * * * * * * * * * * * <- зеленые значения за пределами выделенной под массив памяти
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *

это тоже самое, если бы навигация проводилось только по широте, или только по долготе, и Земля оказалась бы окружностью, а точнее эллипсом.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.03.2018, 15:15
Цитата Сообщение от perevertysh Посмотреть сообщение
т.е. если матрица двумерная, то необходимо указывать обе координаты.
это даже не обсуждается. только у меня не двумерная матрица а две одномерных
sumr[5] - для сумм строк, sumc[7] - для сумм столбцов

Добавлено через 9 минут
вроде уже разобрался - первое значение для суммы sumr[5] в некоторых компиляторах подаётся в виде мусора

Добавлено через 3 минуты
MidlifeHeart, проверьте если строку 9 моего кода заменить на предложенную ув.igorrr37:
C++
1
double a[5][7], sumr[5]{ 0 }, sumc[7]{ 0 };
будет работать на Вашем компиляторе ?
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
24.03.2018, 15:19
все работает, эт у меня неправильно, не учтены особенности вещественных типов.

вот исправленный:
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
#include <iostream>
 
using namespace std;
 
int main(){
 
int array[5][7];
 
 for (int i=0; i<5; i++){
     
       for(int j=0; j<7; j++){
           
         array[i][j]=rand()%10+1;
       }
 }
 
double array_sums[5][7];
double sum=0, sum1=0;
 
    for (int i=0; i<5; i++){
     
       for(int j=0; j<7; j++){
     
           for(int k=0; k<5; k++){
     
               sum+=array[k][j];
           }
                sum/=5;
                
           for(int k=0; k<7; k++){
     
               sum1+=array[i][k];
           }
                sum1/=7;
                
           array_sums[i][j]=(sum+sum1)/2;
     
           sum=0; sum1=0;
     
       }
    }
     cout.precision(9); 
    for (int i=0; i<5; i++){
     
       for(int j=0; j<7; j++){
             
           cout<<array_sums[i][j]<<" ";
       } 
        
        
        cout<<endl;
       
    }
    
return 0;
    
}
Миниатюры
Создать новую матрицу: каждый элемент - полусумма среднеарифметических соответствующих строки и столбца исходной  
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.03.2018, 15:24
perevertysh, я что-то не пойму - это Вы результат моего кода выложили без инициализации нулями ? получается на Вашем компиляторе тоже работает ?
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
24.03.2018, 15:25
Yetty, ничего не трогал, скопировал в компилятор и запустил. все работает.

правда так и не понял, зачем отдельные массивы создавать для буфера.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.03.2018, 15:47
Цитата Сообщение от perevertysh Посмотреть сообщение
Yetty, ничего не трогал, скопировал в компилятор и запустил. все работает.
дык у меня тоже работает, иначе бы и не выкладывал код. это у MidlifeHeart не работает, но должно заработать после инициализации одномерных нулями. я попросил его это сделать, но пока ответа нет. будем ждать.

Добавлено через 13 минут
Цитата Сообщение от perevertysh Посмотреть сообщение
правда так и не понял, зачем отдельные массивы создавать
я решил так (но конечно если можно без применения доп. массива будет лучше), но дело даже не в этом - по условию вроде как новый массив нужно создать, так что наверное Ваш вариант более соответствует условию задачи.

Добавлено через 4 минуты
perevertysh, только я бы добавил srand((int)time(0)); (т.к. у Вас на вход каждый раз подаётся один и тот же массив) и вывод первоначального массива (т.к. непонятно что вывел - в смысле правильно - неправильно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2018, 15:47
Помогаю со студенческими работами здесь

Создать матрицу B, каждый элемент которой равен произведению соответствующего элемента А на номер его строки
Добрый день уважаемые форумчане! Помогите пожалуйста с решением задачи в Visual Studio 2008, я не представляю как решить. Искала по...

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

Получить новую матрицу путем деления всех элементов исходной матрицы на ее наибольший по модулю элемент
2)Задан двумерный массив А. Получить новую матрицу путем деления всех элементов исходной матрицы на ее наибольший по модулю элемент.

Получить новую матрицу, путём деления всех элементов исходной матрицы на ее максимальный по модулю элемент
С матрицы А (n, n) (n &lt;= 6) получить новую матрицу В (n, n) путем деления всех элементов матрицы А на ее максимальный по модулю элемент.

Создать новую матрицу, скопировав её из исходной; заполнить 30% новой матрицы нулями в случайном порядке
Задание 3 скопировать 2-мерный массив и 30% чисел в нем заполнить нулями (в случайном порядке)


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru