Advertisement
Qellex

lab4.2 - 6

Dec 2nd, 2022
673
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.42 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "locale.h"
  3.  
  4.  
  5. // ввод данных, передаем адресса данных
  6. void inputData(float* sum, int* mms, int* sms, int* time) {
  7.     // делаем первый ввод и проверяем введены ли корректно данные, если некорректно, то вводим заново
  8.     do {
  9.         printf("Введите баланс:\n");
  10.         scanf_s("%f", sum);
  11.         if (*sum < 0)
  12.             printf("Неверный ввод данных. Повторите ввод.\n");
  13.     } while (*sum < 0);
  14.  
  15.     do {
  16.         printf("Введите кол-во mms:\n");
  17.         scanf_s("%d", mms);
  18.         if (*mms < 0)
  19.             printf("Неверный ввод данных. Повторите ввод.\n");
  20.     } while (*mms < 0);
  21.      
  22.     do {
  23.         printf("Введите кол-во sms:\n");
  24.         scanf_s("%d", sms);
  25.         if (*sms < 0)
  26.             printf("Неверный ввод данных. Повторите ввод.\n");
  27.     } while (*sms < 0);
  28.  
  29.     do {
  30.         printf("Введите кол-во минут:\n");
  31.         scanf_s("%d", time);
  32.         if (*time < 0)
  33.             printf("Неверный ввод данных. Повторите ввод.\n");
  34.     } while (*time < 0);
  35. }
  36.  
  37. // находим расход услуг за месяц
  38. float calculateCharges(int mms, int sms, int time) {
  39.     return -(mms * 2.5 + sms * 0.2 + time * 0.15);
  40. }
  41.  
  42. // кол-во бонусов
  43. int bonusMustBeAdded(float psum, int mms, int sms, int time) {
  44.     float bonus = 0; // сумма бонусов
  45.     int f = 0; // считаем кол-во выполненых условий
  46.     if (psum > 200) { bonus = bonus + 200 * 0.05; }
  47.     if (mms > 10) { f++; }
  48.     if (sms > 50) { f++; }
  49.     if (time > 100) { f++; }
  50.     if (f > 1) { bonus = bonus + 150; }
  51.     return bonus;
  52. }
  53.  
  54. // сложение атрибутов
  55. float calculateTotals(float a, float b) {
  56.     return a + b;
  57. }
  58.  
  59.  
  60. // печать таблицы
  61. void printTable(int sms1, int mms1, int time1,
  62.     int sms2, int mms2, int time2,
  63.     int sms3, int mms3, int time3,
  64.     float sum1, float sum2, float sum3,
  65.     float psum1, float psum2, float psum3,
  66.     float balans1, float balans2, float  balans3) {
  67.  
  68.     printf("\n\tИсходно\tMMS\tSMS\tМинут\tОстаток\tОстаток+премии\n");
  69.     printf("1\t%.2f\t%d\t%d\t%d\t%.2f\t%.2f\n", sum1, mms1, sms1, time1, psum1, balans1);
  70.     printf("2\t%.2f\t%d\t%d\t%d\t%.2f\t%.2f\n", sum2, mms2, sms2, time2, psum2, balans2);
  71.     printf("3\t%.2f\t%d\t%d\t%d\t%.2f\t%.2f\n", sum3, mms3, sms3, time3, psum3, balans3);
  72.     printf("Сред:\t%.2f\t%.0f\t%.0f\t%.0f\t%.2f\t%.2f\t\n", (sum1 + sum2 + sum3) / 3.0, (mms1 + mms2 + mms3) / 3.0, (sms1 + sms2 + sms3) / 3.0, (time1 + time2 + time3) / 3.0, (psum1 + psum2 + psum3) / 3.0, (balans1 + balans2 + balans3) / 3.0);
  73.  
  74. }
  75.  
  76.  
  77.  
  78. void main() {
  79.  
  80.     // подключение руссого языка
  81.     setlocale(LC_ALL, "rus");
  82.  
  83.     // смс, ммс, время розговра, баланс, остаток баланса, остаток + премия, расход за месяц
  84.     int mms1, sms1, time1,
  85.         mms2, sms2, time2,
  86.         mms3, sms3, time3;
  87.     float sum1, sum2, sum3,
  88.           psum1, psum2, psum3,
  89.           balans1, balans2, balans3,
  90.           ras1, ras2, ras3;
  91.     // ввод данных
  92.     inputData(&sum1, &mms1, &sms1, &time1);
  93.     inputData(&sum2, &mms2, &sms2, &time2);
  94.     inputData(&sum3, &mms3, &sms3, &time3);
  95.  
  96.     // считаем расходы
  97.     ras1 = calculateCharges(mms1, sms1, time1);
  98.     ras2 = calculateCharges(mms2, sms2, time2);
  99.     ras3 = calculateCharges(mms3, sms3, time3);
  100.  
  101.     // считаем остаток
  102.     psum1 = calculateTotals(sum1, ras1);
  103.     psum2 = calculateTotals(sum2, ras2);
  104.     psum3 = calculateTotals(sum3, ras3);
  105.  
  106.     // находим премии + остаток
  107.     balans1 = calculateTotals(psum1, bonusMustBeAdded(psum1, mms1, sms1, time1));
  108.     balans2 = calculateTotals(psum2, bonusMustBeAdded(psum2, mms2, sms2, time2));
  109.     balans3 = calculateTotals(psum3, bonusMustBeAdded(psum3, mms3, sms3, time3));
  110.  
  111.     // передаем данные на таблицу
  112.     printTable(sms1, mms1, time1,
  113.         sms2, mms2, time2,
  114.         sms3, mms3, time3,
  115.         sum1, sum2, sum3,
  116.         psum1, psum2, psum3,
  117.         balans1, balans2, balans3);
  118.  
  119.    
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement