Вычислить и напечатать плату за парковку для 3-х водителей - C (СИ)
Формулировка задачи:
Есть задача:
Гараж требует оплатить минимальный взнос в $2.00 для парковки машины на время, не большее трех часов. За каждый час времени (или за неполный час) сверх 3-х часов гараж требует доплаты $0.50 в час. Максимальная плата за любые 24 часа составляет $10.00. Предположим, что здесь нет автомобилей, запаркованных сразу на время, большее 24-х часов. Напишите программу, которая будет вычислять и печатать плату за парковку для 3-х водителей, которые вчера запарковали свои автомобили в этом гараже. Вы должны будете ввести время начала парковки для каждого заказчика. Ваша программа должна печатать результаты в аккуратном табличном формате и должна вычислять и печатать общую сумму вчерашних платежей. Программа должна использовать функцию calculateCharges для определения платы от каждого клиента.
Есть решение:
Оно прекрасно работает когда машина одна,но если машин больше одной то выводит в таблицу только последние значения. В чем ошибка?
P.S. Как сделать суммы часов и оплаты всех автомобилей?
#include <stdio.h> #include <stdlib.h> float calculateCharges(float hours) { float val; if (hours<=3) val=2; else if (hours>3 && hours<24) val=2+(hours-3)*0.5; else val=10; return val; } int main() { int Cars, i; float Hours, Charge,TotalH,TotalC ; printf("How many cars?\n"); scanf("%d", &Cars); for (i=1; i<=Cars; i++) { printf("Car[%d], Hours=", i); scanf("%f", &Hours); Charge=calculateCharges(Hours); } printf("\nCar\tHours\tCharge\n"); for (i=1; i<=Cars; i++) printf("%d\t%.2f\t%.2f\n", i, Hours, Charge); return 0; }
Решение задачи: «Вычислить и напечатать плату за парковку для 3-х водителей»
textual
Листинг программы
int main() { int Cars, i; float TotalH, TotalC; printf("How many cars?\n"); scanf("%d", &Cars); float* Hours = (float *) malloc (Cars*sizeof(float)); float* Charge = (float *) malloc (Cars*sizeof(float)); for (i=0; i<Cars; i++) { printf("Car[%d], Hours=", i+1); scanf("%f", &Hours[i]); Charge[i]=calculateCharges(Hours[i]); } printf("\nCar\tHours\tCharge\n"); for (i=0; i<Cars; i++) printf("%d\t%.2f\t%.2f\n", i+1, Hours[i], Charge[i]); free(Hours); free(Charge); return 0; }
Объяснение кода листинга программы
В этом коде:
- Спрашивается у пользователя, сколько машин.
- Выделяется память под массивы часов работы и платы за час работы для каждой машины.
- Задаются вопросы пользователю про часы работы каждой машины и записываются в соответствующие ячейки массива.
- Вычисляется плата за час работы для каждой машины и записывается в соответствующую ячейку массива.
- Выводится на экран информация о машинах, их часах работы и плате за час работы.
- Освобождается память, выделенная под массивы.
- Возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д