0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 36
1

Сформировать одномерный массив X из сумм

02.05.2016, 17:46. Показов 2980. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сформировать одномерный массив X из сумм положительных элементов строк матрицы А, попутно определяя номера строк матрицы, в которых отсутствуют положительные элементы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2016, 17:46
Ответы с готовыми решениями:

Сформировать одномерный массив из сумм каждого столбца матрицы
Дана матрица C(N,N). Сформировать одномерный массив из сумм каждого столбца матрицы на языке С++

Сформировать массив из сумм элементов
Сформировать массив B из сумм элементов соответствующих столбцов матрицы A. Матрицу A, сформировать...

Найти одномерный массив В из сумм элементов каждой строки матрицы
Дана Матрица А(5.4) 1)Найти одномерный массив В из сумм элементов каждой строки матрицы 2)найти...

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

11
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
02.05.2016, 22:15 2
К слову, с прошлой благодарностью ты поторопился
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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int main(){
    int n, m;
    std::cin >> n;
    std::cin >> m;
    int mas_1 [n][m];
    int mas_2 [n];
    srand(time(0));
    for (int i = 0; i < n; i++) mas_2 [i] = 0;
    for (int i = 0; i < n; i++)
     for (int j = 0; j < m; j++) mas_1[i][j] = rand() % 25 - 15;
    for (int i = 0; i < n; i++)
     for (int j = 0; j < m; j++)
              if (mas_1[i][j] > 0) mas_2[i] += mas_1[i][j];
              else if (mas_1[i][j] < 0) std::cout << "oricatel_el_matrix [" << i << "]" << "[" << j << "]=" << mas_1 [i][j] << std::endl;
    for (int i = 0; i < n; i++)
     for (int j = 0; j < m; j++) std::cout << "matrix [" << i << "]" << "[" << j << "]=" << mas_1 [i][j] << std::endl;
    for (int i = 0; i < n; i++) std::cout << "mas_sum [" << i << "]=" << mas_2 [i] << std::endl;
    system("pause");
    return 0;
}
1
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
02.05.2016, 23:59 3
Лучший ответ Сообщение было отмечено Alexl09 как решение

Решение

Alexl09,
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()
{ 
    setlocale(LC_ALL, "Russian");
    int n,m,SIZE=0;//n-строки, m-столбцы, SIZE-размер для массива строк не имеющих положительных элементов
    cout << "Введите кол-во строк и столбцов в матрице,(например 5 6): ";
    cin >> n >> m;//ввод количества строк и столбцов
    
    int **Arr = new int *[n];//создание динамического массива, выделение памяти под строки
    for (int i = 0; i < n; i++) 
    Arr[i] = new int [m];// выделение памяти под столбцы
    
    int *X=new int[n];//объявление и выделениепамяти под массив Х
    for (int i=0;i<n;i++)
        X[i]=0;//инициализация элементов значением 0
 
    int *Count=new int[n];//объявление и выделение памяти под массив строк не имеющих положительных элеиентов
 
    cout<<"\nВведите матрицу:\n\n";
    int temp,k=0;//temp-временная переменная для определения положительных элементов, k-индексатор для Count...
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
        {
            cin>>Arr[i][j];//ввод элементов массива
            temp=0;//инициализация переменной temp значением 0, каждый раз когда переходим на новую строку
            if (Arr[i][j]>0)//условие если элемент положительный
            {
                X[i]+=Arr[i][j];//считаем сумму элементов
                temp++;//прибавляем temp
            }
        }
        if(temp==0)//если  temp=0 (а равно оно, когда нет положительных элементов в строке)
            {Count[k]=i;k++;SIZE++;}//добавляем в массив Count индекс строки, увеличиваем индекс для последующей записи, SIZE-количество выводимых элементов массива Count...
    }
 
    cout<<"\nСформированный массив Х: ";//вывод массива X
    for (int i=0;i<n;i++)
        cout<<X[i]<<" ";
 
    cout<<"\n\nНет положительных элементов в строках: ";//Вывод номеров строк, которые не имеют положительные элементы
    for (int i=0;i<SIZE;i++)
        cout<<Count[i]<<" ";
    //освобождение памяти
    for (int i = 0; i < n; i++) 
    delete []Arr[i];
    delete []Arr;
    delete []X;
    delete []Count;
 
    cout<<endl<<endl;
    system("pause");
    return 0;
}
Добавлено через 6 минут
J5, Это как вы собрались инициализировать переменные без выделения под них памяти?
Цитата Сообщение от J5 Посмотреть сообщение
int n, m;
std::cin >> n;
std::cin >> m;
int mas_1 [n][m];
int mas_2 [n];
Задание.
Цитата Сообщение от Alexl09 Посмотреть сообщение
...А, попутно определяя номера строк матрицы, в которых отсутствуют положительные элементы.
Вывести не отрицательные элементы массива 1, а номера строк массива 1 где нет положительных элементов...
1
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 36
03.05.2016, 12:13  [ТС] 4
J5, oricatel_el_matrix Это что такое?, прости за мою тупость)
0
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
03.05.2016, 12:18 5
Цитата Сообщение от -ДоМоВоЙ- Посмотреть сообщение
Это как вы собрались инициализировать переменные без выделения под них памяти?
Это же статические переменные. Странный вопрос. Выделение памяти происходит в момент объявления типа переменной.) Предлагаю вам проверить в Dev-C++.)
1
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 36
03.05.2016, 12:19  [ТС] 6
J5, А вообще можете с коментариями прописать вот эти строки? :

