BACALAUREAT INFORMATICA 2007
VARIANTA 13
SUBIECTUL III
1. Se citesc de la tastatura doua valori naturale m si n iar apoi m+n numere intregi de cel mult 9 cifre fiecare.Dintre cele m+n numere citite primele m sunt ordonate strict crescator, iar urmatoarele n sunt de asemenea ordonate strict crescator. Se cere sa se afiseze pe ecran care din cele m+n numere au fost citite de doua ori. De exemplu m=7 si n=10 si valorile 1,2,3,4,5,6,20,3,5,7,8,9,10,12,20,24,35 se vor afisa valorile 3 5 20.
#include<iostream.h>
int a[101],b[101],i,j,m,n,k;
void f()
{
cin>>m>>n;
for(i=1;i<=m+n;i++)
{
cin>>a[i];
for(j=1;j<i;j++)
if(a[j]==a[i])
{
k++;
b[k]=a[i];
}
}
for(i=1;i<=k;i++)
cout<<b[i]<<” “;
}
void main()
{
f();
}
2. Scrieti un subprogram cnt care primeste prin singurul parametru a adresa primului element al unei liste liniare simplu inlantuite, alocata dinamic. Se stie ca fiecare element ala acestei liste contine doua campuri de informatie x si y, reprezentand coordonatele reale ale unui punct in plan si un camp urm in care se memoreaza adresa urmatorului element din lista. Subprogramul va afisa pe ecran numarul de puncte aflate pe axa OX. Se stie ca punctele sunt distincte.
#include<iostream.h>
struct nod {
int inf1,inf2;
nod *urm;
};
nod *p,*q,*u;
int n;
void creare()
{
p=new nod;
cout<<“dati inf1: “;cin>>p->inf1;
cout<<“dati inf2; “;cin>>p->inf2;
p->urm=NULL;
u=p;
for(int i=2;i<=n;i++)
{
q=new nod;
cout<<“dati inf1: “;cin>>q->inf1;
cout<<“dati inf2; “;cin>>q->inf2;
u->urm=q;
q->urm=NULL;
u=q;
}
}
void cnt(nod *&a)
{
int ok=0;
for(q=a;q;q=q->urm)
if(q->inf2==0)
ok++;
cout<<ok;
}
void main()
{
cin>>n;
creare();
cnt(p);
}
3. Pe prima linie a fisierului bac.txt se gaseste un cuvant de exact 9 litere mici ale alfabetului englez. Pe a doua linie a fisierului se gaseste o cifra nenula k. Se cere sa se scrie un program care afiseaza pe ecran, de k ori, cel de al k-lea caracter de pe prima linie a fisierului bac.txt. De exemplu, daca fisierul are urmatorul continut:
algoritmi
5
se va afisa pe ecran: rrrrr
#include<fstream.h>
#include<string.h>
ifstream f(“bac.txt”);
char c[9];
int k,i;
void main()
{
f>>c;
f>>k;
for(i=0;i<k;i++)
cout<<c[k-1];
}