Advertisement
enkov

Задача за отстъпки с if-else при въвеждането

Dec 16th, 2017
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.10 KB | None | 0 0
  1. /*
  2. Вариант 2.
  3. Да се напише програма на С++, която:
  4. 0) въвежда от клавиатурата брой клиенти (число м/у 10 и 100).
  5. А) въвежда от клавиатурата годишни обороти (в лева) на този брой клиенти.
  6. Б) съхранява в масив получените годишни бонуси (в лева), изчислени на базата на направения годишен оборот по следния начин:
  7. • 10000-15000 лв -3%;
  8. • 15001-50000 лв – 4%;
  9. • 50001-70000 лв – 5%;
  10. • 70001-90000 лв – 6%;
  11. • над 90000 лв – 7%;
  12. В) извежда сумата на получените бонуси;
  13. Г) извежда номера на клиента, който е получил най-голям бонус и сумата на получения бонус. Ако са повече от един клиент с този бонус, извежда всичките.
  14. */
  15.  
  16. #include <iostream>
  17. using namespace std;
  18.  
  19. int main()
  20. {
  21.     // 0. трябва да въведем броя клиенти, с проверка 10-100
  22.     int n;
  23.     do
  24.     {
  25.         cout << "Broi klienti (10..100): ";
  26.         cin >> n;
  27.     } while (n<10 || n>100);
  28.    
  29.     // не можем да създадем масив с брой елементи - променлива, затова масива е от максималния брой (100). добавяме 1, за да работим от 1.
  30.     float bonus[101];
  31.    
  32.     // междинна променлива за оборота
  33.     float oborot;
  34.  
  35.     // А. въвеждаме данните за клиентите, като пресмятаме бонуса според оборота и запомняме бонуса за всеки клиент
  36.     for (int i=1; i<=n; i++)
  37.     {
  38.         cout << "Oborot na klient " << i << ": ";
  39.         cin >> oborot;
  40.         // съобразяваме, че при оборот под 10000 лв няма отстъпка и бонуса е 0 лв
  41.         // подреждаме if-else в непокриващи се интервали само с проверка за по-малко или равно, вместо oborot >= 10000 && oborot <= 15000 примерно (което също е верно)
  42.         if (oborot < 10000) bonus[i] = 0;
  43.         else if (oborot <= 15000) bonus[i] = oborot * 0.03;
  44.         else if (oborot <= 50000) bonus[i] = oborot * 0.04;
  45.         else if (oborot <= 70000) bonus[i] = oborot * 0.05;
  46.         else if (oborot <= 90000) bonus[i] = oborot * 0.06;
  47.         else bonus[i] = oborot * 0.07;
  48.     }
  49.    
  50.     // Б. намираме сумата от всички бонуси
  51.     float suma = 0;
  52.     for (int i=1; i<=n; i++)
  53.         suma = suma + bonus[i];
  54.     cout << "Sumata ot vsichki bonusi e " << suma << endl;
  55.    
  56.     // В. намираме макс. бонус
  57.     float maxbonus = bonus[1];
  58.     for (int i=2; i<=n; i++)
  59.         if (bonus[i] > maxbonus)
  60.             maxbonus = bonus[i];
  61.        
  62.     cout << "Maks. bonus e " << maxbonus << " i e poluchen ot klient(i) s nomer: ";
  63.     for (int i=1; i<=n; i++)
  64.         if (bonus[i] == maxbonus)
  65.             cout << i << " ";
  66.     cout << endl;
  67.    
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement