Cerința
Se dau două propoziții formate din litere mari și mici ale alfabetului englez și spații. Să se afișeze în ordine alfabetică cuvintele care apar în ambele șiruri.
Date de intrare
Programul citește de la tastatură cele două propoziții, separate printr-un caracter newline
.
Date de ieșire
Programul va afișa pe ecran cuvintele comune, scrise cu litere mici, fiecare pe o linie, în ordine alfabetică.
Restricții și precizări
- șirurile date au cel mult
255
de caractere - nu se face distincție între literele mari și cele mici
- dacă un cuvânt comun apare de mai multe ori, se va afișa o singură dată
Exemplu
Intrare
Ana si Maria au mere si nuci ana are MERE si Pere si prune
Ieșire
ana mere si
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 CuvinteComune:
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
char S[256], T [256], A[100][256], B[100][256];
int n , m;
bool litera_mica(char X) { return X >= 'a' && X <= 'z'; }
bool litera_mare(char X) { return X >= 'A' && X <= 'Z'; }
char to_lower(char X)
{
if(litera_mare(X))
return X + ('a' - 'A');
return X;
}
void lowercase(char * s)
{
for(int i = 0 ; s[i] ; i ++)
s[i] = to_lower(s[i]);
}
void extract(char *S , int &n , char A[][256])
{
char * p = strtok(S, " ");
while(p)
{
bool gasit = false;
for(int i = 1 ; i <= n && !gasit ; i ++)
if(strcmp(p , A[i]) == 0)
gasit = true;
if(!gasit)
{
++n;
strcpy(A[n] , p);
}
p = strtok(NULL , " ");
}
}
void sortare(int &n , char A[][256])
{
char x[256];
for(int i = 1 ; i < n ; i ++)
for(int j = i + 1 ; j <= n ; j ++)
if(strcmp(A[i] , A[j]) > 0)
{
strcpy(x , A[i]);
strcpy(A[i] , A[j]);
strcpy(A[j] , x);
}
}
void afisare()
{
for(int i = 1 ; i <= n ; i ++)
{
bool gasit = false;
for(int j = 1 ; j <= n && !gasit ; j ++)
if(strcmp(B[j] , A[i]) == 0)
gasit = true;
if(gasit)
cout << A[i] <<"\n";
}
}
int main()
{
cin.getline(S , 256);
cin.getline(T , 256);
lowercase(S);
lowercase(T);
extract(S, n, A);
sortare(n , A);
extract(T, m, B);
afisare();
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 #889 CuvinteComune
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #889 CuvinteComune 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!