probleme siruri

2
Se citeste un cuvant format din cel mult 20 de litere. Sa se intershimbe prima jumatate a cuvantului cu cea de a doua. Daca cuvantul este format din numar impar de litere, atunci litera din mijloc va ramane pe loc. Exemple: Cuvantul "cada" se transforma in "daca", iar "alina" in "naial". #include <iostream> #include <cstring> using namespace std; int main() { char s[21]; cin>>s; int n=strlen(s); for(int i=0;i<n/2;i++) { char aux=s[i]; s[i]=s[(n+1)/2+i]; s[(n+1)/2+i]=aux; } cout<<s; return 0; } Din fisierul text date.in se citeste un text format din cuvinte separate prin spatii sau caractere de forma .,;:-?!. Lungimea unei linii din fisier nu depaseste 255 caractere. Sa se scrie in fisierul text date.out, pe linii diferite, cuvintele distincte din text care contin subsirul "ate", fara a face distinctie intre litere mari si mici. Exemplu: date.in Daca satelitii nu sunt activi, GPS-ul nu functioneaza... - Ai vazut cate cuvinte marcate sunt?? Poate esti si tu atent! Cate sunt? date.out #include <fstream> #include <cstring> using namespace std; ifstream fin("date.txt"); ofstream fout("date.out"); int gasit(int n, char s[100][256], char c[256]) { for(int i=1;i<=n;i++) if(strcmpi(s[i],c)==0) return 1; return 0; } int litera(char c) { return c>='a' && c<='z' || c>='A' && c<='Z'; } int main() { char s[100][256];//memoreaza cuvintele distincte char a[266];//citeste o linie din fisier

Upload: lauraand21

Post on 02-Feb-2016

6 views

Category:

Documents


0 download

DESCRIPTION

Probleme Siruri

TRANSCRIPT

Page 1: Probleme Siruri

Se citeste un cuvant format din cel mult 20 de litere. Sa se intershimbe prima jumatate a cuvantului cu cea de a doua. Daca cuvantul este format din numar impar de litere, atunci litera din mijloc va ramane pe loc. Exemple: Cuvantul "cada" se transforma in "daca", iar "alina" in "naial". #include <iostream> #include <cstring> using namespace std; int main() { char s[21]; cin>>s; int n=strlen(s); for(int i=0;i<n/2;i++) { char aux=s[i]; s[i]=s[(n+1)/2+i]; s[(n+1)/2+i]=aux; } cout<<s; return 0; } Din fisierul text date.in se citeste un text format din cuvinte separate prin spatii sau caractere de forma .,;:-?!. Lungimea unei linii din fisier nu depaseste 255 caractere. Sa se scrie in fisierul text date.out, pe linii diferite, cuvintele distincte din text care contin subsirul "ate", fara a face distinctie intre litere mari si mici. Exemplu: date.in Daca satelitii nu sunt activi, GPS-ul nu functioneaza... - Ai vazut cate cuvinte marcate sunt?? Poate esti si tu atent! Cate sunt? date.out #include <fstream> #include <cstring> using namespace std; ifstream fin("date.txt"); ofstream fout("date.out"); int gasit(int n, char s[100][256], char c[256]) { for(int i=1;i<=n;i++) if(strcmpi(s[i],c)==0) return 1; return 0; } int litera(char c) { return c>='a' && c<='z' || c>='A' && c<='Z'; } int main() { char s[100][256];//memoreaza cuvintele distincte char a[266];//citeste o linie din fisier

Page 2: Probleme Siruri

int n=0;//nr de cuvinte distincte while(fin.getline(a,256))//cat timp pot citi un rand { char *p; while(p=strstr(a,"ate"))//p indica unde il gaseste pe ate { int j=p-a;//pozitia unde e ate while(j>0 && litera(a[j-1])) j--;//merg spre stanga in cuvant int k=p-a; //pozitia unde e ate while(k<strlen(a) && litera(a[k+1])) k++;//merg spre dreapta in cuvant char cuv[256]=""; strncat(cuv,a+j,k-j+1);//copiez cuvantul in cuv if(!gasit(n,s,cuv))//daca nu exista in cuvintele memorate in s strcpy(s[++n],cuv);//il daug strcpy(a+j,a+k+1);//il sterg din linia citita } } for(int i=1;i<=n;i++) fout<<s[i]<<endl; fin.close(); fout.close(); return 0; }