Donacions X22314


Statement
 

pdf   zip   main.cc

html

Per resoldre aquest problema heu de completar el codi que trobareu al final de l’enunciat. Hi heu de reemplaçar cada ??? per una o més línies de codi. No canvieu res més. Descarregueu-vos de la web del problema el fitxer code.cc amb el codi a completar (cliqueu el botó “.CPP” corresponent), editeu-lo i envieu-lo al jutge.

Volem mantenir informació bàsica de les donacions monetàries a un hospital. En particular, volem guardar quants diners en total ha donat cada persona, identificada de forma única amb el seu nif (8 dígits seguits de la lletra majúscula de control).

El programa permet fer cinc operacions diferents:

  • N: Escriu el nombre de donants precedit de “number:”. Fixeu-vos que hi pot haver menys donants que donacions, si hi ha donants repetits.
  • D n m: S’apunta que la persona amb nif n ha donat m diners. Si la persona ja havia fet alguna donació, n’acumula els imports.
  • Q n: Consulta quants diners ha donat de moment la persona amb nif n. Cal escriure -1 si encara no ha fet cap donació.
  • P: Escriu una línia amb tots els nifs que acaben amb un dígit parell (ignorant el caràcter de control), amb els nifs ordenats alfabèticament. Cal separar els nifs amb espais.
  • L: Escriu la informació del donant amb el nif més gran alfabèticament. Si no n’hi ha cap, escriu “NO LAST NIF”.

Entrada

L’entrada consisteix en diverses operacions segons s’ha indicat anteriorment. Els nifs són correctes, i les donacions són enters estrictament positius.

Sortida

Per a cada operació (excepte les donacions), escriviu la informació demanada. Es garanteix que la màxima donació acumulada no serà més gran que 109.

#include <iostream> #include <map> using namespace std; int main() { map<string, int> M; char c; while (cin >> c) { if (c == 'N') { ??? } else if (c == 'D') { string nif; int money; cin >> nif >> money; ??? } else if (c == 'Q') { string nif; cin >> nif; ??? } else if (c == 'P') { ??? } else { // c == ’L’ ??? } } }
Public test cases
  • Input

    N
    L
    P
    D 02345678T 1000
    D 98765433Y 500
    Q 02345678T
    Q 12345679S
    P
    L
    D 98765432M 500
    D 98765433Y 2000
    N
    P
    L
    D 99999999R 700
    L
    

    Output

    number: 0
    NO LAST NIF
    
    1000
    -1
    02345678T
    98765433Y 500
    number: 3
    02345678T 98765432M
    98765433Y 2500
    99999999R 700
    
  • Information
    Author
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++