Sunteți pe pagina 1din 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

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;
}

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