fisiere1
1. În fişierul date.in sunt scrise mai multe cuvinte câte unul pe fiecare linie din fişier. Se cere:
a) Să se determine numărul de cuvinte din fişier;
b) Să se afişeze cuvintele care încep cu o vocală.
Obs. Nu se va face distincţie între litere mari şi mici.
#include<iostream.h>
#include<string.h>
#include<fstream.h>
ifstream ff("date.in");
int n;
char a[100][100];
void citire()
{int i;
i=1;
ff>>a[1];
while(strcmp(a[i],"")!=0)
{i++;
ff>>a[i];strlwr(a[i]);//transformam majusculele in litere mici
}
n=i-1;
}
void cuvinte()
{
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<"\n numarul de cuvinte="<<n<<"\n";
cout<<"cuvintele care incep cu vocala\n";
for (i=1;i<=n;i++)
if ((a[i][0]=='a')||(a[i][0]=='e')||(a[i][0]=='i')||(a[i][0]=='o')||(a[i][0]=='u'))
cout<<a[i]<<" ";
}
void main()
{citire();cuvinte();}
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();
}
Fişierele cuv1.txt şi cuv2.txt conţin cuvinte, câte un cuvânt pe linie în ordine alfabetică. Să se construiască fişierul cuv3.txt care să conţină toate cuvintele din cele două fişiere, în ordine alfabetică.
#include<iostream.h>
#include<io.h>
#include<string.h>
#include<fstream.h>
ifstream f1("cuv1.txt");
ifstream f2("cuv2.txt");
ofstream f("cuv3.txt");
char a[100][10],b[100][10],c[200][10];
int n,m;
void citire_f1()
{
n=0;
while(!f1.eof())
{f1>>a[n];
n++;}
f1.close();
}
void afisare_f1()
{
cout<<"\nfisierul cuv1.txt are "<<n<<" cuvinte\n";
for(int i=0;i<n;i++) cout<<a[i]<<"\n";
}
void citire_f2()
{
m=0;
while(!f2.eof())
{f2>>b[m];
m++;}
f2.close();
}
void interclasare()
{
int x,k;
int i=0,j=0;
while(i<n&&j<m)
{x=strcmp(a[i],b[j]);
if(x>0){f<<b[j]<<endl;j++;}
else {f<<a[i]<<endl;i++;}
}
//daca nu s-au afisat toate sirurile din a
if(i<n)
for(k=i;k<n;k++){f<<a[k]<<endl;}
//daca nu s-au afisat toate sirurile din b
if(j<m)
for(k=j;k<m;k++){f<<b[k]<<endl;}
f.close();
}
void afisare_f2()
{
cout<<"\nfisierul cuv2.txt are "<<m<<" cuvinte\n";
for(int i=0;i<m;i++) cout<<b[i]<<"\n";
}
void main()
{citire_f1();
afisare_f1();
citire_f2();
afisare_f2();
interclasare();
}
4. Fie fişierul bingo.txt cu maxim 90 de numere naturale. Se cere:
a) să se calculeze cmmdc al numerelor din fişier;
b) valoarea maximă din vector şi poziţiile pe care se află.
#include<iostream.h>
#include<io.h>
#include<fstream.h>
ifstream f("bingo.txt");
int a[90],n;
void citire()
{n=0;
while(!f.eof()) f>>a[++n];
n--;
f.close();
}
void afisare()
{
cout<<"\nin fisier sunt "<<n<<" numere\n";
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
cout<<"\n";
}
int cmmdc(int a,int b)
{
while(a!=b)
if(a>b)a=a-b;
else b=b-a;
return a;
}
void cmmdcn()
{
int c=cmmdc(a[1],a[2]);
for(int i=3;i<=n;i++) c=cmmdc(c,a[i]);
cout<<"cmmdc="<<c<<endl;
}
void maxim()
{
int max=a[1];
for(int i=1;i<=n;i++)
if(max<a[i]) max=a[i];
cout<<"max="<<max<<endl;
cout<<"pozitiile: ";
for(i=1;i<=n;i++)
if(a[i]==max) cout<<i<<" ";
cout<<endl;
}
void main()
{
citire();
afisare();
cmmdcn();
maxim();
}