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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2021, 00:44   #1
Airy
 
Регистрация: 27.11.2021
Сообщений: 8
По умолчанию вывести индексы мин и макс элементов из введенного диапазона массива

Пользователь вводит прибыль фирмы за год (12 месяцев). Затем пользователь вводит диапазон (например, 3 и 6 – поиск между 3-й и 6-й месяцами). Необходимо определить месяц, в котором прибыль была максимальной и месяц, в котором прибыль была минимальна с учетом выбранного диапазона.
Начальные и полученные данные выводятся на экран.

Вот код к задаче. Проблема в том, что когда ввожу диапазон меньше размера массива мне выдаёт неправильные значения. Когда ввожу диапазон 1-12 всё ок. Помогите разобраться где ошибка.

Код:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
	srand(time(NULL));
	const int year = 12;
	long long int array[year];
	cout << "\nProfit:\n";
	for (int j = 0; j < year; j++)
		array[j] = rand() % 5000;
	for (int month = 0; month < year; month++)
			cout << "\nmonth " << month + 1 << ":\t" << array[month] << '\n';
	
	int mFirst, mLast;
	cout << "\ninput the number of the first month and the last:\t";
	cout << "\nfirst:\t"; cin >> mFirst;
	cout << "\nlast:\t"; cin >> mLast;

	int max = array[mFirst], min = array[mFirst];
	int index1 = 0, index2 = 0;
	for (int i = mFirst; i < mLast; i++)
	{
		if (min > array[i]) { min = array[i]; index1 = i; }
		if (max < array[i]) { max = array[i]; index2 = i; }
	}
	cout << "\nmax = " << max << "\tmin = " << min;
	cout << "\nminimum profit was in\t" << index1+1 << "\tmonth";
	cout << "\nmaximun profit was in\t" << index2+1 << "\tmonth";
	cout << endl;
	system("pause");
	return 0;
}
Airy вне форума Ответить с цитированием
Старый 27.11.2021, 00:49   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Попробуйте индексы инициализировать не нулём, а mFirst.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.11.2021, 00:54   #3
Airy
 
Регистрация: 27.11.2021
Сообщений: 8
По умолчанию

BDA, спасибо, вроде работает. Сейчас буду тестить разными вариантами.
А можете объяснить почему с 0 не правильно считает?
Airy вне форума Ответить с цитированием
Старый 27.11.2021, 02:06   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Если минимум или максимум выпал на элемент mFirst, то соответствующий индекс останется нулем, так как проверка в цикле его не заменит на верный. Можно было бы сравнивать ">=" и "<=", тогда индексы бы записались новые.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.11.2021, 11:42   #5
Airy
 
Регистрация: 27.11.2021
Сообщений: 8
По умолчанию

BDA, спасибо большущее, я поняла
Airy вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить сумму элементов массива, являющихся трехзначными числами (с совпадающими первой и последней цифрами) и расположенных между мин и макс элементами, не включая мах и мин kirik1234 Помощь студентам 0 19.03.2018 22:17
[C#] Дан массив.Создать новый массив, в который поместить элементы так: первым поместить макс. элемент исходного массива, затем мин; далее макс и мин из оставшихся и так далее PickaBuu Помощь студентам 5 18.12.2017 07:49
макс. и мин. элемент массива С++ Danil_59 Фриланс 3 27.12.2011 19:19
макс. и мин. элемент массива Danil_59 Помощь студентам 2 26.12.2011 21:28
Нахождение Мин И Макс элементов Массива не стандартным способом. gree Помощь студентам 5 17.06.2009 20:57