Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. #include <string>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <fstream>
  5. #include <vector>
  6. #include <regex>
  7. #include<conio.h>
  8. using namespace std;
  9.  
  10. struct produkty {
  11. string nazwa;
  12. float kalorycznosc;
  13. float zwartosc_tluszczu;
  14. };
  15. float oblicz_kalorie(vector<produkty> &baza, string nazwa, float n) {
  16. //cout << "Podah baze , nazwe produktu oraz jego ilosc w gramach: " << endl;
  17. float wynik;
  18. for (auto itr = baza.begin(); itr != baza.end(); itr++) {
  19. if ((*itr).nazwa == nazwa) {
  20. wynik = (*itr).kalorycznosc*n;
  21. }
  22. // else return -1 ; // nie dziala jak powinno
  23. }
  24. return wynik / 100;
  25. }
  26.  
  27. int main() {
  28. fstream plik;
  29. vector<produkty>lista;
  30. plik.open("produkty.txt", ios::in); // do odczytu plik
  31. while (!plik.eof()) {
  32. produkty dane;
  33. float kalorie;
  34. float tluszcz;
  35. string srednik = ";";
  36. string enter = "\n";
  37. getline(plik, dane.nazwa, ';');
  38. plik >> kalorie;
  39. dane.kalorycznosc = kalorie;
  40. getline(plik, srednik, ';');
  41. plik >> tluszcz;
  42. dane.zwartosc_tluszczu = tluszcz;
  43. getline(plik, enter, '\n');
  44. lista.push_back(dane);
  45. }
  46. plik.close();
  47. // for (auto itr = lista.begin(); itr != lista.end(); itr++) { // TEST DO WYSWIETLANIA
  48. // cout << (*itr).nazwa << " " << (*itr).kalorycznosc << " " << (*itr).zwartosc_tluszczu ; }
  49. for (auto itr = lista.begin(); itr != lista.end(); ) {
  50. if ((*itr).zwartosc_tluszczu < 0.3) { // POZBYWANIE SIE TLUSZCZU MNIEJSZEGO OD 0.3
  51. itr = lista.erase(itr);
  52. }
  53. else {
  54. itr++;
  55. }
  56. }
  57.  
  58. // SORTOWANIE MALEJACO
  59. vector<pair<float, int>> temp;
  60. for (int j = 0; j < lista.size(); j++) {
  61. pair<float, int>b = pair<float, int>(lista[j].kalorycznosc, j);
  62. temp.push_back(b);
  63. }
  64. sort(temp.begin(), temp.end());
  65. std::reverse(temp.begin(), temp.end());
  66.  
  67. //TWORZENIE NOWEGO PLIKU GDZIE JEST ZAPISANA MODYFIKACJA
  68. plik.open("przerobione.txt", ios::out|ios::in);
  69. for (int l = 0; l < temp.size(); l++) {
  70. int indeks = temp[l].second;
  71. plik << lista[indeks].nazwa << " " <<
  72. lista[indeks].kalorycznosc << " " <<
  73. lista[indeks].zwartosc_tluszczu<< endl;
  74. //TEST
  75. // cout << lista[indeks].nazwa << " " <<
  76. // lista[indeks].kalorycznosc << " " <<
  77. // lista[indeks].zwartosc_tluszczu << endl;
  78. }
  79. plik.close();
  80.  
  81. //KALKULATOR OBLICZENIOWY
  82. cout << " Podaj ilosc produktow: " << endl;
  83. string nazwaa;
  84. float wynik=0;
  85. float ilosc;
  86. int n;
  87. cin >> n;
  88. for (int i = 0; i < n; i++) {
  89. cout << "Wpisz nazwe produktu oraz jego ilosc wedlug podanego wzoru: maslo = 100 " << endl;
  90. char temp ; // to jest nasze "=" np maslo=100
  91. cin >> nazwaa >> temp >> ilosc;
  92. float cos = 0;
  93. cos= oblicz_kalorie(lista, nazwaa, ilosc);
  94. /* tez nie dziala jak powinno
  95. if (cos==-1){
  96. cout << "Wpisz nazwe produktu oraz jego ilosc wedlug podanego wzoru: maslo = 100 " << endl;
  97. char temp ; // to jest nasze "=" np maslo=100
  98. cin >> nazwaa >> temp >> ilosc;
  99. float cos = 0;
  100. cos= oblicz_kalorie(lista, nazwaa, ilosc);
  101. }
  102. */
  103. wynik = wynik + cos;
  104. }
  105. cout << wynik << " kcal" << endl;
  106. _getch();
  107. return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement