Sunteți pe pagina 1din 10

Probleme rezolvate C++

1.Scriei un program C/C++ care citete de la tastatura un numr natural n (2<n<21) si apoi n linii cu cate n numere ntregi de cel mult 7 cifre ce formea un ta!lou !idimensional a" Sa se afie e pe ecran diferena dintre suma elementelor de pe diagonala principala si suma elementelor de pe diagonala secundara a matricei a. #include<iostream.h> void main() {int n,i,j; long a[20 [20 ,s1!0,s2!0,d; cout<<"n!";cin>>n; #or(i!1;i<!n;i$$) {#or(j!1;j<!n;j$$) {cout<<"a["<<i<<" ["<<j<<" !";cin>>a[i [j ;%% #or(i!1;i<!n;i$$) {#or(j!1;j<!n;j$$) i#(i!!j) s1!s1$a[i [j ;%; #or(i!1;i<!n;i$$) {#or(j!1;j<!n;j$$) i#(i$j!!n$1) s2!s2$a[i [j ;% cout<<s1&s2; % '.Scriei programul C/C++ care citete de la tastatura un numr natural n (n<1##) si un sir cu n numere ntregi din inter$alul %1## &'''( & programul construiete un sir de numere re ultat prin nlocuirea fiecrui numr din irul citit cu numrul o!inut prin intersc)im!area cifrei unitatilor cu cifra sutelor" *umerele din noul sir se $or afia pe ecran separate printr+un singur spaiu" ,e e-emplu . pentru n/0 si irul 120 . '#1 . 2## . se afiea 021 . 1#' . 2" #include<iostream.h> void main() {int n,i,o,v[20 ,c; cout<<"n!";cin>>n; #or(i!1;i<!n;i$$) {cout<<"v["<<i<<" !";cin>>v[i ;% #or(i!1;i<!n;i$$) {o!0; c!v[i (10; o!o)10$c; v[i !v[i *10; c!v[i (10; o!o)10$c; v[i !v[i *10; o!o)10$v[i ; v[i !o; cout<<v[i <<endl; % % +.,oua ta!louri unidimensionale a si b . cu elementele a1 . a2 . 3 . an . respecti$ !1 . !2 . 3 !n sunt in relaia a<=b daca 4 a1</!1 . a2</!2 . 3 . an</!n" Scriei program in lim!a5ul C/C++ care citete doua ta!louri unidimensionale a si b cu acelai numr de elemente de tip ntreg si $erifica daca a<=b sau b<=a afi6nd un mesa5 adec$at"

#include<iostream.h> void main() {int a[10 ,i,n,j,,,au-,min; cout<<"n!";cin>>n; #or(i!1;i<!n;i$$) {cout<<"a["<<i<<" !";cin>>a[i ;% #or(i!1;i<!n&1;i$$) {min!a[i ; ,!i; #or(j!i$1;j<!n;j$$) i#(a[j <min) {min!a[j ; ,!j;% au-!a[, ; a[, !a[i ; a[i !au-;% #or(i!1;i<!n;i$$) cout<<a[i <<" ";% ..Scriei un program in lim!a5ul C/C++ care afiea toate numerele naturale formate din cifre identice . mai mari dec6t 10 si mai mici dec6t o $aloare data n. n</2"###"###" ,e e-emplu pentru n/1'2 . se afiea 4 11 . 22 . 00 . 11 . 22 . 77 . 77 . 88 . '' . 111" #include<iostream.h> int n,i; int identic(int n) {int d,c; c!n(10; /hile (n>0) {d!n(10; i#(d!!c) n!n*10; else return 0;% i#(n!!0) return 1;% void main() {cout<<"n!";cin>>n; #or (i!10;i<!n;i$$) {i#(identic(i)) cout<<i<<endl;%% 10.Scriei un program C/C++ care citete de la tastatura trei numere naturale x, y si k. (1<-<9<2######. :<1###) si afiea pe ecran k numere prime din inter$alul [x, y]" ,aca nu e-ista k numere prime n inter$alul [x,y] se $or afia toate numerele prime gsite iar pe linia urmtoare se $a afia mesa5ul ;s+au gsit mai puine numere prime4 < urmat de numrul acestora" ,e e-emplu. pentru -/0. 9/12 si :/2 se $or afia pe ecran4 0 2 7 11 s+au gsit mai puine numere prime41 #include<iostream.h> void main() {int -,0,,,n,d,a,1; cout<<"-!";cin>>-; cout<<"0!";cin>>0; cout<<",!";cin>>,; a!0; n!-; /hile ((n>!-)22(n<!0)22(a<,) ) {d!2;1!1;

/hile((d<!n*2)22(1!!1)) i#(n(d!!0) 1!0; else d$$; i#(1) {cout<<n<<endl;a$$;% n$$;% i#(a<,) cout<<"au #ost gasite mai 1utine nr 1rime"<<a;% 12.3crie4i un 1rogram 5*5$$ care cite6te din #i6ierul te-t BAC.TXT , cel mult 100 de numere naturale a#late 1e o singura linie, #ormate din cel mult 7 ci#re #iecare, se1arate 1rin s1atii si dintre acestea le a#i6ea89 1e ecran doar 1e acelea care au 1ro1rietatea de a #i 1alindrom. :aca nu se g9sesc numere 1alindrom, se va a#i6a 1e ecran valoarea 1. ;n num9r are 1ro1rietatea de a #i 1alindrom daca citit de la drea1ta la st<nga sau de la st<nga la drea1ta are aceea6i valoare. :e e-em1lu 1221 este 1alindrom, in tim1 ce 1210 nu este 1alindrom. =-em1lu > daca din #i6ierul BAC.TXT se citesc numerele > ?'+1 , .22. , @@0 , 2 , .0 , 1'1 , atunci 1e ecran se vor a#i6a > .2. , 2 , 1'1. #include<iostream.h> int 1alindrom(int n) {int co1ie!n,oglindit,c; oglindit!0; {/hile(nA!0) c!n(10; oglindit!oglindit)10$c; n!n*10;% return (co1ie!!oglindit);% void main() {int v[100 ,n,i,1; 1!0; cout<<"n!";cin>>n; #or(i!1;i<!n;i$$) {cout<<"v["<<i<<" !";cin>>v[i ;% #or(i!1;i<!n;i$$) i#(1alindrom(v[i )) {cout<<v[i ; 1!1;% i#(1!!0) cout<<"&1";% 14.Bentru orice num9r natural nenul n de#inim n factorial (notat nA) ca #iind 1rodusul tuturor numerelor naturale nenule mai mici sau egale cu n (nA ! 1)2)')C)n) :e e-em1lu > 'A!1)2)'!@ DA!1)2)')+)D!120 . 3crie4i un 1rogram 5*5$$ care determina num9rul de ci#re nule a#late 1e ultimele 1o8i4ii consecutive ale valorii oE4inute in urma evalu9rii lui n!, n #iind un num9r natural de cel mult + ci#re. :e e-em1lu daca n!10, nA!'@2..00 re8ultatul va #i 2 deoarece '@2..00 are dou9 8erouri la s#<r6it. #include<iostream.h> void main() {long int n,-!1,nr!0,c,1!1; cout<<"n!";cin>>n; #or(int i!1;i<!n;i$$) 1!1)i; /hile(-!!1) {c!1(10; i#(c!!0)

{nr!nr$1; 1!1*10;% else -!0;% cout<<nr;% 15.3crie4i un 1rogram 5*5$$ care cite6te din #i6ierul te-t DATE.IN cel mult 100 de numere naturale nenule a#late 1e o singura linie, #ormate din cel mult + ci#re #iecare, se1arate 1rin s1atii si scrie in #i6ierul DATE.OUT numerele, in ordinea inversa #ata de cea in care au #ost citite, 1e o singura linie se1arate 1rin s1atii. :e e-em1lu daca din #i6ierul DATE.IN se citesc numerele 7' 20? 1D 17.2 '?@2, atunci con4inutul #i6ierului DATE.OUT va #i '?@2 17.2 1D 20? 7'. #include<#stream.h> void main() {int n,i,v[100 ; #stream #("date.in",ios>>in); #stream g("date.out",ios>>out); #>>n; #or(i!1;i<!n;i$$) #>>v[i ; #or(i!n;i>0;i&&) g<<v[i ; #.close(); g.close();% 17.3crie4i un 1rogram 5*5$$ care cite6te de 1e 1rima linie a #i6ierului te-t BAC.TXT trei numere naturale a, b, c #ormate din cel mult 1atru ci#re #iecare, se1arate 1rin cate un s1a4iu si a#i6ea89 1e ecran cel mai mare divi8or comun al acestora. :e e-em1lu, daca din #i6ier se citesc numerele > 7 2? 1D, atunci se a#i6ea89 '. #include<iostream.h> int cmmdc (int -,int 0) {/hile (-A!0) i#(->0) else 0!0&-; return -;% void main() {int a,E,c,d; #stream("Eac.t-t";ios>>in); #>>a>>E>>c; #.close; d!cmmdc(a,E); cout<<cmmdc(c,d);% 1 .3crie4i un 1rogram care veri#ica daca un num9r natural !(1<,<100000) citit de la tastatura este 1rim. Brogramul va a#i6a 1e ecran mesajul :F sau mesajul G;; #include<iostream.h> int 1rim(int n) {int 1rim!1; #or(int d!2;d<!n*2;d$$) i#(n(d!!0) 1rim!0; i#(1rim) return 1; else return 0;% void main()

{int n; cout<<"n!";cin>>n; i#(1rim(n)) cout<<"da"; else cout<<"nu";% 21.3e considera #i6ierul te-t "at#.in care con4ine e-act 17 numere distincte #ormate #iecare din ma-im 2 ci#re. 3a se a#i6e8e in #i6ierul te-t "at#.o$t num9rul care li1se6te din #i6ierul "at#.in. #include<#stream.h> void main() {int v[100 ,n,i,j,1; #stream #("date.in",ios>>in); #stream g("date.out",ios>>out); #or(i!1;i<!17;i$$) #>>v[i ; #.close(); #or(i!10;i<!77;i$$) {1!1; #or(j!1;j<!17;j$$) i#(i!!v[j ) 1!0; i#(1) g<<i;% g.close();% 22.3e cite6te de la tastatura un num9r natural nenul n (n<1000). 3crie4i un 1rogram 5*5$$ care construie6te #i6ierul te-t bac.t%t care sa contina, 1e 1rima linie, to4i divi8orii lui n in ordine strict descresc9toare. :ivi8orii vor #i se1ara4i 1rin s1a4iu. :e e-em1lu, daca n!10 , atunci #i6ierul bac.t%t va con4ine > 10 , D , 2 , 1 #include<iostream.h> #include<#stream.h> void main() {int d,n; cout<<"n!";cin>>n; #stream g("Eac1.t-t",ios>>out); #or(d!n;d>!1;d&&) i#(n(d!!0) g<<d<<" "; g.close();% 25.3e cite6te de la tastatura un num9r natural nenul n care are cel mult 7 ci#re. 3a se a#i6e8e in #i6ierul Dat#.o$t num9rul !, natural, ast#el Hnc<t 1rodusul 1)2)C)(,&1)), sa aiE9 o valoare cat mai a1ro1iata de num9rul n. :e e-em1lu, daca se cite6te num9rul n!2D #i6ierul Dat#.o$t are urm9torul con4inut> +. iar daca se cite6te num9rul n!117 #i6ierul Dat#.o$t are urm9torul con4inut> D #include<iostream.h> #include<#stream.h> void main() {int ,,1,r,n; cout<<"n!";cin>>n; ,!1; #stream g("date.out",ios>>out); 1!1; /hile(1<!n) {1!1),;

,$$;% 1!1*(,&1); r!1),; i#((n&1)<!(r&n)) g<<"numarul , este "<<,&2; else g<<"numalul , este "<<,&1; g.close(); % 27.3crie4i un 1rogram care cite6te un num9r natural n>1 cu ma-imum 7 ci#re, si a#i6ea89 valoarea celui mai mic divi8or 1rim a lui n, 1recum si 1uterea la care acest divi8or a1are in descom1unerea in #actori 1rimi a num9rului n. #include<iostream.h> int n,1,c; void cmmd(int n) {int gasit!0,d!2; /hile((d<n*2)22(gasit!!0)) {i#(n(d!!0) {c!d; gasit!1;% else d$$;% 1!0; /hile(n(c!!0) {n!n*c; 1!1$1;%% void main() {cout<<"n!";cin>>n; cmmd(n); cout<<c<<" la 1uterea "<<1; % 2&.S se scrie un program care s calcule e i s afie e pe ecran produsul cifrelor pare i suma cifrelor impare a unui numr natural n citit de la tastatur" #include<iostream.h> unsigned int n, s, 1!1, c; void main() { cin>>n; /hile(n) { c!n(10; i#(c(2!!0) 1!1)c; else s!s$c; n!n*10; % cout<< 1 <<" "<< s; % 2 .Sa se $erifice daca doua cu$inte introduse de la tastatura (cu$intele a$6nd ma-im 2# de caractere fiecare) sunt rime. adic ultimele p caractere ale celor doua cu$inte coincid. unde p (2</p</1#) este dat"

#include<iostream.h> #include<string.h> char s1[D1 , s2[D1 ; int 1, -, 0, o,!0; void main() { cin>> s1>>s2>>1; -!strlen(s1)&1; 0! strlen(s2)&1; #or( int i!1;i<!1 22 o,!!0 ;i$$) { i#(s1[- A!s2[0 ) o,!1; -&&; 0&&; % i#(o,) cout<<"Gu sunt rime"; else cout<<"3unt rime"; % '(.Scriei un program care construiete o matrice ptrat de ordin n format din $alorile 1 si 2 astfel nc6t elementele de pe diagonala principala si secundar sa fie egale cu 1 iar restul elementelor cu 2" =aloarea lui n se citete de la tastatur4 n numr natural (2<20). iar matricea se $a afia pe ecran. cate o linie a matricei pe fiecare r6nd pe ecran cu spatii intre elementele fiecrei linii" Exemplu4 >ie n/2" Se $a afia4 12221 21212 22122 21212 12221 #include<iostream.h> int a[10 [10 , i, j, n; void main() { cin>>n; #or(int i!1;i<!n;i$$) #or(int j!1;j<!n;j$$) i#(i!!j II i$j!!n$1) a[i [j !1; else a[i [j !2; #or(i!1;i<!n;i$$) { #or(j!1;j<!n;j$$) cout<< a[i [j ; cout<< endl; % % '1.Scriei un program care citete de la tastatur un sir de cel mult 2# de caractere si construiete fiierul atestat"t-t ce conine irul si prefi-ele acestuia de lungime cel puin 1. fiecare pe cate o linie. in ordinea descresctoare a lungimii prefi-elor" Exemplu4 ,aca se citete irul ?pro!a@ atunci atestat"t-t $a conine4

pro!a pro! pro pr p #include<#stream.h> #include<string.h> char s[D1 ; int n; void main() { cin>>s; o#stream #("atestat.t-t"); n!strlen(s); /hile(n>!0) { #or(int i!0; i< n; i$$) # << s[i ; #<< endl; n&&; % #.close(); % '2.S se scrie un program care s numere cu$intele dintr+un te-t citit din fiierul <cu$inte"t-t<" Ae-tul conine cu$intele separate numai printr+un spaiu. fr semne de punctuaie. singurul semn de punctuaie este ?"@ de la sf6ritul te-tului" *umrul de cu$inte se $a afia pe ecran" Exemplu4 >iierul <cu$inte"t-t< conine te-tul4 Bna are mere" se afiea 4 0 #include<#stream.h> #include<string.h> void main() { i#stream #("cuvinte.t-t"); char s[100 ; int ,!1,n; #.getline(s,100);n!strlen(s); #or(int i!0;i< n;i$$) i#(s[i !!J J22 s[i$1 A!J J) ,$$; cout<< ,; #.close(); % ''.Scriei programul care citete de la tastatur o $aloare natural n (2CnC1##). construiete in memorie si apoi afiea pe ecran o matrice a cu n linii si n coloane. numerotate de la 1 la n. car conine numerele naturale. in ordine cresctoare. de la 1 la n2. dispuse pe coloane. in ordine cresctoare" Bstfel coloana 1 $a conine numerele de la 1 la n. coloana 2 numerele de la n+1 la 2Dn. coloana 0 de la 2Dn+1 la 0Dn si aa mai departe. ca in e-emplu" Eatricea se $a afia pe ecran. cate o linie a matricei pe cate o linie a ecranului. elementele fiecrei linii fiind separate intre ele prin cate un spaiu" Exemplu4 pentru n / 1 se $a afia matricea4 1 2 ' 10 2 7 1# 11

0 7 11 12 1 8 12 17 #include<iostream.h> int a[10 [10 , ,!1,s,n; void main() { cout<<"n!"; cin>>n; #or(int j!1;j<!n;j$$) #or(int i!1;i<!n;i$$) { a[i [j !,; ,$$; % #or(int i!1;i<!n;i$$) { #or(j!1;j<!n;j$$) cout<< a[i [j <<" "; cout<< endl; % % '4.Se d n numr natural" S se afie e cel mai apropiat numr prim fat de n" Frogramul $a conine cel puin un su!program" Exemplu4 n/21 se $a afia 20. pentru n/27 se $a afia 2' #include<iostream.h> int 1rim(int -) { i#(-!!0 II -!!1) return 0; #or(int i!2;i<!-*2;i$$) i#(-(i!!0) return 0; return 1; % void main() { unsigned n, -, 0; cout<< "n!"; cin>>n; -!n$1; 0!n&1; /hile(1rim(-)!!0) -$$; /hile(1rim(0)!!0) 0&&; i#(-&n>n&0) cout<< 0; else cout<< -; % '5.Se considera un $ector cu n (1< n<1##) componente numere naturale" Sa se determine componentele $ectorului cu cei mai muli di$i ori" Se $a folosi un su!program pentru citirea $ectorului si unul pentru calculul numrului de di$i ori ai unui numr" #include<iostream.h> int n, a[100 ; void citire ()

{ int i; #or(i!1;i<!n;i$$) cin>>a[i ; % int div(int -) { int i, nr!0; #or(i!2;i<!-;i$$) i#(-(i!!0) nr$$; return nr; % void main() { int i,ma-!0; cin>>n; citire(); #or(i!1;i<!n;i$$) i#(div(a[i )>ma-) ma-!div(a[i ); #or(i!1;i<!n;i$$) i#(div(a[i )!!ma-) cout<< a[i <<" "; % ').Se consider un ir de n numere ntregi" S se $erifice dac o $aloare -. citit de la tastatur. apare sau nu n $ector" Gn ca c se afl printre $alorile din $ector se $a preci a i n ce po iie apare" Gn ca contrar se $a afia mesa5ul *H. #include<iostream.h> void main() { int n, v[100 , i, -, 1!0; cin>>n>>-; #or(i!1;i<!n;i$$) { cin>>v[i ; i#(v[i !!-)1!i; % i#(1!!0) cout<<"nu"; else cout<< "Kaloarea "<< -<< "a1are in 1o8itia "<< 1; %