Cerința
Se consideră un fişier care conţine informaţii despre mai multe persoane, sub o formă nestructurată. Informaţiile sunt dispuse pe linii de maxim 200
de caractere şi pot conţine CNP-uri valide. Ştiind că CNP-ul unei persoane este un şir de exact 13
cifre consecutive, scrieţi un program care determină şi scrie în fişierul de ieșire, pe linii distincte, toate CNP-urile extrase din text. Dacă în fișierul de intrare nu se află niciun CNP, în fișierul de ieșire se va afișa numai valoarea 0
.
Date de intrare
Fișierul de intrare cnp.in
conține informațiile date.
Date de ieșire
Fișierul de ieșire cnp.out
va conține CNP-urile determinate, câte unul pe o linie, sau valoarea 0
dacă în fișierul de intrare nu există CNP-uri.
Exemplul 1
cnp.in
Popescu Grigore, 14 ani, 1991212122334; Gigel Banu - 1031102453435, Bujorului 7; Dana Marin: 2690405358687, fara viza, 2450609987654 - Jane Doe
cnp.out
1991212122334 1031102453435 2690405358687 2450609987654
Exemplul 2
cnp.in
Popescu Grigore, 14 ani, 1991212134; Gigel Banu - 103110245Bujorului 7; Dana Marin: 269-04-05-358687, fara viza, 2+450609+987654 - Jane Doe
cnp.out
0
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 CNP:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("cnp.in");
ofstream fout("cnp.out");
bool cifra(char L)
{
if(L >= '0' && L <= '9')
return true;
return false;
}
int main()
{
char s[210], t[210];
bool gasit = false;
while(fin.getline(s , 210))
for(size_t i = 0 ; i < strlen(s) ; i ++)
if( cifra(s[i]) )
{
int j = i + 1;
while( cifra(s[j]) )
j ++;
if(j - i == 13)
{
strcpy(t , s + i);
t[13] = 0;
fout << t << endl;
gasit = true;
}
i = j - 1;
}
if(! gasit)
fout << 0;
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 .
Rezolvarea problemei #1000 CNP
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1000 CNP 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!