You are on page 1of 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 afiee 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 reultat 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 calculee i s afiee 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
1 2 2 2 1
2 1 2 1 2
2 2 1 2 2
2 1 2 1 2
1 2 2 2 1
#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 afiea4 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$1A!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 afiee 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$iori" Se $a folosi un su!program pentru citirea $ectorului
si unul pentru calculul numrului de di$iori 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 precia i n ce poiie 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;
%

You might also like