100 de puncte va rog mult
1.Să se scrie un program care să determine cea mai mare cifră a unui număr natural citit
de la tastatură.
2.Se citește un număr natural n. Să se determine câți divizori pari are acest număr.
3.Se citeşte de la tastatură un număr natural n. Să se calculeze şi să se afişeze media
aritmetică a tuturor divizorilor săi.
4. Se dau două numere naturale a și b. Determinati numărul de palindromuri cuprinse în
intervalul determinat de cele două numere.
5. Să se determine suma şi produsul a două fracţii date.
Răspunsuri la întrebare
Răspuns:
Exercitiul 1
#include <iostream>
using namespace std;
int main()
{
int x,t,max;
cout<<"Introduceti numarul : ";
cin>>x; // citim numarul de la tastatura;
t=x; // punem numarul intial intr-o variabila temporara
max=t%10; // maximul il presupunem ca find ultima cifra
t=t/10; // eliminam ultima cifra pentru ca o presupunem maxim mai sus
while(t!=0) // cat timp T diferit de 0
{
if(max < t%10) // daca maximul nostru este mai mic ca ultima cifra a numarului
{
max = t%10; // setam max ca ultima cifra a numarului
}
t=t/10; // eliminam ultima cifra pentru ca am prelucrat-o
}
cout << "Cifra cea mai mare din numarul "<<x<<" este "<<max; // afisam maximul
}
Exercitiul 2
#include <iostream>
using namespace std;
int main()
{
int x;
int nrDivizori = 0;
cout<<"Introduceti numarul : ";
cin>>x; // citim numarul de la tastatura;
for(int i=1;i<=x;i++) // trecem prin toate numerele incepand de la 1 pana la numarul introdus de utilizator
{
if(x%i == 0 && i%2 == 0) // daca restul impartirii dinte X si I este 0 (nu are rest) si I este par (impartiea la 2 nu are rest)
{
nrDivizori++; // crestem contorul pentru divizori
}
}
cout<<"Numarul de divizori pari ai numarului "<<x<<" este "<<nrDivizori; // afisam numarul de divizori
}
Exercitiul 3
#include <iostream>
using namespace std;
int main()
{
int x;
int nrDivizori = 0; // nr de divizori
float sum = 0; // suma divizorilor
cout<<"Introduceti numarul : ";
cin>>x; // citim numarul de la tastatura;
for(int i=1;i<=x;i++) // trecem prin toate numerele incepand de la 1 pana la numarul introdus de utilizator
{
if(x%i == 0) // daca restul impartirii dinte X si I este 0 (nu are rest)
{
nrDivizori++; // crestem contorul pentru divizori
sum+=i; // adaugam la suma noastra, divizorul
}
}
cout<<"Media aritmetica a divizorilor numarului "<<x<<" este "<<sum/nrDivizori; // afisam media aritmetica (suma numerelor impartit la cate numere sunt)
}
Exercitiul 4
#include <iostream>
using namespace std;
int main()
{
int a, b;
int nrPalindrom = 0;
cout << "Introduceti primul numar : ";
cin >> a; // citim numarul de la tastatura;
cout << "Introduceti al doilea numar : ";
cin >> b; // citim numarul de la tastatura;
for (int i = a; i <= b; i++) // trecem prin toate numerele incepand de la primul pana la ultimul numar introdus
{
int n = i; // punem numarul curent intr-o variabila temporara;
int intors = 0; // aici vom stoca numarul intors
int cifra; // aici vom stoca cifra numarului original
do // executa
{
cifra = n % 10; // luam ultima cifra a numarului nostru curent
intors = (intors * 10) + cifra; // adaugam ultima cifra ca prima cifra a numarului nostru inversat
n = n / 10; // eliminam ultima cifra a numarului curent
} while (n != 0); // cat timp n diferit de 10 (adica cat timp mai avem cifre
if (intors == i) // daca numarul nostru inversat est eegal cu numarul curent
{
nrPalindrom++; // crestem numarul de palindroame
}
}
cout << "Numarul de palindroame din intervalul [" << a << "," << b << "] este " << nrPalindrom; // afisam media aritmetica (suma numerelor impartit la cate numere sunt)
}
Exercitiul 5
#include <iostream>
using namespace std;
int main()
{
int numitor1, numitor2, numarator1, numarator2,numitor3,numarator3,numitorTemp1,numitorTemp2;
cout<<"Introduceti numaratorul primei fractii :";
cin >> numarator1; // citim numaratorul primei fracti
cout<<"Introduceti numitorul primei fractii :";
cin >> numitor1; // citim numitorul primei fracti
cout<<"Introduceti numaratorul pentru fractia 2 :";
cin >> numarator2; // citim numaratorul pt fractia doi
cout<<"Introduceti numitorul pentru fractia 2 :";
cin >> numitor2; // citim numitorul pt fractia doi
numitorTemp1 = numitor1; //luam doua variabile temporare ce ne vor ajuta la calcule
numitorTemp2 = numitor2; //luam doua variabile temporare ce ne vor ajuta la calcule
while(numitorTemp1 != numitorTemp2) // //cat timp cei doi numitori sunt diferiti
{
if(numitorTemp1 > numitorTemp2) //daca primul numitor e mai mare ca cel de-al doilea
numitorTemp1 = numitorTemp1-numitorTemp2; //primul numtiro devine scaderea dintre cele doua
else
numitorTemp2 = numitorTemp2 - numitorTemp1; // atlfel al doilea numitor devine scaderea dintre cele doua
}
// structura repetitiva de mai sus gaseste cel mai mare divizor comun dintre cei doi numitori;
numitor3 = (numitor1*numitor2)/numitorTemp1; // calculam numitorul pentru fractia finala folosindu-ne de cmmdc aflat mai sus
numarator3 = (numarator1)*(numitor3/numitor1) + (numarator2)*(numitor3/numitor2); // calculam numaratorul pentru fractia finala
cout<<"Suma fractiei "<<numarator1<<"/"<<numitor1<<" si "<<numarator2<<"/"<<numitor2<<" este "<<numarator3 << "/" << numitor3; // afisam fractia finala
}
Explicație:
Ca si explicatii, am adaugat direct comentarii in cod pe fiecare linie.