Informatică, întrebare adresată de xfaiter02, 9 ani în urmă

Sa se rezolve folosind subprogramele
Se da un sir cu n numere naturale.Determinati suma celor care au oglinditul nr prim.
Nu am inteles functiile si as ruga sa mi le explice cineva..am incercat in codeblocks...poate cineva sa-mi spuna daca am facut bine sau macar ideea daca e buna? 

#include <iostream>

using namespace std;

int v[100],i,n;
void citire()
{ for(i=1;i<=n;i++)   
 cin>>v[i];} 
void prelucrare() 
{ int ogl=0,s=0,copie=0,d; 
for(i=1;i<=n;i++) 
{ copie=v[i]; 
  while(copie)
{ogl=ogl*10+copie%10; copie=copie/10; }
 for(d=2;d<=ogl/2;d++)
 { if(ogl%d!=0)    s=s+copie; } } }
    return 0;
int afisare(int s)
{ cout<<s;} 
int main()
 {     citire();
     prelucrare();
     afisare(); }




Utilizator anonim: nu cred ca iti trebuie vectori pentru oglindit
Utilizator anonim: in plus ai putea sa faci doua functii separate: una pentru prim si alta pentru oglindit

Răspunsuri la întrebare

Răspuns de Utilizator anonim
1
Uite aici o versiune mai eleganta:
#include <iostream>
using namespace std;
int prim(int a)
{
  if(a<2)
      return 0;
  for(int i=2;i<=a/2;i++)
       if(a%i==0)
          return 0;
   return 1;
}
void citire(int v[100],int &n)
{
   cin>>n;
   for(int i=0;i<n;i++)
       cin>>v[i];
}
int palindrom(int a)
{
    int aux=a,s=0,c;
    while(aux)
   {
      c=aux%10;
      s=s*10+c;
      aux/=10;
   }
   return s;
}
int prelucrare(int v[100],int n)
{
    int i,s=0;
    for(i=0;i<n;i++)
       if(prim(palindrom(v[i])))
            s+=v[i];
   return s;
}
int main()
{
    int v[100],n;
    citire(v,n);
    cout<<prelucrare(v,n);
return 0;
}

xfaiter02: multumesc mult!!
Alte întrebări interesante