Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - crivello di eratostene
Forum - C/C++ - crivello di eratostene

Avatar
zaire90 (Normal User)
Rookie


Messaggi: 46
Iscritto: 16/10/2009

Segnala al moderatore
Postato alle 18:20
Mercoledì, 25/11/2009
Scusate,
nel crivello di eratostene che ho scritto:
Codice sorgente - presumibilmente C++

  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # include <math.h>
  4.  
  5. void leggi_x(float&);
  6. int pt_intera(float);
  7. typedef int vettore[10000];
  8. void Eratostene(vettore,int);
  9.  
  10. int main(void)
  11. {
  12.     float x;
  13.     int h;
  14.     vettore p;
  15.    
  16.     leggi_x(x);
  17.     h=pt_intera(x);
  18.     Eratostene(p,h);
  19.    
  20.     printf("\n\n\n\n");
  21.     system("PAUSE");
  22.     return 0;
  23. }
  24.  
  25. void leggi_x(float& x)
  26. {
  27.     printf("Scrivi un numero reale positivo x:            x = ");
  28.     scanf("%f",&x);
  29.    
  30.        while ((x<1)||(x>10000))
  31.              {
  32.                 printf("\nx deve essere positivo e minore o uguale a 10000");
  33.                 printf("\nScrivi un umero reale positivo x:            x = ");
  34.                 scanf("%f",&x);
  35.              }
  36.     return;
  37. }
  38.  
  39. int pt_intera(float x)
  40. {
  41.     int h;
  42.     h=(int)x;
  43.     printf("\n\nParte intera di %f:      [%f] = %d\n\n",x,x,h);
  44.    
  45.     return h;
  46. }
  47.  
  48.  
  49. void Eratostene(vettore p, int h)
  50. {
  51.     int i, j;
  52.     float rad;
  53.     rad=sqrt(h);
  54.    
  55.     for(i=2; i<=h; i++)   // Inizializzo tutti i numeri a 1
  56.         p[i]=1;
  57.    
  58.     for(i=2; i<=rad; i++)
  59.        if (p[i]==1)
  60.           for(j=2; j<=h; j++)   p[i*j]=0;   // Metto in 0 tutto i multipli di i
  61.    
  62.     printf("1  ");
  63.     for(i=2; i<=h; i++)
  64.        if (p[i]==1)   printf("%d  ",i);
  65.        
  66.     return;
  67. }


come accidenti faccio a stampare i numeri primi in una tabella di 10 colonne?(cioè quindi ogni dieci colonne va a capo)
E più in generale come si fa a stampare in tabelle invece che tutto per righe?
    

Ultima modifica effettuata da zaire90 il 25/11/2009 alle 20:28
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:37
Mercoledì, 25/11/2009
http://www.cplusplus.com/reference/clibrary/cstdio/printf/

La funzione printf permette la formattazione dell'output... per andare a capo ogni 10 risultati metti un contatore che ogni volta che raggiunge 10 manda un '\n' all'ouput.


Il mio blog: https://piero.dev
PM Quote