Informatică, întrebare adresată de cyp892, 8 ani în urmă

Problemă limbaj de programare C++
Simulați funcționarea unui automat de parcare. Automatul poate primi bancnote de 1, 5, 10 și 50 lei și
poate da restul în bancnote de 1, 5 și 10 lei. Costul parcării unei mașini poate fi între 3 și 120 lei.
Aplicația va citi valoarea datorată pentru parcare și valori numerice reprezentând numărul de bancnote
de fiecare fel introduse de persoana care plătește.
Apoi va afișa numărul de bancnote de fiecare fel din restul datorat.
Exemplu:
Cost parcare: 67 lei;
Bancnote introduse: 0 x 1
0 x 5
2 x 10
1 x 50
Rest calculat: 70 – 67 = 3
Bancnote restituite: x 1.

Răspunsuri la întrebare

Răspuns de Apollyon
2

Răspuns:

#include <iostream>

using std::cout;

using std::endl;

using std::cin;

static void afisareNumarBacnoteReturnate(int restDePlata) {

// numărul de bacnote pe care trebuie să le restituie aparatul, inițial toate au valoarea 0

int nrBacnote1{}, nrBacnote5{}, nrBacnote10{}, nrBacnote50{};

// cât timp rest de plată este diferit de 0

while (restDePlata) {

 // dacă restul de plată este mai mare sau egal decât 50 putem să oferim bacnote de 50 de lei

 if (restDePlata >= 50) {

  ++nrBacnote50;

  restDePlata -= 50;

 }

 // dacă restul de plată este mai mic decât 50 dar mai sau egal cu 10 putem restitui bacnote de 10

 else if (restDePlata >= 10) {

  ++nrBacnote10;

  restDePlata -= 10;

 }

 // ș.a.m.d. până când nu mai trebuie să oferim rest de plată

 else if (restDePlata >= 5) {

  ++nrBacnote5;

  restDePlata -= 5;

 }

 else if (restDePlata >= 1) {

  ++nrBacnote1;

  restDePlata -= 1;

 }

}

// la final afișăm câte bacnote a oferit aparatul

cout << "Bacnote restituite:\n"

 << "\t" << nrBacnote1 << " bacnote de 1 leu\n"

 << "\t" << nrBacnote5 << " bacnote de 5 lei\n"

 << "\t" << nrBacnote10 << " bacnote de 10 lei\n"

 << "\t" << nrBacnote50 << " bacnote de 50 lei"

 << endl;

}

int main() {

int costParcare, nrBacnote1, nrBacnote5, nrBacnote10, nrBacnote50, sumaIncasata{}, restDePlata;

// citim costul parcării

cout << "Introdu costul parcarii: "; cin >> costParcare;

// citim numărul de bacnote pe care le introducem de ex. 0 0 3 2

// 0 bacnote de 1 leu, 0 bacnote de 5 lei, 3 bacnote de 10 lei și 2 bacnote de 50 de lei

cout << "Introdu bacnotele introduse (1 leu, 5 lei, 10 lei, 50 lei): ";

cin >> nrBacnote1 >> nrBacnote5 >> nrBacnote10 >> nrBacnote50;

// calculăm suma pe care a încasat-o aparatul

sumaIncasata = 1 * nrBacnote1 + 5 * nrBacnote5 + 10 * nrBacnote10 + 50 * nrBacnote50;

// calculăm restul de plată

restDePlata = sumaIncasata - costParcare;

// afișăm informațiile

cout << "Costul parcarii: " << costParcare << endl;

cout << "Suma incasata: " << sumaIncasata << endl;

cout << "Rest de plata: " << restDePlata << endl;

afisareNumarBacnoteReturnate(restDePlata);

return 0;

}

Output-ul programului:

Introdu costul parcarii: 67

Introdu bacnotele introduse (1 leu, 5 lei, 10 lei, 50 lei): 0 0 2 1

Costul parcarii: 67

Suma incasata: 70

Rest de plata: 3

Bacnote restituite:

       3 bacnote de 1 leu

       0 bacnote de 5 lei

       0 bacnote de 10 lei

       0 bacnote de 50 lei

Răspuns de andrei750238
4

#include <iostream>

using namespace std;

int main() {

int cost;

int n50, n10, n5, n1;

int total, rest;

cout << "Cost parcare: ";

cin >> cost;

cout << "Bancnote (1,5,10,50) : ";

cin >> n1 >> n5 >> n10 >> n50;

total = n1 * 1 + n5 * 5 + n10 * 10 + n50 * 50;

rest = total - cost;

cout << "\n\nCost parcare : " << cost << " lei";

cout << "\nBancnote introduse:\n" << n1 << " x 1\n" << n5 << " x 5\n" << n10 << " x 10\n" << n50 << " x 50\n";

cout << "\nRest calculat : " << total << " - " << cost << " = " << rest;

if (rest != 0) {

 n50 = rest / 50;

 rest %= 50;

 n10 = rest / 10;

 rest %= 10;

 n5 = rest / 5;

 rest %= 5;

 n1 = rest;

 cout << "\nBancnote restituite: \n";

 if (n50) cout << n50 << " x 50\n";

 if (n10) cout << n10 << " x 10\n";

 if (n5) cout << n5 << " x 5\n";

 if (n1) cout << n1 << " x 1\n";

}

}

Anexe:
Alte întrebări interesante