Sunteți pe pagina 1din 2

Se citeşte de la tastatură un text care conţine mai multe propoziţii.

Propoziţiile se
consideră separate prin . ! sau ?. Număraţi câte propoziţii are textul şi afișaţi:
-propoziția cu cele mai puține caractere;
-propoziția cu cele mai multe caractere;
-propoziția cu cele mai puține cuvinte;
-propoziția cu cele mai multe cuvinte.

#include <iostream>
#include <cstring>
using namespace std; Date de test (1):
int main()
{ Text=”ana are extrem de multe
mere.vinde ana din mere?nu!”
char text[500],*p,*c,*d,*f;
char minchar[100],maxchar[100],maxcuv[100],mincuv[100]; Se afișează:
int k=0, i=0, j=0,l=1;
cout<<"Introduceti textul: "; cin.get(text,499); Propozitia cea mai lunga:ana
p=strtok(text,".!?"); are extrem de multe mere
strcpy(minchar,p);
strcpy(maxchar,p); Propozitia cea mai scurta:nu
strcpy(mincuv,p);
strcpy(maxcuv,p); Propozitia cu cele mai multe
p=strtok(NULL,".!?"); cuvinte:ana are extrem de
multe mere
while(p)
{ Propozitia cu cele mai putine
l++; cuvinte:nu
if(strlen(minchar)>strlen(p)) strcpy(minchar,p);
if(strlen(maxchar)<strlen(p)) strcpy(maxchar,p);
c=strchr(p,' ');
d=strchr(mincuv,' '); Date de test (2):
f=strchr(maxcuv,' ');
i=0; j=0; k=0; Text=”ana are multe mere
while(c) { i++; c=c+1; c=strchr(c,' ');} verzi.experimentul
while(d) { k++; d=d+1; d=strchr(d,' ');} sternocleidomastoidian a
while(f) { j++; f=f+1; f=strchr(f,' ');} esuat!Referat la informatica.”
if(i<k) strcpy(mincuv,p);
else if(i>j) strcpy(maxcuv,p); Se afișează:
p=strtok(NULL,".!?");
} Propozitia cea mai
lunga:experimentul
cout<<"Textul are "<<l<<" propozitii"<<endl; sternocleidomastoidian a esuat
cout<<"Propozitia cea mai lunga: ";
cout<<maxchar<<endl; Propozitia cea mai
cout<<"Propozitia cea mai scurta:"; scurta:referat la informatica
cout<<minchar<<endl;
cout<<"Propozitia cu cele mai multe cuvinte:"; Propozitia cu cele mai multe
cout<<maxcuv<<endl; cuvinte:ana are multe mere
cout<<"Propozitia cu cele mai putine cuvinte:"; verzi
cout<<mincuv<<endl;
} Propozitia cu cele mai putine
cuvinte:referat la informatica
Se citesc de la tastatură două cuvinte formate doar din literele minuscule ale alfabetului
englez. Se cere realizarea unui program care afișează:
-mulțimea literelor comune celor două cuvinte (intersecția);
-mulțimea literelor care se găsesc în unul dintre cele două cuvinte (reuniunea);
-mulțimea literelor care se găsesc în primul cuvânt citit și nu apar în al doilea.

#include <iostream>
#include <cstring>
using namespace std;
void afisare(char text[100])
{
int i;
for(i=0;i<strlen(text);i++) cout<<text[i]<<"
";cout<<"}"<<endl;
}
void unic (char unu[100], char doi[100]) Date de test (1):
{
Pentru cuvântul: mamaie și
int k=0, p, q, gasit;
for(p=0; p<strlen(unu); p++) cuvântul: macara
{
gasit=0; Se afișează:
for(q=0; q<p; q++)
Reuniunea este{m a i e c r}
if(unu[p]==unu[q]) gasit =1;
if(gasit==0) {doi[k]=unu[p]; k++;}
Intersectia este {m a}
}
} Diferenta este {i e}
void reuniune(char cuv1[100], char cuv2[100])
{
char v[200]="", reun[200]="";
int k=0, i, j; Date de test (2):
strcpy(v, cuv1); strcpy(v+strlen(cuv1), cuv2);
unic(v, reun); Pentru cuvântul: informatica și
cout<<"Reuniunea este {"<<endl; afisare(reun); cuvântul: cuvantul
}
void intersectie(char cuv1[100], char cuv2[100]) Se afișează:
{
char in[100]="", dif[100]="", u[100]="", w[100]=""; Reuniunea este
int i, j, k=0, l=0, ok=0, gasit;
for(i=0; i<strlen(cuv1); i++) {i n f o r m a t c u v l}
{
ok=0; Intersectia este {n a t c}
for(j=0; j<strlen(cuv2); j++)
if(cuv1[i]==cuv2[j]) ok++; Diferenta este {i f o r m}
if(ok) {u[k]=cuv1[i]; k++;}
else {w[l]=cuv1[i]; l++;}
}
unic(u, in); unic(w, dif);
cout<<"Intersectia este { "; afisare(in);
cout<<"Diferenta este { "; afisare(dif);
}
main()
{
char cuv1[100], cuv2[100];
cout<<"Introdu primul cuvant: "; cin.get(cuv1, 99);
cin.get();
cout<<"Introdu al doilea cuvant: ";
cin.get(cuv2, 99);reuniune(cuv1, cuv2);
intersectie(cuv1, cuv2);
}

S-ar putea să vă placă și