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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2018, 18:41   #1
bylbyl9tor
Пользователь
 
Регистрация: 07.10.2018
Сообщений: 28
Восклицание где то ошибка, вроде всё правильно но нет

Задача:В соревнованиях по фигурному катанию оценки выставляют несколько судий. При выведении итоговой оценки за вступление одного спортсмена из всей совокупности оценок удаляется наиболее высокая и наиболее низкая, и для оставшихся оценок вычисляется среднее арифметическое. Если несколько судей выставили наиболее низкую или наиболее высокую оценки, то из совокупности оценок удаляется только одна такая оценка. Напишите программу для вычисления оценки спортсмена.
___________________________________ _______
Подшаманьте пожалуйста, уже сил нет
___________________________________ _______
Код:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	setlocale(LC_ALL, "Russian");
	int k; double a[20];
	do 
	{
		cout << "Введите количество судей: ";
		cin >> k;
		if (k < 1 || k>20)
			cout << "Количество введено НЕВЕРНО!!!" << endl;
	}
	while (!(k > 0 && k <= 20));
	for (int i = 0; i < k; i++)
	{
		cout << "Введите оценку " << i << "-го судьи: ";
		cin >> a[i];
	}
	int max = a[0];
	for (int i = 1; i < k; i++)
		if (a[i] > max) max = a[i];
	int min = a[0];
	for (int i = 1; i < k; i++)
		if (a[i] < min) min = a[i];
	for (int i = 1; i < k; i++)
		if ((a[i] == max))
			(a[i] = 0) && (k = k - 1);
	for (int i = 1; i < k; i++)
		if ((a[i] == min))
			((a[i] = 0) && (k = k - 1));
	float sum = 0.0;
	for (int i = 0; i < k; i++)
	{
		sum += a[i];
	}
	int sur;    
	sur = sum / (k-2);
	cout << sur;

	system("pause");
	return 0;
}
bylbyl9tor вне форума Ответить с цитированием
Старый 08.11.2018, 19:24   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
	for (int i = 1; i < k; i++)
		if ((a[i] == max))
			(a[i] = 0) && (k = k - 1);
	for (int i = 1; i < k; i++)
		if ((a[i] == min))
			((a[i] = 0) && (k = k - 1));
Почему циклы начинаются с 1? Мин и макс совсем не обязательно остались a[0].
Зачем вы сразу k уменьшаете? Вы же границу массива, по которому бегаете, двигаете.
Зачем вы при вычислении среднеарифм. оценки из k вычитаете 2?
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает код, хотя вроде всё правильно mpdasa Помощь студентам 3 04.06.2012 10:44
Нет коннекта с базой с где ошибка ?? Thugmaster Общие вопросы .NET 10 07.09.2010 17:47
J2Me код Hello World где ошибка вроде всё правильно Tik-Tik Общие вопросы по Java, Java SE, Kotlin 2 30.08.2009 00:04
Вроде на первый взгляд всЁ просто...... Solny6ko YasnoE Помощь студентам 4 17.09.2007 08:23
Скока парился ни чё не получилось, а вроде всё просто! Cherni Voron Общие вопросы Delphi 14 07.08.2007 16:25