enkov

Задача със структура (с функции) 08.03.2019

Mar 8th, 2019
469
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.98 KB | None | 0 0
  1. /*
  2. В един фитнес клуб се прави малка програма за работа с клиентите му.
  3. Всеки клиент се описва с име, тегло, платена такса (лв) и
  4. брой посещения до момента.
  5. Броят клиенти е между 10 и 100. Въведете информация за тези клиенти.
  6.  
  7. Изведете информация за:
  8. 1. всички клиенти;
  9. 2. клиенти, които са платили повече от 35.50 лв и са направили над 10 посещения;
  10. 3. клиентите с максимален и минимален брой посещения с тегло над 80 кг;
  11. 4. броя клиенти с тегло между 60 и 90 кг.
  12. */
  13.  
  14. #include "stdAfx.h" // при нужда сменете или премахнете този ред, в зависимост от компилатора
  15. #include <iostream>
  16. #include <string>
  17. using namespace std;
  18.  
  19. const int MaxClients = 100;
  20.  
  21. // глобална дефиниция на структурата, за да е видима от функциите извън main()
  22. struct Client {
  23.     string Name;
  24.     float Weight;
  25.     float Paid;
  26.     int Visits;
  27. };
  28.  
  29. Client Clients[MaxClients + 1];  // правим и масива Clients глобален, MaxClients+1 елемента, за да работим с 1..MaxClients
  30.  
  31. void EnterNumberOfClients(int &n, int aMax)
  32. {
  33.     do {
  34.         cout << "Enter the number of Clients (10.." << aMax << "): ";
  35.         cin >> n;
  36.     } while (n < 10 || n > aMax);
  37. };
  38.  
  39.  
  40. void EnterClient(Client &aClient, int id) // въвеждане на един елемент от тип Client
  41. {
  42.     cout << "Enter information for Client " << id << endl;
  43.     cout << " Name: ";
  44.     cin.get();  // flush the cin's buffer
  45.     getline(cin, aClient.Name);
  46.     cout << " Weight: ";
  47.     cin >> aClient.Weight;
  48.     cout << " Paid: ";
  49.     cin >> aClient.Paid;
  50.     cout << " Visits: ";
  51.     cin >> aClient.Visits;
  52. }
  53.  
  54. void EnterAllClients(Client ClientsArr[], const int size)
  55. {
  56.     for (int i = 1; i <= size; i++)
  57.         EnterClient(ClientsArr[i], i);
  58. }
  59.  
  60. void PrintClient(Client aClient, const int id)
  61. {
  62.     cout << " " << id
  63.         << ": name: " << aClient.Name
  64.         << ", weight: " << aClient.Weight
  65.         << ", paid: " << aClient.Paid
  66.         << ", visits: " << aClient.Visits << endl;
  67. }
  68.  
  69. void PrintAllClients(Client ClientsArr[], const int size)
  70. {
  71.     for (int i = 1; i <= size; i++)
  72.         PrintClient(ClientsArr[i], i);
  73. }
  74.  
  75. void PrintClientsByVisitsAndPayment(Client ClientsArr[], const int size, int Visits, float Payment)
  76. {
  77.     for (int i = 1; i <= size; i++)
  78.         if (ClientsArr[i].Visits > Visits && ClientsArr[i].Paid > Payment)
  79.             PrintClient(ClientsArr[i], i);
  80. }
  81.  
  82. void PrintMaxMinVisitsOverWeight(Client ClientsArr[], const int size, float aWeight)
  83. {
  84.     int maxVisits = -1; int minVisits = -1; bool first = true;
  85.     for (int i = 1; i <= size; i++)
  86.     {
  87.         if (ClientsArr[i].Weight > aWeight)
  88.         {
  89.             // ако е 1-вия с по-голямо тегло от указаното - запомняме веднага
  90.             if (first)
  91.             {
  92.                 first = false;
  93.                 maxVisits = ClientsArr[i].Visits;
  94.                 minVisits = ClientsArr[i].Visits;
  95.             }
  96.  
  97.             // проверяваме посещенията дали са повече от най-голямото до момента
  98.             if (ClientsArr[i].Visits > maxVisits)
  99.                 maxVisits = ClientsArr[i].Visits;
  100.             // проверяваме посещенията дали са под най-малкото до момента
  101.             if (ClientsArr[i].Visits < minVisits)
  102.                 minVisits = ClientsArr[i].Visits;
  103.         }
  104.     }
  105.     if (first)
  106.         cout << "No Clients with Weight over " << aWeight << endl;
  107.     else
  108.     {
  109.         cout << "Maximum visits are " << maxVisits << " by: " << endl;
  110.         for (int i = 1; i <= size; i++)
  111.             if (ClientsArr[i].Weight > aWeight && ClientsArr[i].Visits == maxVisits)
  112.                 PrintClient(ClientsArr[i], i);
  113.         cout << "Minimum visits are " << minVisits << " by: " << endl;
  114.         for (int i = 1; i <= size; i++)
  115.             if (ClientsArr[i].Weight > aWeight && ClientsArr[i].Visits == minVisits)
  116.                 PrintClient(ClientsArr[i], i);
  117.     }
  118. }
  119.  
  120. int CountBetween(Client ClientsArr[], const int size, float aWeightLow, float aWeightHigh)
  121. {
  122.     int count = 0;
  123.     for (int i = 1; i <= size; i++)
  124.         if (ClientsArr[i].Weight >= aWeightLow && ClientsArr[i].Weight <= aWeightHigh)
  125.             count++;
  126.     return count;
  127. }
  128.  
  129. int main()
  130. {
  131.     int numClients;
  132.     EnterNumberOfClients(numClients, MaxClients);
  133.     EnterAllClients(Clients, numClients);
  134.  
  135.     cout << "1. Information for all Clients: " << endl;
  136.     PrintAllClients(Clients, numClients);
  137.  
  138.     cout << "2. Clients with more than 10 visits and paid more than 35.50:" << endl;
  139.     PrintClientsByVisitsAndPayment(Clients, numClients, 10, 35.50);
  140.  
  141.     cout << "3. Clients with max/min visits from these with weight over 80:" << endl;
  142.     PrintMaxMinVisitsOverWeight(Clients, numClients, 80);
  143.  
  144.     cout << "4. Number of clients with weight between 60 and 90 is: "
  145.         << CountBetween(Clients, numClients, 60, 90) << endl;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment