Siruri de caractere
1. Se citeşte de la tastatură un cuvânt. Să se afişeze numărul iniţial de caractere ale cuvântului şi apoi să se şteargă toate vocalele din cuvânt.
#include<iostream.h>
#include<string.h>
#include<conio.h>
void main()
{int i;
char s[100];
cout<<"s=";cin.get(s,100);
cout<<"Sirul are: "<<strlen(s)<<" caractere"<<endl;
strlwr(s);
for(i=0;i<strlen(s);i++)
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
strcpy(s+i,s+i+1);
cout<<"sirul fara vocale="<<s;
}
2. Se citesc de la tastatură 2 şiruri de caractere. Să se verifice dacă sunt egale (la fel) fără a se face deosebire între literele mari şi literele mici.
#include<iostream.h>
#include<string.h>
#include<conio.h>
char s1[100],s2[100];
void citire()
{
cout<<"primul sir: ";cin.get(s1,100);cin.get();
cout<<"al doilea sir ";cin.get(s2,100);
}
void compara()
{int x;
x=stricmp(s1,s2);
strlwr(s1);strlwr(s2);
//transformam cele doua siruri in siruri numai cu litere mici
if(x>0) cout<<"Primul sir este mai mare\n ";
else if(x==0) cout<<"Siruri sunt egale\n ";
else cout<<"Al doilea sir este mai mare decat primul\n ";
}
void main()
{citire();
compara();
}
3. Fişierul litere.txt conţine un text scris cu litere mari pe una sau mai multe linii. Se cere:
a) Să se afişeze litera ( literele) care apare de cele mai multe ori;
b) Să se afişeze vocalele din text.
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<io.h>
ifstream f("litere.txt");
int n;
char a[100];
void citire()
{int i;
i=0;
f>>a[i];
while(!f.eof())
{cout<<a[i];
i++;
/*pt nu a avea surprize ca fisierul sa nu aiba decat majuscule
transformam sirul in majusculele*/
strupr(a);
f>>a[i];
}
n=i;
f.close();
}
void maxim()
{
int b[50];
cout<<"\n numarul de caractere="<<n<<"\n";
int k=0;
for(char c='A';c<='Z';c++){
b[k]=0;
for(int j=0;j<n;j++)
if(c==a[j]) b[k]++;
k++;
}
int max=b[0];
for(int i=1;i<k;i++)
if(max<b[i])max=b[i];
cout<<"caracterele cu numar maxim de aparitii="<<max<<endl;
for(i=0;i<k;i++)
if(b[i]==max)cout<<char(65+i)<<" ";
}
void vocale()
{char voc[]="AEIOU";
cout<<"\nvocalele din text\n";
for(int i=0;i<n;i++)
for(int j=0;j<strlen(voc);j++)
if(a[i]==voc[j])cout<<a[i]<<" ";
cout<<"\n";
}
void main()
{citire();
maxim();
vocale();
}
4. Se citeşte un text într-o variabilă de tip string, in care cuvintele se despart prin spaţii. Se cere:
a) să se afişeze cuvintele în ordine alfabetică;
b) să se numere cuvintele cu minim 4 vocale distincte.
#include <iostream.h>
#include <conio.h>
#include <string.h>
char cuv[10][10];
int n;
void sortare()
{ char aux[10];int x;
for(int i=1;i<n;i++)
for(int j=1+i;j<=n;j++)
{x=strcmp(cuv[i],cuv[j]);
if(x>0){
strcpy(aux,cuv[i]);
strcpy(cuv[i],cuv[j]);
strcpy(cuv[j],aux);
}
}
for(i=1;i<=n;i++)cout<<cuv[i]<<" ";
cout<<endl;
}
int nrvocale(char s[10])
{char vocale[]="aeiou";int c;int nr=0;
strlwr(s);
for(int i=0;i<strlen(vocale);i++)
{ c=0;
for(int j=0;j<strlen(s);j++)
if(vocale[i]==s[j])c++;
if(c!=0)nr++;
}
if (nr>=4)return 1;
else return 0;
}
void vocale4()
{
for(int i=1;i<=n;i++)
if(nrvocale(cuv[i])==1)cout<<cuv[i]<<" ";
cout<<"\n";
}
int main()
{char a[100],*p,separator[]=" ";
int i=0,nr=0;
cout<<"Dati sirul:";cin.get(a,100);
strcpy(p,a);
p=strtok(p,separator);
while (p)
{strcpy(cuv[++nr],p);
p=strtok(NULL,separator);}
cout<<"Sunt "<<nr<<" cuvinte:"<<endl;
for (i=1;i<=nr;i++) cout<<cuv[i]<<endl;
n=nr;
sortare();
vocale4();
return 0;
}