Rezolvare completă PbInfo #3080 VerifNumar

Cerința

Se dă un șir de caractere. Sa se determine numărul scris cu cifrele existente în șirul dat. Să se afișeze numărul obținut și, pe linia următoare, toate caracterele din șir care nu fac parte din număr, cu excepția spațiilor.

Date de intrare

Programul citește de la tastatură un șir de caractere.

Date de ieșire

Programul afișează pe ecran numărul determinat, iar pe linia următoare, separate prin câte un spațiu, toate caracterele din șir care nu fac parte din număr, cu excepția spațiilor, în ordinea din șir.

Restricții și precizări

  • șirul dat va avea cel mult 100 de caractere;
  • dacă șirul dat reprezintă un număr natural, programul va afișa numai mesajul CORECT;
  • dacă șirul dat nu conține nicio cifră, programul va afișa numai mesajul NaN;
  • dacă șirul nu conține alte cifre în afară de 0, numărul rezultat va fi reprezentat de ultima apariție în șir a cifrei 0;

Exemplu 1:

Intrare

00573a9 3ee

Ieșire

57393
0 0 a e e

Exemplu 2:

Intrare

ab0 efj0

Ieșire

0
a b 0 e f j

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 VerifNumar:

#include <iostream>

using namespace std;

int elim[100];

int main()
{
    char s[101];
    cin.getline(s , 101);
    int lastzero = -1, amcifrenenule = 0, cnt = 0;
    for(int i = 0 ; s[i] ; i ++)
    {
        if(s[i] == '0')
        {
            if(! amcifrenenule)
                elim[i] = 1, lastzero = i, cnt ++;
        }
        else
            if(s[i] > '0' && s[i] <= '9')
                amcifrenenule = 1;
            else
                elim[i] = 1, cnt ++;
    }

    if(! amcifrenenule && lastzero != -1)
        elim[lastzero] = 0, cnt --;

    if(cnt == 0)
        cout << "CORECT";
    else
    {
        if(! amcifrenenule && lastzero == -1)
            cout << "NaN";
        else
        {
            for(int i = 0 ; s[i] ; i ++)
                if(elim[i] == 0)
                    cout << s[i];
            cout << endl;
            for(int i = 0 ; s[i] ; i ++)
                if(elim[i] == 1 && s[i] != ' ')
                    cout << s[i] << " ";
            cout << endl;
        }
    }

    return 0;
}

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 #3080 VerifNumar

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3080 VerifNumar 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!