miercuri, 22 mai 2013

Rezolvari




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 (1n10), 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 (150, 1n50) ş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




Niciun comentariu:

Trimiteți un comentariu