Qellex

labs 4-2 v - 5

Dec 22nd, 2021
976
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.42 KB | None | 0 0
  1.  
  2. #include "stdio.h"
  3. #include "locale.h"
  4.  
  5.  
  6. // ввод данных
  7. void inputData(float* b, float* r) {
  8.     // делаем первый ввод и проверяем введены ли корректно данные, если некорректно, то вводим заново
  9.     do {
  10.         printf("Введите кол-во багажа пасажира:\n");
  11.         scanf_s("%f", b);
  12.         if (*b < 0)
  13.             printf("Неверный ввод данных. Повторите ввод.\n");
  14.     } while (*b < 0);
  15.  
  16.     do {
  17.         printf("Введите показатели километража:\n");
  18.         scanf_s("%f", r);
  19.         if (*r < 0)
  20.             printf("Неверный ввод данных. Повторите ввод.\n");
  21.     } while (*r < 0);
  22. }
  23.  
  24. // определение платы за проед для
  25. void calculateCharges(float b, float r, float* p1, float* p2, float* p3, int p) {
  26.     // если пассажира три или два или один, то плата за проезд
  27.     // распределяется равномерно и учитывается его багаж с собой
  28.     if (p == 3) {
  29.         *p1 = b * 50 + 12 * r / p;
  30.         *p2 += 12 * r / p;
  31.         *p3 += 12 * r / p;
  32.     }
  33.     if (p == 2) {
  34.         *p2 += b * 50 + 12 * r / p;
  35.         *p3 += 12 * r / p;
  36.     }
  37.     if (p == 1) {
  38.         *p3 += b * 50 + 12 * r;
  39.     }
  40. }
  41.  
  42. // суммарная оплата за такси
  43. float calculateTotals(float p1, float p2, float p3) {
  44.     return p1 + p2 + p3; // суммурует общую сумму оплаты и возращает данные
  45. }
  46.  
  47.  
  48. // печать таблицы
  49. void printTable(float b1, float r1, float p1, float b2, float r2, float p2, float b3, float r3, float p3, float bs, float ps) {
  50.  
  51.     printf("\n\tБагаж\tРасстояние\tПлата\n");
  52.     printf("1\t%.0f\t%.1f\t\t%.1f\n", b1, r1, p1);
  53.     printf("2\t%.0f\t%.1f\t\t%.1f\n", b2, r2, p2);
  54.     printf("3\t%.0f\t%.1f\t\t%.1f\n", b3, r3, p3);
  55.     printf("Итого:\t%.0f\t%.1f\t\t%.1f\n", bs, r3, ps);
  56.  
  57. }
  58.  
  59.  
  60.  
  61. void main() {
  62.  
  63.     // подключение руссого языка
  64.     setlocale(LC_ALL, "rus");
  65.  
  66.     // кол-во багажа, километраж выхода, плата
  67.     float b1, r1, p1 = 0,
  68.           b2, r2, p2 = 0,
  69.           b3, r3, p3 = 0;
  70.  
  71.     // всего багажа, общая плата
  72.     float bs, ps;
  73.  
  74.     // вводим данные для каждого пассажира
  75.     inputData(&b1, &r1);
  76.     inputData(&b2, &r2);
  77.     inputData(&b3, &r3);
  78.  
  79.     // расчитываем расстояние пройденное совместно
  80.     float r21 = r2 - r1; // расстояние пройденное двух
  81.     float r32 = r3 - r2; // растоение пройденное одним
  82.  
  83.     calculateCharges(b1, r1, &p1, &p2, &p3, 3); // рассчитываем для первого
  84.     calculateCharges(b2, r21, &p1, &p2, &p3, 2); // для второго
  85.     calculateCharges(b3, r32, &p1, &p2, &p3, 1); // для третьего
  86.  
  87.     ps = calculateTotals(p1, p2, p3); // считаем общую прибыль таксиста
  88.     bs = calculateTotals(b1, b2, b3); // считаем общую сумму багажа
  89.  
  90.     printTable(b1, r1, p1, b2, r2, p2, b3, r3, p3, bs, ps); // отправляем переменные для вывода в таблицу
  91.  
  92. }
Advertisement
Add Comment
Please, Sign In to add comment