Imi poate spune si mie cineva ce e gresit la programul meu? Problema pe care am rezolvat-o este urmatoarea: realizati un program care citeste de la tastatura n numere naturale si determina media aritmetica a numerelor prime. Ex: pentru n=3 si numerele 4,5,7 se va afisa 6. Mie imi afiseaza 0… va rog mult sa ma ajutati!!!!
Răspuns:
#include <iostream>
int main()
{
unsigned n;
unsigned t[3] = {0, 0};
std::cin >> n;
unsigned *v = new unsigned[n];
for (unsigned i = 0; i < n;)
{
std::cin >> v[i];
i++;
}
for (unsigned k = 0; k < n; )
{
unsigned l = v[k] / 2;
t[2] = 2;
for (unsigned j = 2; j <= l; j++)
if (v[k] % j == 0)
t[2]++;
if (t[2] == 2)
{
t[0] += v[k];
t[1] += 1;
}
k++;
}
float nrt = (float) t[0];
float num = (float) t[1];
float ma = (float)(nrt / num);
std::cout << ma << std::endl;
delete[] v;
return 0;
}
Explicație:
In afara de citirea valorilor date in cerinta ta, algoritmul tau nu a
fost implementat corect.
Iar pentru declararea numerelor naturale se poate folosi nu numai
"unsigned int n,..." ci si forma simplificata "unsigned n,..." deoarece
au acelasi sens.
Variabila "ma" ar trebui sa returneze un rezultat real de tip "float" si nu
de tip "unsigned".