Sunteți pe pagina 1din 16

1.

Se considera un text cu cel mult 250 de caractere(litere mici ale alfabetului englez si spatii), in
care cuvintele sunt separate printr-un singur spatiu . Scrieti un program c++ care citeste de la
tastatura un text s de tipul mentionat mai sus si determina transformarea acestuia in memorie prin
modificarea tuturor cuvintelor cu cel putin 3 litere a.i. primul caracter sa ocupe pozitia utimului
caracter din cuvant, iar ultimul sa ocupe pozitia primului. Programul afiseaza pe ecran textul
modificat.

Exemplu: pentru textul

O proba si doua texte

Se obtine

O arobp si aoud eestt

#include <iostream>
#include <string.h>
using namespace std;
char s[251], sp[]=" ";
int main()
{
char auxc; int i,j,aux1,aux2;
cin.get(s,251);
strcpy(s,strcat(sp,s));
strcat(s," ");
i=0;
while(i<strlen(s))
{ if(s[i]==' ')

{aux1=i+1;j=i+1;
while(s[j]!=' ')
j++;
aux2=j-1;
if(aux2-aux1>=2)

{auxc=s[aux1];
s[aux1]=s[aux2];
s[aux2]=auxc;}
i=j;
}
}
strcpy(s,s+1);
s[strlen(s)-1]='\0';
cout<<s;
return 0;
}
2.Din fisierul concatenari.in se citeste un cuvant s avand maxim 10 litere. Apoi se citeste un
numar natural nenul n cu cel mult o cifra si apoi se citesc n cifre. Modificati sirul s in functiile de
numerele citite dupa n, astfel:
- daca numarul x citit este par, atunci la s se vor adauga primele x litere in ordinea din sir
- daca numarul x citit este impar, atunci la s se vor adauga primele x litere in ordinea inversa din
sir.
Afisati in fisierul concatenari.out sirul obtinut din s la finalul modificarilor.
Restrictie: Numere citire nu depasesc lungimea cuvantului s.

Exemplu:
concatenari.in
alina
3
432
concatenari.out
alinaalinilaal

#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("concatenari.in");
ofstream fout("concatenari.out");

int main()
{
char s[101];
int n,x;
fin>>s;
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>x;
if(x%2==0) strncat(s,s,x);
else
for(int j=x-1;j>=0;j--)
strncat(s,s+j,1);
}
fout<<s;
return 0;

3.Se consideră un text cu cel mult 70 de caractere (litere mici ale alfabetului englez si spatii), în
care cuvintele sunt separate prin unul sau mai multe spatii. Înaintea primului cuvânt si după
ultimul cuvânt nu există spatii. Scrieti un program C/C++ care citeste de la tastatură un text de
tipul mentionat mai sus si afisează pe ecran numărul de cuvinte în care apare litera a.

Exemplu: pentru textul : "voi sustine


examenul la informatica" se va afisa
valoarea 3.

