Форум программистов, компьютерный форум CyberForum.ru

Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B - C++

Восстановить пароль Регистрация
 
fruktovaya
1 / 1 / 0
Регистрация: 31.10.2011
Сообщений: 26
12.04.2012, 09:33     Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B #1
Задана матрица Z(5,4). Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B. Вывести исходную матрицу Z и массив B.

не получается даже написать рандомное заполнение массива(((

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 "stdafx.h"
#include <iostream>
#include <math.h> 
#include <stdlib.h>
#include <time.h>
using namespace std; 
void main()
{
 
int i,j;
double a[5][4];
srand(time(NULL));
 
for(i=0; i<6; i++)
for(j=0; j<5; j++)
a[i][j]=rand()%100; 
{for(i=0; i<6; i++)
{
for(j=0; j<5; j++)
cout«a[i][j];
}
}
system ("pause");
}
вроде всё норм, но ошибка...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2012, 09:33     Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B
Посмотрите здесь:

C++ В каждой строке матрицы найти количество элементов делящихся на 3 и отсортировать эти значения
Массив: Найти среднее арифметическое из всех положительных элементов этой матрицы C++
C++ Матрицы: найти количество, сумму и среднее арифметическое отрицательных элементов в каждой строке
C++ Даны два массива. Найти среднее арифметическое элементов каждого и сравнить эти значения
C++ Матрицы. Необходимо найти значение среднего арифметического строк матрицы, исключая нулевые, в случае, если строка имеет отрицательный элемент(ы)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,694
12.04.2012, 09:40     Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B #2
На очередных итерациях в строках 14, 15, 17, 19 у Вас i достигает значения 5, а j 4. Т.е. на последней итерации происходит обращение к элементу a[5][4]. Однако у вас задан размер массива double a[5][4]. Что эта запись значит? Объясняю на примере одномерного массива:
double a[5] - это значит что массив a содержит 5 элементов с индексами от 0 до 4 .
Т.е. в вашем случае самый последний элемент массива a[4][3]
fruktovaya
1 / 1 / 0
Регистрация: 31.10.2011
Сообщений: 26
12.04.2012, 09:50  [ТС]     Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B #3
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 "stdafx.h"
#include <iostream>
#include <math.h> 
#include <stdlib.h>
#include <time.h>
using namespace std; 
void main()
{
 
int i,j;
double a[5][4];
srand(time(NULL));
 
for(i=0; i<5; i++)
for(j=0; j<4; j++)
a[i][j]=rand()%200-50; 
{for(i=0; i<5; i++)
 
for(j=0; j<4; j++)
cout<<a[i][j];
 
}
system ("pause");
}

форы исправлены, теперь проблема с некрасивым выводом... и нахождением среднего арифметического
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,694
12.04.2012, 10:43     Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B #4
По поводу форматрирования почитайте Флаги форматирования и манипуляторы
По сути вам будут необходимы: std::setw и std::endl
т.е. примерно так
C++
1
2
3
4
5
6
for(i=0; i<5; i++)
{ 
    for(j=0; j<4; j++)
        cout << setw(6) << a[i][j];
    cout << endl;
}
По среднему. Можно в отдельном цикле или в цикле генерации массива. Заводите переменную-флаг наличия отрицательного числа и переменную-сумма строки. Перед генерации очередной строки устанавливаете ее в false или в 0 (в зависимости от выбранного типа). Переменной сумма строки присваиваете 0.
После генерции очередного значения прибавляете его к сумме. Проверяет на отрицательность - если отрицательное включаете флаг.
После ввода сторки проверяете флаг. Если включен то делите сумму на количество элементов в строке. И делаете с этим числом то, что вам нужно
Yandex
Объявления
12.04.2012, 10:43     Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B
Ответ Создать тему
Опции темы

Текущее время: 18:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru