|
varianta 15 bacalaureat informatica 2007
Varianta 15 bacalaureat informatica 2007
Cerinte si rezolvari
1.Se citesc de la tastatura doua siruri de caractere formate din cel mult 50 de litere fiecare.Sa se afiseze pe ecran sirul format pri preluarea alternativa, din fiecare sir, a cate unei litere (prima litera a primului sir, apoi prima litera a celui de-al doilea sir, apoi a doua litera a primului sir, apoi a doua litera a celui de-al doilea sir etc).Cand se epuizeaza literele din unul din siruri, se vor prelua toate literele ramase din celalat sir.
Daca se citesc sirurile ABC si MNPXTRB se va sfisa sirul AMBNCPXTRB
REZOLVARE
#include<iostream.h>
#include<string.h>
char a[50],b[50],c[100];
int i,j,k,t,t1,t2,y,k2;
void f()
{
for(i=0;i<strlen(a)+strlen(b);i++)
c[i]='a';
if(strlen(a)<strlen(b))
{
int l=strlen(a);
for(i=0;i<l;i++)
{
c[2*i]=a[i];
c[2*i+1]=b[i];
}
for(i=l;i<strlen(b);i++)
c[i+l]=b[i];
}
else
{
int l=strlen(b);
for(i=0;i<l;i++)
{
c[2*i]=a[i];
c[2*i+1]=b[i];
}
for(i=l;i<strlen(a);i++)
c[i+l]=a[i];
}
}
void main()
{
cin>>a;
cin>>b;
f();
cout<<c;
}
2.Se citeste de la tastatura un numar natural n (n<=100) si apoi n numere din multimea {1,2,3}.Se cere sa se afiseze cele n valori in ordine crescatoare. a)descrieti pe scurt un algoritm de rezolvare a problemei, eficient din punct de vedere al spatiului de memorie utilizat si al timpului de executare. b)scrieti programul corespunzator Exemplu: pentru n=19 si valorile 3 3 3 3 2 1 2 1 3 2 1 3 2 1 1 3 3 2 3 se va afisa pe ecran sirul 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 3 3
REZOLVARE
#include<iostream.h>
int a[101],i,x,n;
void citire()
{
cin>>n;
i=1;
while(i<=n)
{
i++;
cin>>x;
a[x]++;
}
}
void main()
{
citire();
for(i=1;i<=a[1];i++)
cout<<"1 ";
for(i=1;i<=a[2];i++)
cout<<"2 ";
for(i=1;i<=a[3];i++)
cout<<"3 ";
}
3.Prima linie a fisierului BAC.txt contine doua numere naturale m si n iar urmatoarele linii cate n numere intregi cu maxim 4 cifre fiecare, separate prin cate un spatiu.Se cere sa se afiseze pe ecran cate din cele m linii din fisier sunt simetrice.Spunem ca o linie a fisierului este simetrica daca egal departate de capetele liniei respective sunt egale (primul element de pe linie este egal cu ultimul element al liniei, al doilea cu penultimul etc.) REZOLVARE
#include<fstream.h>
ifstream f("bac.txt");
int a[101][101],i,j,k,m,n,ok;
void citire()
{
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
}
void f()
{
for(i=1;i<=m;i++)
{
ok=1;
for(j=1;j<=n;j++)
{
if(a[i][j]!=a[i][n-j+1])
ok=0;
}
if(ok==1)
k++;
}
}
void main()
{
citire();
f();
cout<<k;
}