for (int j = 0; j < m; j++)
if (mas_1[i][j] > 0) mas_2[i] += mas_1[i][j];
else if (mas_1[i][j] < 0) std::cout << "oricatel_el_matrix [" << i << "]" << "[" << j << "]=" << mas_1 [i][j] << std::endl;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) std::cout << "matrix [" << i << "]" << "[" << j << "]=" << mas_1 [i][j] << std::endl;
for (int i = 0; i < n; i++) std::cout << "mas_sum [" << i << "]=" << mas_2 [i] << std::endl;
0
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
03.05.2016, 12:26 7
Alexl09, это вывод на экран отрицательных элементов матрицы.

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
for (int j = 0; j < m; j++)
if (mas_1[i][j] > 0) mas_2[i] += mas_1[i][j];/*двойной цикл для суммирования всех неотрицательных 
элементов строк матрицы с проверкой условия положительности и занесения результата в наш массив*/
else if (mas_1[i][j] < 0) std::cout << "oricatel_el_matrix [" << i << "]" << "[" << j << "]=" << mas_1 [i][j] << std::endl;/*если элемент отрицательный, 
то просто выводится его координаты в матрице (строка, столбец)*/
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) std::cout << "matrix [" << i << "]" << "[" << j << "]=" << mas_1 [i][j] << std::endl;/*вывод самой матрицы (ее элементов)*/
for (int i = 0; i < n; i++) std::cout << "mas_sum [" << i << "]=" << mas_2 [i] << std::endl;/*вывод массива
 с суммами элементов соответствующих строк*/
1
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 36
03.05.2016, 12:28  [ТС] 8
J5, Как я понял из вас правильный ответ дали вы оба?
0
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
03.05.2016, 12:51 9
Alexl09, Домовому нужно отдать должное. Он установил "локаль" и русский текст стабильно выводится на экран, в отличии от меня. К тому же, он использовал динамическое выделение памяти. Заполнение массива провел вручную. Я же просто заполнил массив через функцию выведения "случайных" чисел. Он сохранял номера строк матрицы, где нет положительных элементов. Я же просто вывел все отрицательные элементы. Мой косяк в том, что я не определял строк без положительных элементов (невнимательность). По идее, его код предпочтительней.)
2
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 36
03.05.2016, 12:59  [ТС] 10
J5, В таком случае я отмечу его ответ лучшим) но спасибо и вам за помощь! У меня в темах есть еще задания которые ждут своего решения ...
-ДоМоВоЙ-, Вам же огромное спасибо, надеюсь ваша программа мне поможет!
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
03.05.2016, 13:25 11
Alexl09, ниже ответ на ваш вопрос.

Добавлено через 20 минут
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 <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
int N, sum, k, p;
cout << "Введите размерность матрицы: ";
cout << "N = ";
cin >> N;
int A[N][N], X[N];
cout << "Введите матрицу:" << endl;
for (int i = 0; i < N; i++) 
{
for (int j = 0; j < N; j++) 
{
cin >> A[i][j];
}
}
p = 0;
for (int i = 0; i < N; i++) 
{
sum = k = 0;
for (int j = 0; j < N; j++) 
{
if (A[i][j] >= 0) 
{
sum += A[i][j];
}
else k++;
if (k == N) cout << "Строка без положительных элементов: " << i + 1 << endl;
}
if (sum == 0) continue;
else 
{
X[p] = sum;
p++;
}
}
cout << "Массив из сумм:" << endl;
for (int i = 0; i < p; i++)
{
cout << X[i] << endl;
}
system("pause");
return 0;
}
Добавлено через 10 минут
Alexl09, массив лучше, конечно, выводить через пробел. Немного не досмотрел.
1
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
03.05.2016, 14:23 12
Лучший ответ Сообщение было отмечено Alexl09 как решение

Решение

Alexl09, ниже ответ на ваш вопрос.

Добавлено через 40 секунд
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 <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
int N, sum, k, p;
cout << "Введите размерность матрицы: ";
cout << "N = ";
cin >> N;
int A[N][N], X[N];
cout << "Введите матрицу:" << endl;
for (int i = 0; i < N; i++) 
{
for (int j = 0; j < N; j++) 
{
cin >> A[i][j];
}
}
p = 0;
for (int i = 0; i < N; i++) 
{
sum = k = 0;
for (int j = 0; j < N; j++) 
{
if (A[i][j] >= 0) 
{
sum += A[i][j];
}
else k++;
if (k == N) cout << "Строка без положительных элементов: " << i + 1 << endl;
}
if (sum == 0) continue;
else 
{
X[p] = sum;
p++;
}
}
cout << "Массив из сумм:" << endl;
for (int i = 0; i < p; i++)
{
cout << X[i] << endl;
}
system("pause");
return 0;
}
1
03.05.2016, 14:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2016, 14:23
Помогаю со студенческими работами здесь

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

Найти новый одномерный массив В из сумм элементов каждой строки матрицы А
program lab4; var i,j,jmax:integer; a:array of real; b:array of real; k,max,s:real; begin...

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

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


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

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

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