Advertisement
Phoenix_x

Untitled

Dec 18th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.42 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <fstream>
  4. #include <string> //стринг са няколко символа, пример: aVeryNice$tring
  5. using namespace std;
  6.  
  7. struct account
  8. {
  9.     string ime;
  10.     double blv;
  11.     double usd;
  12.     double euro;
  13. }; //Структурата да е задължително над функциите.
  14.  
  15.  
  16. void writeAndViewContent(account accountsList[50], int &size);
  17. void printByName(account accountsList[50], int &size);
  18. void sort(account accountsList[50], int &size);
  19. void printRich(account accountsList[50], int &size);
  20.  
  21. void main()
  22. {
  23.     account accountsList[50]; //съхранява информация за всички продадени коли (max 50)
  24.     int size = 0; //размера, който ще въведе потребителя (ще има &)
  25.  
  26.     int option = 0;
  27.  
  28.  
  29.     while (true)
  30.     {
  31.         cout << "Izberete 1 za vavezdane na danni vav fajl i masiv i izvezdaneto im." << endl;
  32.         cout << "Izberete 2 za tarsene na akaunt po ime" << endl;
  33.         cout << "Izberete 3 za izvezdane na akaunti sas BLV nad zadadenoto." << endl;
  34.         cout << "Izberete 4 za izvezdane na akaunti sortirani vazhodqshto po otnoshenie na USD" << endl;
  35.        
  36.  
  37.         do //ще се изпълни поне веднъж и ще се въвежда избора(1, 2 или 3)
  38.         {
  39.             cout << "Your choice: ";
  40.             cin >> option;
  41.         } while (option < 1 || option > 4); //ако се окаже, че въведеното число е невалидно (< 1 или > 4),
  42.                                             //тогава подкани потребителя да въвежда отново число, докато то не стане да е между 1 и 3.
  43.  
  44.         switch (option)
  45.         {
  46.         case 1:
  47.             writeAndViewContent(accountsList, size); //функция за записване на данните върху масив и файл, както и извеждането им.
  48.             break; //ако няма break няма да знае докъде да спре с изпълнението(ще изпълни и следващата функция)
  49.         case 2:
  50.             printByName(accountsList, size);
  51.             break;
  52.         case 3:
  53.             printRich(accountsList, size);
  54.             break;
  55.         case 4:
  56.             sort(accountsList, size);
  57.             break;
  58.         }
  59.     }
  60. }
  61.  
  62. void writeAndViewContent(account accountsList[50], int &size) //с амперсант за да може да му променим стойността
  63. {
  64.     ofstream writeOnFile; //променлива, с която ще се пише по файла
  65.  
  66.     cout << "Broj akaunti: ";
  67.     cin >> size;
  68.  
  69.     //Въвеждане на данните във файла:
  70.     writeOnFile.open("аcoount.txt", ios::binary); //позволява да пишем по файла sales.txt
  71.     //Oсвен това изтрива досегашното съдържание на файла, и ако не съществува такъв създава нов празен
  72.     //ios::binary за да е двуичен файла
  73.  
  74.                                    //В този цикъл данните от потребителя се записват във файла и в масива sales
  75.     for (int i = 0; i < size; i++) //цикъл за въвеждане на данните в масив и файл
  76.     {
  77.         cout << "Vavedi informaciq za akaunt " << i + 1 << endl; //i + 1, за да не изпише за първата кола Enter information about car 0
  78.  
  79.         cout << "Ime: "; //подкана потребителя да въведе автокъща
  80.         cin >> accountsList[i].ime; // За елеменa, искам свойството ime, да е това, което е въведено от потребителя
  81.         writeOnFile << accountsList[i].ime + " "; //записва името(въведена от потребителя) във файла и един интервал за прегледност
  82.  
  83.         cout << "BLV: "; //Make и Year се записват по същия начин, както dealership
  84.         cin >> accountsList[i].blv;
  85.         writeOnFile << to_string(accountsList[i].blv) + " ";//конвертиране на число към текст за да се пише върху файл
  86.  
  87.         cout << "USD: ";
  88.         cin >> accountsList[i].usd;
  89.         writeOnFile << to_string(accountsList[i].usd) + " ";
  90.  
  91.         cout << "Euro: ";
  92.         cin >> accountsList[i].euro;
  93.         writeOnFile << to_string(accountsList[i].euro) + " ";
  94.  
  95.         writeOnFile << "|"; //за да разделя информацията от един акаунит от друг.
  96.  
  97.     }
  98.     writeOnFile.close(); //Ако не напишеш close, възникват проблеми
  99.  
  100.     cout << "* * * * * * *" << endl; //(разделител)
  101.  
  102.         //output array(or file) content
  103.     for (int i = 0; i < size; i++) //обхожда се всеки акаунт
  104.     {
  105.         cout << accountsList[i].ime << " " << accountsList[i].blv << " " << accountsList[i].usd << " " << accountsList[i].euro << endl;
  106.     }
  107. }
  108.  
  109. void printByName(account accountsList[50], int &size)
  110. {
  111.     string ime;
  112.     cout << "Ime: ";
  113.     cin >> ime;
  114.  
  115.     for (int i = 0; i < size; i++) //за всеки акаунт от масива с акаунти
  116.     {
  117.         if (accountsList[i].ime == ime)//ако akaunta е с ime, което потребителя иска
  118.         {
  119.             //принтирай ми данните за въпросния акаунт:
  120.             cout << "BLV: " << accountsList[i].blv << endl;
  121.             cout << "EURO: " << accountsList[i].euro << endl;
  122.             cout << "USD: " << accountsList[i].usd << endl;
  123.         }
  124.     }
  125.  
  126.     //запитване за нова справка:
  127.     string choice;
  128.     cout << "Zelaete li nova spravka?(y/n)";
  129.     cin >> choice;
  130.  
  131.     if (choice == "y") //значи потребителя иска да направи пак справка
  132.     {
  133.         printByName(accountsList, size); //изпълни функцията пак
  134.     }
  135.  
  136.     //ако потребителя не е натиснал y, a  нещо друго вместо това
  137.     //тогава не прави нищо и ме върхи към менюто.
  138. }
  139.  
  140. void sort(account accountsList[50], int &size)
  141. {
  142.     account temp; //помощна променлива за размяне на две променливи
  143.     //bubble sort
  144.  
  145.     for (int i = 0; i < size; i++)
  146.     {
  147.         for (int j = i + 1; j < size; j++)
  148.         {
  149.             if (accountsList[i].usd > accountsList[j].usd)
  150.             {
  151.                 //swap
  152.                 temp = accountsList[i];
  153.                 accountsList[i] = accountsList[j];
  154.                 accountsList[j] = temp;
  155.             }
  156.         }
  157.     }
  158.  
  159.     //принтирай ми вече сортираните акаунти:
  160.     for (int i = 0; i < size; i++) //обхожда се всеки акаунт
  161.     {
  162.         //принтирай ми данните за акаунта:
  163.         cout << "Akaunt: " << i + 1 << ":" << endl; //i + 1 за да не изпише акаунт 0
  164.         cout << "Ime: " << accountsList[i].ime << endl;
  165.         cout << "BLV: " << accountsList[i].blv << endl;
  166.         cout << "EURO: " << accountsList[i].euro << endl;
  167.         cout << "USD: " << accountsList[i].usd << endl;
  168.     }
  169. }
  170.  
  171. void printRich(account accountsList[50], int &size)
  172. {
  173.     double suma;
  174.     cout << "Obshta suma (BLV): ";
  175.     cin >> suma;
  176.  
  177.     for (int i = 0; i < size; i++) //за всеки акаунт от масива с акаунти
  178.     {
  179.         if (accountsList[i].blv > suma)//ако влога с blv е над общата сума
  180.         {
  181.             //принтирай ми данните за акаунта:
  182.             cout << "Ime: " << accountsList[i].ime << endl;
  183.             cout << "BLV: " << accountsList[i].blv << endl;
  184.             cout << "EURO: " << accountsList[i].euro << endl;
  185.             cout << "USD: " << accountsList[i].usd << endl;
  186.         }
  187.     }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement