Care este greșeala făcută? Nu îmi afișează ceea ce trebuie
#include <cstdio>
int main ()
{
int n, v[1000], i, d, nd, r, uc, e, p;
FILE *f;
//citire vector din fisier
f= fopen("operatii_numere.in", "r");
fscanf(f, "%i", &n);
for(i=0; i<n; i++)
{
fscanf(f, "%i", &v[i]);
}
fclose(f);

//afisare vector pe ecran
printf("vectorul are %i elemente: \n", n);
for(i=0; i<n; i++)
{
printf(" %i", v[i]);
}
printf("\n");

//numere prime, numere neprime
for(i=0; i<n; i++)
{
for(d=1; d<=n; d= d+1)
{
r=0;
if(v[i]%d==0)
{
printf("%c", d);
nd= nd+1;
}
printf("%i are %i divizori\n", v[i], nd);
if(nd==2)
{
printf("%i este prim\n", v[i]);
uc= v[i]%10;
r= r*10+uc;
printf("rasturnatul numarului %i este %i", v[i], r);
}
else
{
printf("%i nu este prim\n", v[i]);
p = 2;
while (p * p <= v[i])
{
e = 0;
while (v[i] % p == 0)
{
v[i] = v[i] / p;
++e;
}
if (e > 0)
{
printf("%i la puterea %i\n", p, e);
}
++p;
}
if (v[i] > 1)
{
printf("%i la puterea 1\n", v[i]);
}
}
}
}
return 0;
}​

Răspuns :

tu ai foarte multe greseli in programul tau (verificarea de primalitate, algoritmul de rasturnare) etc. asa ca ti-am refacut programul complet

te sfatuiesc  pe viitor sa iti structurezi programul in mici functii, sa-ti imparti efortul, astfel incat sa poti intelegi mai usor ce faci

#include<iostream>

#include<fstream>

using namespace std;

ifstream f("operatii_numere.in");

int v[10001], n;

int prim(int x) {

   if (x <= 1)

       return 0;

   for (int d = 2; d <= x / 2; d++)

       if (x % d == 0)

           return 0;

   return 1;

}

int invers(int x) {

   int rev = 0;

   while (x != 0) {

       rev = rev * 10 + x % 10;

       x /= 10;

   }

   return rev;

}

void dpfp(int x) {

   int d = 2, p;

   while (x > 1) {

       p = 0;

       while (x % d == 0) {

           x /= d;

           p++;

       }

       if (p != 0)

           cout << d << " la puterea " << p << endl;

       d++;

   }

}

int main() {

   f >> n;

   for (int i = 1; i <= n; i++) {

       f >> v[i];

       if (prim(v[i]) == 1 || v[i] == 1)

           cout << invers(v[i]) << endl;

       else {

           cout << endl << "numarul nu e prim, deci se va descompune in urmatorul produs:" << endl;

           dpfp(v[i]);

           cout << endl;

       }

   }

   f.close();

   return 0;

}