Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // Functie pentru citirea datelor de intrare
- void citire(int& dimensiuneTablou, int tablou[]) {
- cout << "Introdu dimensiunea tabloului: ";
- cin >> dimensiuneTablou;
- for (int i = 1; i <= dimensiuneTablou; ++i) {
- cout << "Introdu o valoare: ";
- cin >> tablou[i];
- }
- }
- // Functie pentru calcularea redusului unui numar
- int redus(int numar) {
- int redusNumar = 1;
- int divizor = 2;
- while (numar > 1) {
- int exponent = 0;
- // Impartim numarul cu divizorul cat timp este divizibil
- while (numar % divizor == 0) {
- numar /= divizor;
- exponent++;
- }
- // Daca am gasit un divizor prim, il inmultim cu redusNumar
- if (exponent > 0) redusNumar *= divizor;
- divizor++;
- // Optimizare: daca divizor * divizor > numar, atunci divizor = numar
- if (divizor * divizor > numar)
- divizor = numar;
- }
- return redusNumar;
- }
- // Functie pentru inlocuirea elementului de la pozitia 'i' cu 'redusNumar'
- void inloc(int tablou[], int pozitie_nr, int redusNumar) {
- tablou[pozitie_nr] = redusNumar;
- }
- // Functie pentru sortarea descrescatoare a tabloului
- void sortare(int dimensiuneTablou, int tablou[]) {
- for (int i = 1; i < dimensiuneTablou; ++i)
- for (int j = i + 1; j <= dimensiuneTablou; ++j)
- if (tablou[j] > tablou[i])
- swap(tablou[i], tablou[j]);
- }
- // Functie pentru afisarea elementelor tabloului
- void afisare(int dimensiuneTablou, int tablou[]) {
- for (int i = 1; i <= dimensiuneTablou; ++i)
- cout << tablou[i] << " ";
- }
- int main() {
- int dimensiuneTablou, tablou[1001];
- citire(dimensiuneTablou, tablou);
- for (int i = 1; i <= dimensiuneTablou; ++i) {
- int redusNumar = redus(tablou[i]);
- inloc(tablou, i, redusNumar);
- }
- sortare(dimensiuneTablou, tablou);
- afisare(dimensiuneTablou, tablou);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment