Вычислить и напечатать плату за парковку для 3-х водителей - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть задача: Гараж требует оплатить минимальный взнос в $2.00 для парковки машины на время, не большее трех часов. За каждый час времени (или за неполный час) сверх 3-х часов гараж требует доплаты $0.50 в час. Максимальная плата за любые 24 часа составляет $10.00. Предположим, что здесь нет автомобилей, запаркованных сразу на время, большее 24-х часов. Напишите программу, которая будет вычислять и печатать плату за парковку для 3-х водителей, которые вчера запарковали свои автомобили в этом гараже. Вы должны будете ввести время начала парковки для каждого заказчика. Ваша программа должна печатать результаты в аккуратном табличном формате и должна вычислять и печатать общую сумму вчерашних платежей. Программа должна использовать функцию calculateCharges для определения платы от каждого клиента. Есть решение:
#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;
}
Оно прекрасно работает когда машина одна,но если машин больше одной то выводит в таблицу только последние значения. В чем ошибка? P.S. Как сделать суммы часов и оплаты всех автомобилей?

Решение задачи: «Вычислить и напечатать плату за парковку для 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;
}

Объяснение кода листинга программы

В этом коде:

  1. Спрашивается у пользователя, сколько машин.
  2. Выделяется память под массивы часов работы и платы за час работы для каждой машины.
  3. Задаются вопросы пользователю про часы работы каждой машины и записываются в соответствующие ячейки массива.
  4. Вычисляется плата за час работы для каждой машины и записывается в соответствующую ячейку массива.
  5. Выводится на экран информация о машинах, их часах работы и плате за час работы.
  6. Освобождается память, выделенная под массивы.
  7. Возвращается 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.143 из 5
Похожие ответы