Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / programming-challanges, задачи / 5 сообщений из 5, страница 1 из 1
18.07.2013, 10:46
    #38335157
aybek_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
programming-challanges, задачи
Условие задачи:
ЗадачаНесколько друзей решили вместе путешествовать. И в конце путешествия, чтобы уравнять количество
расходов, они решили обмениваться деньгами. Требуется определить минимальную сумму денег, которая
должна поменять хозяина, для того чтобы уравнять (с точностью до копейки) расходы друзей.
пример ввода:
3
10.00
20.00
30.00
0
пример вывода:
10
первому другу достаточно дать третьему 10 рублей и их расходы станут одинаковыми.

Решил задачу таким способом:
1. Вычислил среднее арифметическое расходов.
2. От расхода каждого друга отнял среднее арифметическое расходов.
3. Суммировал положительные элементы, получившегося массива.
Код решения на С:
Код: plaintext
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.
#include <stdio.h>

#define MAX_STUDENT 1000

int main()
{
	int i;

	float sn;
	float mm, em, sum;
	float sp[MAX_STUDENT];

	for (;;) {
		scanf("%f", &sn);
		if (!sn)
			break;

		sum = 0;
		for (i = 0; i < sn; i++) {
			scanf("%f", &sp[i]);
			sum += sp[i];
		}

		em = sum/(float)sn;

		for (mm = 0, i = 0; i < sn; i++)
			if (em-sp[i] > 0)
				mm += (em-sp[i]);

		printf("$%.2f\n", mm);
	}

	return 0;
}


Но что должна делать программа, при таком входе:
Код: plaintext
1.
2.
3.
4.
2
0.01
0.00
0


Как они поделят копейку?
Округлял до сотых, отбрасывал цифры после запятой до сотых, нет, все равно программа тест не проходит.
...
Рейтинг: 0 / 0
18.07.2013, 10:58
    #38335175
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
programming-challanges, задачи
aybek_,

1) не используй для денежных расчётов плавающую арифметику
2) float sn - можно ввести полтора студента?
да и проверить не мешает, что sn>0 и sn<MAX_STUDENT
...
Рейтинг: 0 / 0
18.07.2013, 11:22
    #38335239
aybek_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
programming-challanges, задачи
Изопропил,

То что sn целое число, больше нуля и меньше 10000, гарантируется в условии задачи.
...
Рейтинг: 0 / 0
18.07.2013, 11:23
    #38335241
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
programming-challanges, задачи
aybek_Изопропил,

То что sn целое число, больше нуля и меньше 10000, гарантируется в условии задачи.
вот используй целый тип.
а контроль входных данных условиям не противоречит
...
Рейтинг: 0 / 0
19.07.2013, 08:53
    #38336386
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
programming-challanges, задачи
Задачачтобы уравнять (с точностью до копейки)
aybek_Как они поделят копейку?

Так её делить и не надо.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / programming-challanges, задачи / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]