Probleme
pentru atestat 2012
Programare
1. Sa se scrie un program care
calculeaza „cifra de control” a unui
numar întreg efectuând suma
cifrelor
sale, apoi suma cifrelor acestei sume etc. pâna se obţine o suma formata
dintr-o singura
cifra.
Ex.
Cifra de control a numarului 1971 este 9 ( 1971 -> 18 ->9).
#include<iostream>
using namespace std;
int suma(int n);
int main()
{int n;
cin>>n;
while(n>9)
n=suma(n);
cout<<n;
}
int suma(int n)
{int s=0;
while(n)
{s=n%10+s;
n/=10;
}
return s;
}
2. Să se calculeze suma elementelor de
pe diagonala principală şi diagonala secundară dintr-o matrice pătrată, două
câte două începând cu primele elemente de pe fiecare diagonală şi să se afişeze
valoarea minimă şi valoarea maximă din sumele astfel obţinute. De exemplu:
2
|
5
|
9
|
1
|
4
|
2
|
7
|
3
|
6
|
4
|
5
|
7
|
3
|
9
|
4
|
2
|
S1=2+1, s2=2+7, s3=4+5, s4=3+2; min=3,
max=9.
#include<iostream>
using namespace std;
int main()
{int a[10][10],i,j,n,min,max,s;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
min=a[1][1]+a[1][n];
max=a[1][1]+a[1][n];
cout<<max<<" ";
for(i=2;i<=n;i++)
{s=a[i][i]+a[i][n-i+1];
cout<<s<<'
';
if(min>s)min=s;
if(max<s)max=s;}
cout<<min<<"
"<<max;
}
3. Să se introducă de la tastatură un
şir de caractere din care să se elimine spaţiile şi apoi să se verifice dacă
şirul de caractere obţinut este de tip palindrom, adică citit de la stânga la
dreapta are acelaşi înţeles cu cel citit de la dreapta la stânga. De exemplu:
Sir=”O rama maro” devine „oramamaro”.
#include<iostream>
#include<string>
using namespace std;
int main()
{char s[30],a[30];
int i,j=0;
cin.get(s,30);
for(i=0;i<=strlen(s)-1;i++)
if(s[i]!='
'){a[j]=s[i];j++;}
cout<<a<<endl;
if(strcmp(a,strrev(a))==0)cout<<"Palindrom";
}
4. Să se verifice dacă o matrice pătrată
este „tablou magic”. Într-un tablou magic suma elementelor de pe fiecare linie
este egală cu suma elementelor de pe fiecare coloană precum şi cu suma
elementelor de pe fiecare din cele două diagonale. De exemplu:
3
|
2
|
7
|
8
|
4
|
0
|
1
|
6
|
5
|
# include<iostream>
using namespace std;
int main()
{int a[10][10],i,j,n,s[50],k=0;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
{s[++k]=0;
for(j=1;j<=n;j++)
s[k]+=a[i][j];
}
for(j=1;j<=n;j++)
{s[++k]=0;
for(i=1;i<=n;i++)
s[k]+=a[j][i];
}
s[++k]=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)
s[k]+=a[i][j];
s[++k]=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i+j==n+1)
s[k]+=a[i][j];
for(i=1;i<=k-1;i++)
if(s[k]!=s[k+1])
break;
if(i<k-1)cout<<"Nu este
patrat magic";
else cout<<" este patrat
magic";}
5. Se citeşte de la tastatură un şir de
caractere. Se cere să se afişeze cel mai lung subşir( cuvânt) din şirul de
caractere citit. De exemplu:
Sir=”Ana are mere.”; subsir=”mere” are
un numar maxim de 4 caractere.
#include<iostream>
#include<string>
using namespace std;
int main()
{char s[50];
unsigned int i,k=0,max=0,b;
cin.get(s,50);
for(i=0;i<strlen(s);i++)
if(s[i]>='A'&&
s[i]<='z')k++;
else
{if(k>=max)
{max=k;
b=i;}
k=0;
}
for(i=b-max;i<b;i++)
cout<<s[i];
}
6. Se citesc de la tastatură două şiruri
de caractere. Să se elimine din fiecare şir caracterele care sunt comune celor
două şirui şi să se afişeze alipirea celor două şiruri astfel obţinute. De
exemplu:
Sir1=”implementare”, sir2=”informatica”
şi se obţine sir=”pleeefoc”.
#include<iostream>
#include<string>
using namespace std;
int main()
{char a[20],b[20], c[20];
unsigned int i, j, s, k=0;
cin>>a>>b;
for(i=0;i<=strlen(a)-1;i++)
{s=0;
for(j=0;j<=strlen(b)-1;j++)
if(a[i]==b[j])s++;
if(s==0){c[k]=a[i];
k++;}}
for(i=0;i<=strlen(b)-1;i++)
{s=0;
for(j=0;j<=strlen(a)-1;j++)
if(b[i]==a[j])s++;
if(s==0){c[k]=b[i];
k++;}}
for(i=0;i<=k-1;i++)cout<<c[i];}
7. Sa se afişeze toate numerele prime de
trei cifre care citite invers, sunt tot numere prime.
Ex. Un astfel de numar este 761 (761
este prim şi 167 este tot prim).
#include<iostream>
using namespace std;
int prim(int n)
{int d,ok=1;
for(d=2;d<=n/2;d++)
if(n%d==0){ok=0;break;}
return
ok;}
int main()
{int i,j;
for(i=100;i<=999;i++)
if(prim(i)==1)
{j=(i%10)*100+((i/10)%10)*10+i/100;
if(prim(j)==1)cout<<i<<"
"<<j<<endl;
}}
8. Se spune ca
n este deosebit daca exista un numar natural m astfel încât n=m+S(m),
unde S(m) este suma cifrelor lui m. Sa
se scrie un program care verifica daca un numar natural n dat este
deosebit.
Ex. 1235 este deosebit
(1235=1225+10).
#include<iostream>
using namespace std;
int sc(int x)
{int s=0;
while(x!=0)
{s+=x%10;
x/=10;}
return s;}
int main()
{int n;
cin>>n;
if(n-sc(n)>0)cout<<”DA”;
else cout<<”NU”;}
9.
Sa se determine daca doua numere naturale date sunt termeni consecutivi
ai şirului Fibonacci.
Ex. 55 şi 89 sunt termeni consecutivi în
şirul Fibonacci.
#include<iostream>
using namespace std;
int fibo(int a,int b)
{if(a==1&&b==1) return 1;
else if(a>b) return 0;
else
return fibo(b-a,a);
}
int main()
{int a,b;
cin>>a>>b;
if(fibo(a,b)==1)cout<<”DA”;
else
cout<<”NU”;
}
10.
Se numesc numere „super prime”, acele numere ale caror prefixe sunt
toate numere prime. Sa se verifice daca un numar este „super prim” şi sa se afişeze prefixele sale în acest
caz.
Ex: 239 este super prim deoarece 2, 23
şi 239 sunt prime.
#include<iostream>
using namespace std;
int prim(int n)
{int d,ok=1;
for(d=2;d<=n/2;d++)
if(n%d==0){ok=0;break;}
return
ok;}
int main()
{int n,c=1,a;
cin>>n;a=n;
while(n&&c==1)
if(prim(n)==0)c=0;
else n/=10;
if(n==0)while(a){cout<<a<<endl;
a/=10;}}
11.
Se da n numar natural. Sa se afişeze cel mai apropiat numar prim făţă de
n. Programul va conţine cel puţin un
subprogram.
#include<iostream>
using namespace std;
int prim(int n)
{int d,ok=1;
for(d=2;d<=n/2;d++)
if(n%d==0){ok=0;break;}
return
ok;}
int main()
{int n,p,q,a=1;
cin>>n;
p=n;q=n;
while(a==1)
{if(prim(p)==1){a=0;cout<<p;}
else
{p--;if(prim(q)==1){a=0;cout<<q;}
else
q++;}}
}
12.
Sa se verifice daca un vector dat este o mulţime (în sensul cunoscut din
matematica), iar daca nu este, sa se
transforme acest vector în mod corespunzator.
Ex. Vectorul x=(1, 2, 9, 4, 2, 6, 5, 1,
20, 3) nu este o mulţime. Dupa transformarea acestuia se obţine mulţimea x=(1, 2, 9, 4, 6, 5, 20, 3).
#include<iostream>
using namespace std;
int main()
{int j,i,v[20],n,aux,ok=1;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(v[i]>v[j]){aux=v[i];
v[i]=v[j];
v[j]=aux;}
for(i=1;i<=n&&ok==1;i++)
if(v[i]==v[j])ok=0;
if(ok==1)cout<<"e
multime";
else
cout<<"nu e multime";
}
13. Se citesc de la tastatura doi
vectori cu elemente numere întregi de dimensiune n, respectiv m. Sa se
afişeze câte elemente din al doilea
vector sunt strict mai mici decât toate elementele din primul vector.
#include<iostream>
using namespace std;
int main()
{int a[100],b[100],i,n,m,min,c=0;
cin>>n>>m;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=m;i++)
cin>>b[i];
min=a[1];
for(i=2;i<=n;i++)
if(min>a[i])min=a[i];
for(i=1;i<=m;i++)
if(b[i]>min)c++;
if(c>0)cout<<"Toate";}
14.
Se considera un
vector cu n componente. Ştiind ca
el conţine doua
subsecvenţe de
numere
ordonate crescator, sa se
ordoneze întregul vector prin interclasarea celor doua
subsecvenţe.
#include<iostream>
using namespace std;
void main()
{
int i,j,k,n,m,a[50],b[50],c[100];
cin>>n;
cin>>m;
for(i=0;i<n;i++) {
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(j=0;j<m;j++) {
cout<<"b["<<j<<"]=";
cin>>b[j];
}
i=0; j=0; k=0;
while(i<n && j<m) {
if(a[i]<b[j]) {
c[k]=a[i];
i=i+1;
}
else {
c[k]=b[j];
j=j+1;
}
k=k+1;
}
if(i<n)
while(i<n) {
c[k]=a[i];
k=k+1; i=i+1;
}
else
while(j<m) {
c[k]=b[j];
k=k+1; j=j+1;
}
for(k=0;k<n+m;k++)
cout<<c[k]<<"
";
cout<<endl;
}
15.
Fie v un vector de numere întregi. Sa se construiasca un vector w,
astfel încât w[i]=numarul de
apariţii ale lui v[i] în vectorul v. Sa se afişeze cei doi
vectori, fiecare pe câte o linie.
Ex. Pentru v=(1, 5, 2, 1, 5, 7, 2, 1, 5) se
obţine w=(3, 3, 2, 3, 3, 1, 2, 3, 3).
#include<iostream>
using namespace std;
int main()
{int a[100],b[100],i,n,j,c;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=n;i++)
{c=0;
for(j=1;j<=n;j++)
if(a[i]==a[j])c++;
b[i]=c;}
for(i=1;i<=n;i++)
cout<<b[i]<<" ";}
16.
Sa se construisca o matrice A cu n linii
şi n coloane ce se completeaza cu termenii şirului lui Fibonacci. Completarea se va face pe linii. Nu se vor folosi structuri de date
auxiliare.
Ex.
Pentru n=3 se va afi a matricea :
1
1 2
3
5 8
13
21 34.
#include<iostream>
using namespace std;
int n;
int fib(int n)
{if(n==1)return 1;
else
if(n==2)return 1;
else
return fib(n-1)+fib(n-2);}
int main()
{int a[100][100],i,m,j,n=1;
cin>>m;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
{a[i][j]=fib(n);
n++;}
for(i=1;i<=m;i++)
{for(j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}}
17.
Se da o matrice de ordinul n. Se considera ca diagonalele sale împart
matricea în 4 zone: nord, sud, vest
şi est. Se cere sa se calculeze
suma elementelor impare din zona de nord a matricei.
#include<iostream>
using namespace std;
int main()
{int a[100][100],i,n,j,s=0;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{cin>>a[i][j];
if(a[i][j]%2==1&&i<j&&i+j<n+1)
s+=a[i][j];}
cout<<s;}
18.
Se citeşte de la tastatura un
cuvânt de lungime cel mult 20 de caractere, format numai din
litere mari. Sa se afişeze toate cuvintele distincte ce se
pot forma prin eliminarea câte unui singur
caracter din cuvântul dat.
Ex. Pentru cuvântul BINE se vor
afişa, nu neaparat în aceasta ordine, cuvintele: INE, BNE, BIE, BIN.
#include<iostream>
#include<string>
using namespace std;
int main()
{char a[20];
unsigned i,j;
cin>>a;
for(i=0;i<=strlen(a)-1;i++)
{for(j=0;j<=strlen(a)-1;j++)
if(i!=j)cout<<a[j];
cout<<endl;}}
19.
Se citeşte de la tastatura un text, precum şi doua cuvinte c1 şi c2. Sa se înlocuiasca în text toate
apariţiile cuvântului c1 cu cuvântul c2,
iar apoi sa se tipareasca noul text obţinut.
#include<iostream>
#include<string>
using namespace std;
int main()
{char s[251],S[251],s1[25],s2[25],*pt;
unsigned int u,i,p;
cin.get(s,250);
cin.get();
cin.get(s1,24);
cin.get();
cin.get(s2,24);
do{pt=strstr(s,s1);
if(!pt){for(i=u;i<strlen(s);i++)
strncat(S,s+i,1);break;}
p=pt-s;
for(i=u;i<p;i++)S[i]=s[i];
for(i=p;i<p+strlen(s1);i++)
s[i]='!';
for(i=p;i<p+strlen(s2);i++)
strncat(S,s2+i-p,1);
u=p+strlen(s1);}while(1);
puts(S);
}
20.
Scrieţi un program
care citeşte de
la tastatura doua
numere naturale n, m
şi scrie
în fişierul text
‘DATE.TXT’ toate numerele prime din intervalul deschis (n,m). Numerele
se scriu în ordine crescatoare, câte 10
numere pe fiecare linie a fişierului, numerele dintr-o linie fiind desparţite
între ele prin câte un spaţiu.
Ex. Pentru n=87 şi m=241, fişierul DATE.TXT va conţine :
89 97 101 103 107 109 113 127 131 137
139 149 151 157 163 167 173 179 181 191
193 197 199 211 223 227 229 233 239 .
#include<iostream>
using namespace std;
int prim(int n)
{int d,ok=1;
for(d=2;d<=n/2;d++)
if(n%d==0){ok=0;break;}
return
ok;}
int main()
{int n,m,i,k=1;
cin>>n>>m;
for(i=n+1;i<m;i++)
{if(prim(i)==1){cout<<i<<"
";k++;}
if(k==11){cout<<endl;k=1;}
}}
21.
Pentru un numar natural n dat sa se construiasca recursiv triunghiul de
numere ca în exemplul de mai jos :
1
1
2
1
2 3
1
2 3 4
.....................
1
2 3 4 ... n
#include<iostream>
using namespace std;
int main()
{int n,i,j;
cin>>n;
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
cout<<j<<"
";
cout<<endl; }}
22.
Câte cifre comune au doua numere citite de la tastaturǎ ?
Afisati care sunt aceste cifre.
Ex. Numerele 21348 si 14513 au 3 cifre comune si anume 1, 3, 4.
#include<iostream>
using namespace std;
int main()
{int n,m,i,k,t,x,y,s=0;
cin>>n>>m;
for(i=0;i<=9;i++)
{k=0;t=0;x=n;y=m;
while(x&&k==0)
if(x%10==i)k=1;
else
x/=10;
while(y&&t==0)
if(y%10==i)t=1;
else
y/=10;
if
(k==1&&t==1){cout<<i<<" ";s++;}
}
cout<<s;}
23. Se da un vector cu n elemente numere
reale. Sa se introduca intre oricare doua elemente media lor aritmetica
(fara a folosi alt vector).
#include<iostream>
using namespace std;
int main()
{float m,v[100];
int n,i,j;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
i=1;
while(i<=n)
{m=(v[i]+v[i+1])/2;
n++;
for(j=n-1;j>i;j--)
v[j+1]=v[j];
v[i+1]=m;
i=i+2;
}
cout<<n<<endl;
for(i=1;i<=n-1;i++)
cout<<v[i]<<" ";
}
24. Sǎ se verifice dacǎ un vector contine
elemente în ordinea : negativ, negativ, pozitiv, negativ, negativ,
pozitiv,… .
Ex. Vectorul (-1, -2, 3, -5, -6, 2, -8) are aspectul cerut.
Vectorul (-1, 2, -3, -4)
nu are aspectul dorit.
20. Fie un vector cu n elemente numere
intregi. Sa se afle si afiseze cele mai mici trei elemente din vector
(fara sa se schimbe ordinea elementelor).
21. Scrieţi un program care citeşte de la tastatură două numere
naturale n şi m
(2≤m≤10, 2≤n≤10) şi care construieşte în
memorie şi apoi afişează o matrice A cu n linii (numerotate de la 1 la n) şi m
coloane (numerotate de la 1 la m) cu proprietatea că fiecare
element Aij memorează cea mai mare
dintre valorile indicilor i şi j (1≤i≤n, 1≤j≤m).
Matricea se va afişa pe ecran, câte o
linie a matricei pe câte o linie a ecranului, elementele
fiecărei linii fiind separate prin câte
un spaţiu.
Exemplu: pentru n=4 şi m=5 se va afişa
matricea alăturată.
1 2 3 4 5
2 2 3 4 5
3 3 3 4 5
4 4 4 4 5
22. 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ă.
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
23. Scrieţi un program care citeşte de la tastatură un şir de cel
mult 50 de caractere (litere mici şi mari ale alfabetului englez, cifre şi
spaţii), determină şi afişează pe ecran câte litere mari, câte litere mici şi
câte caractere nu sunt litere în şirul citit.
Exemplu: dacă se citeşte şirul: Voi lua
9 la matematica si 10 la informatica atunci se va afişa:
1 32 11.
24. Scrieţi programul PASCAL care
citeşte de la tastatură un număr natural n (1n10), apoi
n*n numere întregi, mai mici decât
32000, reprezentând elementele unui tablou bidimensional cu n linii şi n
coloane, şi care determină şi afişează pe ecran ultima cifră a produsului
numerelor pare de pe diagonala principală a tabloului sau mesajul imposibil dacă
nu există numere pare.
25. Scrieţi un program care citeşte de
la tastatură numerele întregi m şi n (150, 1n50) şi elementele unui tablou
bidimensional cu m linii şi n coloane, numere întregi distincte de cel mult 4
cifre fiecare, şi elimină din tablou, la nivelul memoriei, linia şi coloana
corespunzătoare elementului de valoare minimă. Programul va afişa tabloul
obţinut pe ecran pe m-1 linii, elementele fiecărei linii fiind separate prin
câte un spaţiu.
Exemplu: pentru m=3 şi n=4 şi tabloul de
mai jos
2 7 1 4
14 6 12 3
9 22 8 5
Pe ecran se va afişa:
14 6 3
9 22 5
26. Scrieţi un program care citeşte de
la tastatură un şir având maximum 30 de caractere şi afişează pe ecran mesajul
DA în cazul în care şirul conţine numai litere şi spaţii,iar în caz contrar
afişeză mesajul NU.
Exemplu: dacă se citeşte de la tastatură
şirul:
Ana, Bogdan au 18 ani.
atunci programul va afişa mesajul Nu.
27. Scrieţi un program care citeşte de
la tastatură un text format din cel mult 200 de litere ale alfabetului englez,
în care cuvintele sunt separate printr-un singur spaţiu şi afişează pe ecran
numărul de cuvinte din textul citit, care au prima, respectiv ultima literă,
vocală. În cazul în care în text nu există un astfel de cuvânt, se va afişa pe
ecran mesajul NU EXISTA. Se consideră vocală orice literă din mulţimea
{a,A,e,E,i,I,o,O,u,U}.
Exemplu: dacă textul introdus este:
Eratostene a sugerat ca anii bisecti se
repeta la fiecare patru ani
pe ecran se va afişa :
28. Scrieţi un program care citeşte de la tastatură un număr natural
n (2<n<10) şi care construieşte în memorie şi afişează pe ecran un tablou
bidimensional cu n linii şi n coloane astfel încât parcurgându-l linie cu linie
de sus în jos şi fiecare linie de la stânga la dreapta se obţin primele n2 numere
pare nenule în ordine strict crescătoare, ca în exemplu. Exemplu: pentru n=4,
se construieşte şi se afişează tabloul alăturat.
2 4 6 8
10 12 14 16
18 20 22 24
26 28 30 32
4
29. Scrieţi un program care citeşte de la tastatură o frază de
maximum 255 de caractere (litere mari ale alfabetului englez şi spaţii), ale
cărei cuvinte sunt despărţite prin câte un spaţiu şi afişează pe primul rând al
ecranului numărul total al cuvintelor din frază, iar pe rândul următor de
ecran, în ordine alfabetică, scrise o singură dată, consoanele care au apărut
în frază (consoane sunt toate literele alfabetului englez, mai puţin A, E, I,
O, U). Literele afişate sunt separate prin câte un spaţiu.
Exemplu: dacă se citeşte fraza LA BACALAUREAT SUBIECTELE
AU FOST USOARE
se va afişa:
6
B C F L R S T
30. Scrieţi programul care citeşte de la
tastatură două valori naturale m şi n (1<m, n<51) şi construieşte în
memorie şi apoi afişează o matrice cu m linii, numerotate de la 1 la m, şi n
coloane, numerotate de la 1 la n; liniile matricei, două câte două, sunt
completate alternativ numai cu 0 sau numai cu 1, ca în exemplu. Astfel,
- elementele liniei 1 şi 2 sunt egale cu
0;
- elementele liniei 3 şi 4 sunt egale cu
1;
- elementele liniei 5 şi 6 sunt egale cu
0; şi aşa mai departe.
Matricea astfel obţinută se va afişa pe
ecran, câte o linie a matricei pe o linie a ecranului, cu câte un spaţiu între
elementele fiecărei linii.
Exemplu: pentru m = 7 şi n = 5 se va
afişa matricea alăturată.
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
31. Scrieţi un program care citeşte de
la tastură un număr natural n cu cel mult 8 cifre (n≥10) şi care creează
fişierul text NR.TXT ce conţine numărul n şi toate prefixele nenule ale
acestuia, pe o singură linie, separate prin câte un spaţiu, în ordine
descrescătoare a valorii lor.
Exemplu: pentru n=10305 fişierul NR.TXT
va conţine numerele:
10305 1030 103 10 1
32. Scrieţi programul care citeşte de la
tastatură două numere naturale nenule n şi k (n≤100, k≤100) şi afişează pe
ecran, în ordine descrescătoare, cei mai mici k multipli naturali nenuli ai
numărului n. Numerele afişate sunt separate prin câte un spaţiu.
Exemplu: pentru n=6 şi k=5 se afişează
30 24 18 12 6.
33. Fişierul text bac.in conţine pe
prima linie un număr natural n (0<n<5000), iar pe a doua linie, separate
prin câte un spaţiu, n numere naturale, formate din cel mult 4 cifre fiecare.
Scrieţi un program care determină şi
scrie în fişierul bac.out toate numerele de pe a doua linie a fişierului care
apar o singură dată pe această linie. Numerele determinate se vor afişa în
ordinea crescătoare a valorilor lor, separate prin câte un spaţiu.
Exemplu: dacă pe prima linie a
fişierului bac.in se află 10, iar pe linia a doua se găsesc numerele 2 4548 568
4548 57 89 5974 2 89 32 atunci valorile căutate sunt 32 57
568 5974.
34. Scrieţi un program Pascal care
citeşte de la tastatură un număr natural nenul n , (n<=100), apoi un şir de
n numere naturale distincte cu cel mult 4 cifre fiecare, şi afişează pe ecran
şirul şi cele n-1 şiruri ce se pot obţine prin permutările circulare, către
stânga, ale elementelor şirului. Fiecare şir se afişează pe câte o linie,
elementele şirului fiind separate prin câte un spaţiu.
Exemplu: dacă n=4 , iar şirul are
conţinutul alăturat 10 20 30 49, atunci se
vor afişa şirurile:
10 20 30 49
20 30 49 10
30 49 10 20
49 10 20 30
35. Scrieti programul Pascal /C++ care
construieste in memorie o matrice patratica de dimensiune n, formata numai din
valori 1 si 2 astfel: elementele de pe diagonala principala cat si cele de pe
diagonala secundara sa fie egale cu 1, iar restul elementelor sa fie egale cu
2. Valoarea lui n (n numar natural, 2<n<23) se citeste de la tastatura
iar matricea se va afisa pe ecran cate o linie a matricei pe cate o linie a
ecranului cu un spatiu intre elementele fiecarei linii.
Exemplu: n=4 1 2 2 1
2
1 1 2
2
1 1 2
1
2 2 1
36.
Scrieti un program care citeste de la tastatura un cuvant format din cel
mult 20 de litere mici ale alfabetului englez si care afiseaza mesajul DA daca
sirul e format dintr-un numar egal de consoane si vocale si respectiv NU in caz
contrar.
Exemplu:
bacalaureat: 6 vocale, 5 consoane à NU
37.
Se citesc de la tastatura 2 valori, numere naturale, m si n (n,m ≤ 100)
si apoi m∙n numere intregi mai mici decat 32.000 reprezentand elementele unei
matrici cu m linii si n coloane. Sa se afiseze in bac.out valorile maxime de pe
fiecare linie despartite printru-un spatiu.
Exemplu: m=3, n=5
bac.out:
1
9 3 4
7
9
6 12 5 10 à 9 12
7
5
2 7 1 3
38.
. Scrieţi un program Pascal care citeşte de la tastatură două numere
naturale nenule n şi m (2≤m≤10, 2≤n≤10) şi care construieşte în memorie şi apoi
afişează o matrice A cu n linii (numerotate de la 1 la n) şi m coloane
(numerotate de la 1 la m) cu proprietatea că fiecare element Aij memorează cea
mai mică dintre valorile indicilor i şi j (1≤i≤n, 1≤j≤m).
Matricea se va afişa pe ecran, câte o
linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind
separate prin câte un spaţiu.
Exemplu: pentru n=4 şi m=5 se va afişa
matricea alăturată.
1 1 1 1 1
1 2 2 2 2
1 2 3 3 3
1 2 3 4 4
39.
Scrieţi un program Pascal care citeşte de la tastatură un număr natural
nenul x si n numere intregi şi care
afişează pe ecran, separate prin câte un spaţiu, toate numerele care sunt divizibile cu X. Dacă nu
exista nici un astfel de număr, atunci
se va afişa pe ecran mesajul NU EXISTA.
Exemplu: dacă x=10, n=9 si numerele: 3 100 40 70 25 5 80 6 3798,
atunci pe ecran se va afişa: 100 40 70 80
40.
Scrieţi un program Pascal care citeşte de la tastatură un număr natural
n (2≤n≤24) şi construieşte în memorie o matrice cu n linii şi n coloane ale
cărei elemente vor primi valori după cum urmează:
- elementele aflate pe diagonala
principală a matricei vor primi valoarea 0
- restul elementelor primesc ca valoare
numarul liniei pe care se afla
Programul va afişa matricea astfel
construită 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 (ca în exemplu).
Exemplu: pentru n=4 se va afişa matricea
alăturată.
0 1 1 1
2 0 2 2
3 3 0 3
4 4 4 0