Cerința
Se consideră un text alcătuit din mai multe linii, în care cuvintele sunt separate prin spatii și caractere din setul .,;:-?!
. Să se determine cuvintele distincte din text care conţin subşirul ate
, fără a face distincţie între litere mari şi mici.
Date de intrare
Fișierul de intrare cuvinte3.in
conține textul dat.
Date de ieșire
Fișierul de ieșire cuvinte3.out
va conține mai multe linii; pe fiecare linie se află câte un cuvânt distinct din textul dat care conține subșirul ate
.
Restricții și precizări
- fiecare linie din fișierul de intrare va avea cel mult
255
de caractere - ordinea de afișare a cuvintelor este cea din textul dat
- dacă un cuvânt apare în text de mai multe ori (fără a face distincţie între litere mari şi mici) se va afișa în fișierul de ieșire prima sa apariție
- în fișierul de intrare sunt cel mult
100
de cuvinte distincte care conține subșirulate
Exemplu
cuvinte3.in
Daca satelitii nu sunt activi, GPS-ul nu functioneaza... - Ai vazut cate cuvinte marcate sunt?? Poate esti si tu atent! Cate sunt?
cuvinte3.out
satelitiicatemarcatePoateatent
#include <bits/stdc++.h>using namespace std;
ifstream fin("cuvinte3.in");
ofstream fout("cuvinte3.out");
char m[505][256];
int n;void to_lower(char p[])
{
for(int i = 0 ; p[i] ; i++)
p[i] = tolower(p[i]);
}bool verif(char p[])
{
char t[256];
strcpy(t , p);
to_lower(t);
if( strstr(t , "ate") )
return true;
return false;
}bool egale(char a[] , char b[])
{
char s1[256], s2[256];
strcpy(s1, a);
strcpy(s2 , b);
to_lower(s1); to_lower(s2);
if(strcmp(s1 , s2) == 0)
return true;
return false;
}int main()
{
char s[256], sep[]=".,;:-?! ";
while( fin.getline(s , 256) )
{
char * p = strtok(s , sep);
while(p)
{
if(verif(p))
{
bool gasit = false;
for(int i = 1 ; i <= n && ! gasit ; i++) if( egale(Comentarii