Informatică, întrebare adresată de owiliams, 8 ani în urmă

Să fie în C++. Mulțumesc anticipat.
Se consideră șirurile de caractere S1, S2 și S3. Scrieți un program care va determina care dintre șirurile S1, S2 și S3 conține mai multe cifre, apelând repetat subprogramul care determină numărul de cifre dintr-un șir de caractere S.

Datele de intrare se vor citi din fișierul var20.in, calculele se vor organiza prin aplicarea funcțiilor utilizatorului, iar rezultatele se vor scrie în fișierul var20.out.
(Poza)

Anexe:

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

nu am identificat care sir contine mai multe ca cred e mai eficient sa te uiti in fisierul aut decat sa faci in zadar atâtea verificări. e posibil unul din siruri să conţină mai multe cifre, sau două din ele , sau toate trei  

Explicație:

#include <iostream>

#include <fstream>

#include <cstring>

using namespace std;

ifstream fin("var20.in");

ofstream fout("var20.out");

char s1[200],s2[200],s3[200], cifre[]="0123456789";

int c1,c2,c3;

void nrcifre(char s[], int &c)

{

   for (int i=0; i<strlen(s); ++i)

       if (strchr(cifre,s[i])) ++c;

}

int main()

{

   fin.getline(s1,200);

   nrcifre(s1,c1);

   fin.getline(s2,200);

   nrcifre(s2,c2);

   fin.getline(s3,200);

   nrcifre(s3,c3);

   fout << "sirul S1 contine " << c1 << " cifre \n";

   fout << "sirul S2 contine " << c2 << " cifre \n";

   fout << "sirul S3 contine " << c3 << " cifre \n";

}


owiliams: Daca nu va este greu faceti ca sa determine care dintre sir contine mai multe cifre. Mulțumesc
boiustef: ok
boiustef: int c1,c2,c3,v[4], maxim, i;
v[1]=c1; v[2]; v[3]=c3; maxim=v[1];
if (v[2] > maxim) maxim=v[2];
if (v[3] > maxim) maxim=v[3];
fout << "Mai multe cifre contine: ";
for (i=1; i < 4; ++i)
if (v[i]==maxim)
fout << "sirul S" << i << "; ";
boiustef: adaugi la sfârşitul codului asta ..., dar o rectificare. deoarece c1,c2,c3 sunt deacum declarate scrii numai
int v[4], maxim, i;
v[1]=c1; v[2]; v[3]=c3; maxim=v[1];
if (v[2] > maxim) maxim=v[2];
if (v[3] > maxim) maxim=v[3];
fout << "Mai multe cifre contine: ";
for (i=1; i < 4; ++i)
if (v[i]==maxim)
fout << "sirul S" << i << "; ";
boiustef: inca o rectificare... v[2]=c2;
owiliams: multumesc
boiustef: sănătate şi succes!
Alte întrebări interesante