Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2022, 20:55   #1
Boyets
Новичок
Джуниор
 
Регистрация: 06.12.2022
Сообщений: 2
По умолчанию Одномерный массив СИ++(Visual)

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

Код:
#include <iostream>
#include <iomanip>
#include "time.h"
#include <cstdlib>
using namespace std;

/*Тема 4*/

int main()
{
	setlocale(LC_ALL, "Russian");

	int n = 20;
	double mas[20];
	int i;
	int pos =-1;
	
	cout << "Заполнить массив автоматически? 1 - да, 0 - нет" << endl;
	cin >> i;
	if (i == 1)
	{
		srand(time(0));
		n = rand() % 20 + 1;
		for (int i = 0; i < n; i++)
		{
			mas[i] = rand() % 20;
		}
	}
	else if (i == 0)
	{
		cout << "Введите количество элементов массива (n<=20)= ";
		cin >> n;
		cout << "Введите элементы массива" << endl;

		for (i = 0; i < n; i++)
		{
			cout << "mas[" << i + 1 << "] = ";
			cin >> mas[i];
		}
	}
	else
	{
		cout << "Введено неверно" << endl;
		return 1;
	}
	system("cls");
	cout << "Исходный массив" << endl;
	for (i = 0; i < n; i++)
		cout << setw(5) << mas[i];
	cout << endl;

	for (int i = n - 1; i >= 0; i--)
		if (mas[i] == 0) 
		{
			pos = i;
			cout << "Позиция последнего нулевого элемента:" << pos <<endl;
			break;
		}

	    if (pos == -1) 
		{
		cout << "В массиве нет нулевых элементов" <<endl;
	    }

		int p = 1;

		for (int i = pos + 1; i < n; i++) 
			{
				p *= mas[i];
			}
		cout << "Произведение = " << p << endl;

		return 0;
}

Последний раз редактировалось BDA; 08.12.2022 в 20:20.
Boyets вне форума Ответить с цитированием
Старый 07.12.2022, 22:16   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
 // ...
double s = 0; for (int i = 0; i < n; i++) s += mas[i]; s /= n; // Вычисляем среднее арифметическое

// int p = 1; А почему у вас для значений типа double надо произведение считать в переменной типа int
double p = 1;
bool k = false;

for (int i = pos + 1; i < n; i++)
  if (mas[i] < s) {
    p *= mas[i]; // Только элементы не превышающие значение s - среднее арифметическое
    k = true; // Признак наличия элемента в произведении (иначе будет выдавать 1, когда не было ни одного элемента)
  }
if (k) {
  cout << "Произведение = " << p << endl;
} else {
  cout << "Нет элементов не превышающих среднее арифметическое элементов массива после последнего 0 элемента." << endl;
}
macomics вне форума Ответить с цитированием
Старый 08.12.2022, 19:22   #3
Boyets
Новичок
Джуниор
 
Регистрация: 06.12.2022
Сообщений: 2
По умолчанию

macomics, Спасибо, большое)
int не надо. Исправил на double
Boyets вне форума Ответить с цитированием
Старый 14.12.2022, 03:14   #4
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Код:
for (int i = pos + 1; i < n; i++)
  if (mas[i] < s) {
    p *= mas[i]; // Только элементы не превышающие значение s - среднее арифметическое
    k = true; // Признак наличия элемента в произведении (иначе будет выдавать 1, когда не было ни одного элемента)
  }
Почти правильно. «элементы не превышающие значение s» -- это <= s.
Пётр Седов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив A размером 3*3. Составить программу, записывающие положительные элементы этого массива A в одномерный массив B, а отрицательные - в одномерный массив C SkaNi Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2017 08:07
Задача на одномерный массив в Visual Basic Jarsey Помощь студентам 6 21.06.2011 08:25
Одномерный массив [Visual C++] cshero Помощь студентам 2 30.11.2009 11:42
Visual Basic-одномерный массив! DESPUT Помощь студентам 12 02.06.2009 09:33