Documente Academic
Documente Profesional
Documente Cultură
1. Cerinta: Se citeste un numar natural n cu numar par de cifre. Calculati si afisati numarul obtinut din n
inversand cifra unitatilor cu a zecilor, cea a sutelor cu cea a miilor, etc.
Exemplu: n=123456 rezulta 214365.
#include <iostream>
using namespace std;
int verificare_nr_par(int n)
{
int nr_cifre=0;
while (n)
{
n /= 10;
nr_cifre++;
}
if (nr_cifre % 2 == 0)
return 1;
else
return 0;
}
int main()
{
int numar, intermediar=0;
cin >> numar;
if (verificare_nr_par(numar))
{
while (numar)
{
intermediar = intermediar * 100 + numar % 100;
numar /= 100;
}
while (intermediar)
{
numar = numar * 10 + intermediar % 10;
intermediar /= 10;
}
cout << numar;
}
else cout << "Ati introdus un numar care nu respecta conditiile.";
}
1
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
2. Cerinta: Se citesc doua numere naturale a si b. Calculati cate numere palindrom sunt din intervalul
[a,b]. Un numar este palindrom daca are aceeasi valoare atat daca e citit de la stanga la dreapta cat si
de la dreapta la stanga (de exemplu 12321).
Exemplu: a=100, b=200 se va afisa: 101,111,121,131,141,151,161,171,181,191
#include <iostream>
using namespace std;
int main()
{
int a, b, nr_palindrom=0,i;
cin >> a >> b;
if (verificare_interval(a, b))
{
for (i = a; i <= b; i++)
{
nr_palindrom += palindrom(inversul_curent(i), i);
if (palindrom(inversul_curent(i), i))
cout << inversul_curent(i)<<' ';
}
cout <<endl<<nr_palindrom;
}
else cout << "Numerele introduse nu reprezinta un interval";
}
2
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
3. Cerinta: Se citesc doua numere naturale a si b (ambele mai mari decat 1). Calculati si afisati cati
termeni din sirul lui Fibonacci se afla in intervalul [a,b].
Exemplu: In intervalul [20,40] sunt 2 termeni (21 si 34)
#include <iostream>
using namespace std;
int main()
{
int a, b, t1 = 1, t2 = 1 , tc, nr = 0;
cin >> a >> b;
if (verificare_interval(a, b))
{
while (t1 + t2 <= b)
{
tc = t1 + t2;
if (tc >= a)
{
cout << tc << ' ';
nr++;
}
t1 = t2;
t2 = tc;
}
cout << endl;
cout << "Exista " << nr << " numere Fibonacci in sir";
}
else
cout<< "Numerele introduse nu reprezinta un interval";
}
3
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
4. Cerinta: Se citeste un numar natural k din intervalul [1,9]. Afisati toate numerele n formate din exact
k cifre care au proprietatea ca n-1 si n+1 sunt numere prime.
Exemplu: k=2 se vor afisa numerele: 12, 18, 30, 42, 60 si 72
#include <iostream>
using namespace std;
int checkInput(int a)
{
if (a >= 0 && a <= 9)
return 1;
else
return 0;
}
int ordinNumar(int k)
{
int ordin = 1;
for (int i = 1; i < k; i++)
ordin *= 10;
return ordin;
}
int isPrime(int i)
{
int is_prime = 1;
if (i % 2 == 0 && i > 2) is_prime = 0;
else
for (int d = 3; d * d <= i; d += 2)
if (i % d == 0)
is_prime = 0;
return is_prime;
}
int main()
{
int k, limitaInf, limitaSup;
cin >> k;
if (checkInput(k))
{
limitaInf = ordinNumar(k);
limitaSup = limitaInf * 10 - 1;
primeConsecutive(limitaInf,limitaSup);
}
else
cout << "Valoarea introdusa nu este o cifra";
}
4
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
5. Cerinta: Să se determine reprezentarea în baza 2 a unui număr natural n.
Exemplu: n=13 se va afisa: 1101
#include <iostream>
using namespace std;
int main()
{
int numar, baza;
cout << "Introduceti numarul de reprezentat: "; cin >> numar;
cout << "Introduceti baza in care se va face conversia: "; cin >> baza;
cout << convert(numar, baza);
5
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
6. Cerinta: Să se verifice daca cifrele lui n sunt in progresie aritmetica.
Exemplu: n=2596 se va afisa: Cifrele lui 2596 nu sunt in progresie aritmetica.
Exemplu: n=2468 se va afisa: Cifrele lui 2468 sunt in progresie aritmetica.
#include <iostream>
using namespace std;
int isProgression(int n)
{
int ratie;
ratie = n % 10 - (n / 10) % 10;
n /= 10;
while (n>9)
{
if (n % 10 - (n / 10) % 10 != ratie)
return 0;
n/=10;
}
return 1;
}
int main()
{
int numar;
cin >> numar;
if (isProgression(numar))
cout << "Cifrele lui " << numar << " sunt in progresie aritmetica";
else
cout << "Cifrele lui " << numar << " NU sunt in progresie aritmetica";
}
6
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
7. Cerinta: Se citeşte un număr n. Să se descompună în factori primi.
Exemplu: n=123 se va afisa: 3;41
#include <iostream>
using namespace std;
int main()
{
int nr;
cin >> nr;
primeFactors(nr);
}
7
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
8. Cerinta: Să se afiseze cel mai mic numar care se poate forma cu cifrele lui n, fiecare cifra repetandu-
se de cate ori se repeta si in n.
Exemplu: 1204192 se va afisa: 112249
#include <iostream>
using namespace std;
int minDigit(int n)
{
int minic = 10;
do
{
if (n%10 < minic && n%10 != 0)
minic = n%10;
n /= 10;
} while (n);
return minic;
}
int main()
{
int numar, vectorCifre[11], minimNumar=0, minimCifra=10;
cin >> numar;
intZero(vectorCifre);
splitDigits(numar, vectorCifre);
minimNumar=minDigit(numar);
vectorCifre[minimNumar]--;
cout << formMinimNumber(minimNumar, vectorCifre);
}
8
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
9. Cerinta: Să se ștearga toate cifrele care sunt precedate de o cifră identică.
Exemplu: 1255544231 se va afisa: 1254231
#include <iostream>
using namespace std;
int main()
{
int numar;
cin >> numar;
cout<<removeIdenticalEntries(numar);
}
9
Gavrila Cristina Gabriela
Informatica Aplicata – 10LF392
10. Cerinta: Se citeste un numar natural n, n>1000. Afisati cel mai mare numar care se poate obtine din n
prin eliminarea unei singure cifre.
Exemplu: din 45329 se obtine 5329 (e cel mai mare dintre numerele 4532 4539 4529 4329 5329)
#include <iostream>
using namespace std;
int numberLenght(int n)
{
int nr = 0;
while (n)
{
nr++;
n /= 10;
}
return nr;
}
int main()
{
int numar, nrCifre, vectorCifre[20], numarMaxim=0, cifra;
cin >> numar;
nrCifre = numberLenght(numar);
splitDigits(numar, vectorCifre, nrCifre);
for (cifra = 1; cifra < nrCifre; cifra++)
{
//cel mai mare numar se va obtine prin eliminarea primei
//cifre de la stanga la dreapta care este strict mai mic decat
//urmatoarea
if (vectorCifre[cifra] < vectorCifre[cifra + 1])
{
numarMaxim = numarMaxim * 10 + vectorCifre[cifra + 1];
cifra++;
break;
}
else
numarMaxim = numarMaxim * 10 + vectorCifre[cifra];
}
for(int i=cifra+1; i<=nrCifre;i++)
numarMaxim = numarMaxim * 10 + vectorCifre[i];
cout << numarMaxim;
}
10