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
Răspunsuri la întrebare
Răspuns:
#include<iostream>
using namespace std;
int main()
{
int n,nbr=0,j=0; // declaram variabilele, n - numar de caractere pt sir, nbr - aici stocam numarul, j - contor pentru caractere
cout << "Introduceti numarul de caractere : ";
cin >> n; // citim numarul de caractere
char *m = new char[n]; // declaram vectorul in care vom citi sirul
char* v = new char[n]; // declaram vectorul in care vom pune literele (presupunem ca tot sirul este litere d-asta il declaram cu n)
cin.ignore(256, '\n'); // ignoram enter-ul de la citirea lui N pentru a putea folosi getline sa luam sirul cu tot cu spatiu
cout << "Introduceti textul : ";
cin.getline(m,n+1); // citim textul
for (int i = 0; i < n; i++) // trecem prin sir
{
if (m[i] >= '0' && m[i] <= '9') // daca caracterul curent este intre 0 si 9 (adica este cifra)
{
nbr = nbr * 10 + m[i]-'0'; // adunam cifra la numarul nostru
}
else if (m[i] != ' ') // altfel daca nu este spatiu inseamna ca este litera sau semn de punctuatie
{
v[j] = m[i]; // o adaugam la sirul nostru pt caractere
j++; // crestem contorul
}
}
cout << "Numarul format este " << nbr << endl; // afisam numarul
cout << "Caracterele sunt : ";
for (int i = 0; i < j; i++) // afisam sirul
{
cout << v[i] << ' ';
}
}
Explicație:
Am comentat pe cod ca sa intelegi mai usor.