Rezolvare completă PbInfo #3191 BrokenKeyboard

Dennis R. este elev în clasa a 10-a și tocmai ce a primit prima sa tema la programare: să implementeze un program care să calculeze suma sau diferența a două cifre primite de la tastatură. La nici 2 minute după ce a început tema observă că i s-a stricat tastatura și nu mai poate scrie caracterul ;. Determinat să facă tema în ciuda acestui mic impediment observă că acesta este un caracter destul de important și nu reușește să compileze fără el. Ca orice student care simte cum se apropie deadline-ul și nu reușește să termine tema întreabă un prieten, în acest caz pe fratele său mai mare, Ken T., student la Poli care are ceva experiență cu dezvoltarea unui sistem. Acesta acceptă provocarea de a
termina programul fără niciun ;.

Cerința

Terminați funcția de mai jos făra a mai folosi niciun ;.

void sumdif()
{
int rez = 0;
//citire
//afisare
}

Date de intrare

Prin funcție se vor citi de la tastatură o cifră, +/-, și o altă cifră, în această ordine.

Date de ieșire

Prin funcție se va afișa rezultatul obținut.

Restricții și precizări

  • 0 ≤ cifra ≤ 9
  • Implementați programul descris mai sus pornind de la scheletul de cod dat fără a mai folosi caracterul ; în cod. Funcția trebuie să conțină ; maxim o singură dată. Nu încercați șmecherii pentru că veți lua 0 puncte :).

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce la erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Exemplu

Intrare

3+5

Ieșire

8

Explicație

3+5=8

Intrare

2-6

Ieșire

-4

Explicație

2-6=-4

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema BrokenKeyboard :

void sumdif()
{
    int rez = 0;
    if ((rez = fgetc(stdin)))
    {
        if (fgetc(stdin) == '-')
        {
            if (!printf("%d\n", rez - fgetc(stdin))) {}
        }
        else
        {
            if (!printf("%d\n", rez + fgetc(stdin) - 48*2)) {}
        }
    }

}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #3191 BrokenKeyboard

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3191 BrokenKeyboard de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!