Skip to content

varianta 12 bacalaureat informatica 2007

1) Fisierul text bac.txt contine prenumele elevilor unei clase, cate un prenume pe o linie a fisierului.Scrieti un program eficient care afiseaza pe ecran numarul de caractere ale celui mai lung prenume prcum si numarul prenumelor cu aceasta lungime.

#include<fstream.h>
#include<string.h>
ifstream f(“bac.txt”);
char c[20];
int max,nr;
void citire()
{
nr=1;
max=0;
while(f>>c)
{
if(strlen(c)==max)
nr++;
if(strlen(c)>max)
{
nr=1;
max=strlen(c);
}
}
}
void main()
{
citire();
cout<<max<<” “<<nr;
}

2)Se citesc de la tastatura 2 valori naturale m si n (m,n ;=100) si apoi m*n numere intregi mai mici de 32000 reprezentand elementele unei matrici cu m linii si n coloane.Se cere sa se determine valorile maxime de pe fiecare linie a matricii si sa se scrie pe ecran suma lor.

#include<iostream.h>
int m,n,i,j,a[101][101],suma,s[101];
void main()
{
cin>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(a[i][j]>s[i])
s[i]=a[i][j];
for(i=1;i<=m;i++)
suma+=s[i];
cout<<suma;
}

3)O lista liniara simla alocata dinamic contine in fiecare nod al sau, in campul info o valoare reala, iar in campul adr, adresa urmatorului nod din lista.Definiti tipurile de date corespunzatoare listei si scrieti apoi definitia completa a subprogramului modif, care primeste ca parametru adresa primului nod al unei liste cu minimum doua elemente, si care insereaza intre oricare doua noduri consecutive din lista, un nou nod care va contine in campul info, media aritmetica a valorilor memorate in nodurile vecine.De exemplu, daca lista cintine initial, in ordine, valorile 5 9 12 6, dupa prelucrare lista va contine, in ordine, valorile 5 7 9 10.5 12 9 6.

#include<iostream.h>
struct nod {
float info;
nod *adr;
};
nod *p,*q,*u,*q2;
int n;
void creare()
{
p=new nod;
cout<<“dati inf: “;cin>>p->info;
p->adr=NULL;
u=p;
for(int i=2;i<=n;i++)
{
q=new nod;
cout<<“dati inf: “;cin>>q->info;
u->adr=q;
q->adr=NULL;
u=q;
}
}
void adaugi(int val,float med)
{
nod *r=p;
while(r->adr->info != val)
r=r->adr;
q=new nod;
q->info=med;
q->adr=r->adr;
r->adr=q;
}

void modif()
{
for(q=p;q->adr!=NULL;q=q->adr)
{
float nr;
nr=(q->info+q->adr->info)/2;
adaugi(q->adr->info,nr);
}
}    

void afis()
{
for(q=p;q;q=q->adr)
cout<<q->info<<” “;
}
void main()
{
cin>>n;
creare();
afis();
cout<<endl;
modif();
afis();
}

Leave a Reply

Your email address will not be published. Required fields are marked *