C++ - Risorse gratuite :: programmi,esercizi,visual,dev,compilatori,esempi,classi,strutture,liste,array,funzioni,C,java :: Leggi il Topic - Crivello di Eratostene
 FAQFAQ   CercaCerca   Lista degli utentiLista degli utenti   RegistratiRegistrati   ProfiloProfilo   Messaggi PrivatiMessaggi Privati   LoginLogin 

Crivello di Eratostene
Nuovo Topic   Rispondi    Indice del forum -> C++ Repository
Pagina 1 di 1
Precedente :: Successivo  
Autore Messaggio
Killabee
Nuovo membro



Messaggi: 18

MessaggioInviato: Giovedì 29 Ottobre 2009    Oggetto: Crivello di Eratostene
Rispondi citando

Ciao a tutti, in questi giorni ho implementato la mia versione del Crivello di Eratostene in un programma che visualizza il procedimento in un modo secondo me abbastanza carino, quindi lo posto qui di seguito (i sorgenti sono due ma possono facilmente essere uniti):

Codice: Espandi/Riduci
 // File1.cpp
#include <iostream>
#include <ctime>
using namespace std;

void print_setaccio(int nums[10][10]);
void wait(int seconds);

int main() {

   int div = 2;
   register int t;
   register int i;
   int value = 1;
   bool b;

   int nums[10][10];

   
   for(i=0; i<10; i++) {
      for(t=0; t<10; t++) {
            nums[i][t] = value;
         value++;
      }
   }

   system("color f0");

   cout << "\n Crivello di Eratostene\n"
       << " -----------------------------------------------------------------\n\n"
       << " Questo programma trova i numeri primi compresi tra 1 e 100\n"
       << " utilizzando il crivello di Eratostene... Quando sei pronto,\n"
       << " si comincia!\n\n ";
   system("pause");

   print_setaccio(nums);

   do {
      system("cls");
      print_setaccio(nums);
      cout << "\t\t    Divisione per " << div << "...";
      wait(2);
      for(i=0; i<10; i++) {
      for(t=0; t<10; t++) {
         if(nums[i][t] != div && nums[i][t] != 0)
            if(!(nums[i][t] % div))
               nums[i][t] = 0;
      }
   }
      system("cls");
      print_setaccio(nums);
      cout << "\t\t    Divisione per " << div << "...Fatto!";
      wait(1);

     for(i=0; i<10; i++) {
      b = true;
       for(t=0; t<10; t++) {
         if(nums[i][t]!=0 && nums[i][t] > div) {
         div = nums[i][t];
         b = false;
         break;
         }
         
      }
       if(!b)
            break;
    }
   } while((div*div)<100);
   
  cout << " Ho finito!" << "\n\n" << "\t\t    ";

  system("pause");
  return 0;

}

// File2.cpp
#include <iostream>
#include <ctime>
using namespace std;

void print_setaccio(int nums[10][10])
{
cout << "\n";
   for(int i=0; i<10; i++) {
      cout << "\t\t  ";
      for(int t=0; t<10; t++) {
            if(nums[i][t]==1 || nums[i][t]== 0)
               cout << "    ";
            else if(nums[i][t]>1 && nums[i][t]<10)
               cout << "   " << nums[i][t];
            else if(nums[i][t]>=10 && nums[i][t]<100)
               cout << "  " << nums[i][t];
            else if(nums[i][t]==100)
               cout << " " << nums[i][t];
      }
         cout << "\n\n";
   }
}

void wait ( int seconds )
{
  clock_t endwait;
  endwait = clock () + seconds * CLOCKS_PER_SEC ;
  while (clock() < endwait) {}
}


Nel primo file c'è il programma vero e proprio, nel secondo vengono definite le funzioni print_setaccio e wait (quest'ultima l'ho presa da cplusplus.com, lo ammetto Rolling Eyes ).

Spero sia di vostro gradimento e magari che possa essere utile a qualcuno Wink
Torna in cima
Profilo Messaggio privato
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Indice del forum -> C++ Repository
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi Topic in questo forum
Non puoi rispondere ai Topic in questo forum
Non puoi modificare i tuoi messaggi in questo forum
Non puoi cancellare i tuoi messaggi in questo forum
Non puoi votare nei sondaggi in questo forum


Powered by phpBB

 

home - esercizi base - esercizi oop - algoritmi - java - forum - info & siti amici

Siti partner: c++ maniacs . web-creations . compilatori.com