#include <fstream>
#include <string.h>
using namespace std;
int main()
{
char a[71];
int i,j,num=0,temp;
cout<<”introduceti sir catact:”;
cin.get(a,70);
for(i=0;i<strlen(a);i++)
{cout<<”i=”<<i<<endl;
if(a[i]==’a’|| a[i]==’A’)
{num++;
cout<<”num=”<<num<<endl;
for(j=1;j<strlen(a);j++)
{cout<<”j=”<<j<<endl;
temp=j;
if(a[j]==;=’ ‘)
j=strlen(a);}
i=temp;
cout<<”litera a apare in “<<num<<”cuvinte ale frazei: “<<a;
return o;
}
4. Se da un sir de caractere a. Sa se afiseze sirul de caractere obtinut prin transformarea literelor
mari cuprinse intre ‘D’ si ‘O’ in litere mici, respectiv literelor mici cuprinse intre ‘f’ si ‘t’ in
litere mari.

Ex : tEst => teSt.


5. Sa se inlocuiasca toate aparitiile unui cuvant intr-un text cu un nou cuvant citit de la tastatura
1.Se citeste din fisierul f.in o matrice cu n (numar par) linii si m coloane cu elemente numere
intregi. Sa se insereze o linie la mijlocul matricii, fiecare element de pe aceasta linie fiind egal cu
suma elementelor de pe coloana pe care se afla. Matricea astfel rezultata sa se afiseze in fisierul
f.out.
Exemplu:

f.in f.out
45 12343
12343 45653
45653 15 20 26 20 16
78969 78969
35851 35851
2. Din fisierul m.in se citesc doua numere n si m si apoi o matrice a cu n linii si m coloane cu
elemente intregi. Determinati daca matricea are toate elemente distincte.
3. Se citeste o matrice nXm cu elemente intregi. Sa se ordoneze crescator elementele pare de pe
liniile cu numar par.
4. Se citeste o matrice. Sa se stearga o linie/ coloana
5. Scrieţi un program care citeşte de la tastatură un număr natural n (2<n<20), construieşte în
memorie şi afişează pe ecran o matrice cu n linii şi n coloane, în care fiecare element de pe
diagonala secundară are valoarea n, fiecare element aflat deasupra diagonalei secundare este mai
mic cu o unitate decât vecinul aflat pe aceeaşi linie în dreapta lui şi fiecare element aflat sub
diagonala secundară este mai mare cu o unitate decât vecinul aflat pe aceeaşi linie în stânga lui.

Elementele matricei vor fi afişate pe ecran, câte o linie a matricei pe câte o linie a ecranului cu
câte un spaţiu între elementele fiecărei linii.

Exemplu: pentru n=5 se va afişa matricea


alăturată.

12345
23456
34567
45678
56789
1.Se dau n elevi. Se citesc: numele şi două note la fizica. Să se calculeze media fiecărui elev. Să
se afişeze elevii în ordinea descrescătoare a mediilor, iar pentru medii egale, în ordine alfabetică

#include<iostream.h>
#include<string.h>
struct elev
{char nume[25];
int n1,n2;
float media;
};
elev a[25];
int n;
void citire()
{int i;
for(i=1; i<=n; i++)
{cout<<"numele: "; cin.get();cin.get(a[i].nume,20,'\n');
cout<<"nota1: "; cin>>a[i].n1;
cout<<"nota2: "; cin>>a[i].n2;
a[i].media=(((float)a[i].n1+a[i].n2)/2);
};};
void afisare()
{int i;
for(i=1; i<=n; i++)
cout<<a[i].nume <<" "<<a[i].n1<<" "<<a[i].n2<<" "<<a[i].media<<endl;
};
void ordonare()
{int i,g;
elev aux;
do{ g=1;
for(i=1; i<n; i++)
if((a[i+1].media>a[i].media)||(a[i+1].media==a[i].media && strcmp(a[i+1].nume,a[i].nume)<0))
{aux=a[i+1]; a[i+1]=a[i]; a[i]=aux; g=0; }
} while(!g);
};
void main()
{ cout<<"n=";cin>>n;
citire(); afisare();
ordonare();
cout<<"Elevii in ordinea descrescatoare a mediilor"<<endl;
afisare();
};

2. Se citesc elevii unei clase, numele prenumele si notele acestora folosind tipul struct. Sa se

calculeze si sa se afiseze media acestora.

#include<iostream.h>
struct elev
{ char nume[20],prenume[20];
struct
{ int zi,luna,an; }data;
float mate,info,engleza,media;
};
elev e[10];
main()
{ unsigned i,n;
cout<<"Cati elevi sunt in clasa ? "; cin>>n;
for(i=1;i<=n;i++)
{ cout<<"nume: "; cin>>e[i].nume;
cout<<"prenume: "; cin>>e[i].prenume;
cout<<"zi: "; cin>>e[i].data.zi;
cout<<"luna: "; cin>>e[i].data.luna;
cout<<"an: "; cin>>e[i].data.an;
cout<<"nota mate: "; cin>>e[i].mate;
cout<<"nota info: "; cin>>e[i].info;
cout<<"nota engleza: "; cin>>e[i].engleza;
e[i].media=(e[i].mate+e[i].info+e[i].engleza)/3;
}
for(i=1;i<=n;i++)
{ cout<<i<<"."<<e[i].nume<< " "<<e[i].prenume<<endl;
cout<<"Media elevului "<<e[i].nume<<" "<<e[i].prenume<<" este "<<e[i].media<<endl;
cout<<"Data de nastere a elevului "<<e[i].nume<<" "<<e[i].prenume<<" este
"<<e[i].data.zi<<"."<<e[i].data.luna<<"."<<e[i].data.an<<endl;
3.In fisierul sarituri.in sunt notate numele, prenumele si lungimea sariturii pentru cei n elevi
dintr-o clasa. Numele si prenumele sunt siruri de caractere, iar lungimea sariturii este numar real.
Sa se construiasca doua fisiere text baieti.out si fete.out in care sa se afiseze baeietii si respective
fetele din clasa, ordonati/ordonate descrescator dupa lungimea sariturii. Se considera ca toate
fetele din clasa au prenumele terminat cu litera a.

#include<fstream.h>
#include<string.h>
struct elev
{ char nume[40],prenume[40];
float lung;};
elev a[100];
ifstream f("sarituri.in");
ofstream g1("baieti.out");
ofstream g2("fete.out");
void citire(elev &e)
{ f>>e.nume>>" ">>e.prenume>>" ">>e.lung;}
void afisare(elev e)
{ if(e.prenume[strlen(e.prenume)-1]=='a')
g2<<e.nume<<" "<<e.prenume<<" "<<e.lung<<endl;
else g1<<e.nume<<" "<<e.prenume<<" "<<e.lung<<endl;}
void ordonare(elev a[100],int n)
{ int i,gata;
elev aux;
do
{ gata=1;
for(i=1;i<n;i++)
if(a[i].lung<a[i+1].lung)
{ aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
gata=0; }
}
while(gata==0);}
int main(){
int n,i;
f>>n;
for(i=1;i<=n;i++)
citire(a[i]);
ordonare(a,n);
for(i=1;i<=n;i++)
afisare(a[i]);
f.close(); g2.close(); g1.close();
return 0;}

4. Se citeste un vector de inregistrari care simuleaza elevii unei clase. Se va folosi pentru
retinerea datei nasterii elevului tipul innregistrare imbricata. Sa se afiseze elevii sortati
crescator dupa nume.
#include<iostream.h>
#include<string.h>
struct elev
{ char nume[20],prenume[20];
struct
{ int zi,luna,an; }data;
float mate,info,engleza,media;
};
elev e[10];
main()
{ unsigned i,n,j;
char aux[20];
cout<<"Cati elevi sunt in clasa ? "; cin>>n;
for(i=1;i<=n;i++)
{ cout<<"nume: "; cin>>e[i].nume;
cout<<"prenume: "; cin>>e[i].prenume;
cout<<"zi: "; cin>>e[i].data.zi;
cout<<"luna: "; cin>>e[i].data.luna;
cout<<"an: "; cin>>e[i].data.an;
cout<<"nota mate: "; cin>>e[i].mate;
cout<<"nota info: "; cin>>e[i].info;
cout<<"nota engleza: "; cin>>e[i].engleza;
e[i].media=(e[i].mate+e[i].info+e[i].engleza)/3;
}
for(i=1;i<=n;i++)
{ cout<<i<<"."<<e[i].nume<< " "<<e[i].prenume<<endl;
cout<<"Media elevului "<<e[i].nume<<" "<<e[i].prenume<<" este "<<e[i].media<<endl;
cout<<"Data de nastere a elevului "<<e[i].nume<<" "<<e[i].prenume<<" este
"<<e[i].data.zi<<"."<<e[i].data.luna<<"."<<e[i].data.an<<endl<<endl;
}
for(i=1;i<n;i++)
for(j=i+1;i<=n;j++)
if(e[i].nume>e[j].nume)
{ strcpy(aux,e[i].nume);
strcpy(e[i].nume,e[j].nume);
strcpy(e[j].nume,aux); }
// {// aux=e[i].nume; e[i].nume=e[j].nume; e[j].nume=aux; }
for(i=1;i<=n;i++)
cout<<i<<e[i].nume<<" "<<e[i].prenume<<endl;

5.Se citesc datele despre elevii unei clase, respectiv numele şi data naşterii. Să se ordoneze elevii
în ordinea crescătoare după data naşterii şi să se afişeze această situaţie.
# include <iostream.h>
void main()
{struct data
{
int zi,luna,an;
};
struct elev
{
char nume[20];
data datan;
};
int n,i,j;
elev e[30],x;
cout<<"Nr. de elevi:";cin>>n;
for(i=1;i<=n;i++)
{cin.get();cout<<"Elevul "<<i<<endl;
cout<<"nume: ";cin.get(e[i].nume,20);cin.get();
cout<<"zi: ";cin>>e[i].datan.zi;
cout<<"luna: ";cin>>e[i].datan.luna;
cout<<"an: ";cin>>e[i].datan.an;}
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(e[i].datan.an>e[j].datan.an)
{x=e[i];e[i]=e[j];e[j]=x;}
else
if(e[i].datan.an==e[j].datan.an)
if(e[i].datan.luna>e[j].datan.luna)
{x=e[i];e[i]=e[j];e[j]=x;}
else
if(e[i].datan.luna==e[j].datan.luna)
if(e[i].datan.zi>e[j].datan.zi)
{x=e[i];e[i]=e[j];e[j]=x;}
for(i=1;i<=n;i++)
cout<<e[i].nume<<" "<<e[i].datan.an<<" "<<e[i].datan.luna<<" "<<e[i].datan.zi<<endl;
}

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