Help ! Compile mais ne fonctionne pas - Nb premiers

Pwillou Messages postés 17 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 3 mai 2005 - 30 oct. 2003 à 15:54
Pwillou Messages postés 17 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 3 mai 2005 - 31 oct. 2003 à 10:17
Bonjour :)

void main()
{
int n,i,j;
n=10;
i=0;
j=0;
int tab_candidats[n];
for (i=0 ; i<n-1 ; i++)  tab_candidats[i]=i+2;   
i=0;

while (tab_candidats[i]<= n)  {
                 for (j=0; j<n-1; j++)  { 
if (((tab_candidats[j]%tab_candidats[i]) == 0) && (tab_candidats[j]!=tab_candidats[i]) )
                                        tab_candidats[j]=0;
                                              }
                 i++;

                             }
i=0;
for (i=0 ; i<n-1 ; i++) {
                       cout << tab_candidats[i] <<endl;
                         }

}



Voila c'est donc un programme qui parcours un tableau de n entiers, et qui remplace successivement chaque nombre non premier par 0. Je suppose que ca vient du for à l'intérieur de while.
J'ai testé la condition if dans un programme a part, elle retourne à priori le bon résultat.
Une erreur de logique ?

Merci de jeter un coup d'oeil ;)

9 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
30 oct. 2003 à 15:59
Salut,
int tab_candidats[n];
tu compiles ca ?
n doit etre une constante, pas une variable.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 oct. 2003 à 16:07
N'oublie pas de nous dire quel est ce modele exotique de compilo avant de le virer.
BruNews, ciao...
0
Pwillou Messages postés 17 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 3 mai 2005
30 oct. 2003 à 16:52
Ouep, en fait je me suis planté, j'ai recopié le code d'un test. Le compilo est Dev-C++. La taille du tableau n'est pas constante.
Ce qui pose problème c'est le passage correspondant au criblage du tableau.

void main()
{
int n,i,j;
cout << "Jusqu'a quelle valeur souhaitez-vous determiner les nombres premiers ?" << endl;
cin >>n;
while (n>=1000) {
    cout << "La valeur saisie est incorrecte, veuillez saisir une valeur strictement inferieure a 1000: "  << endl;
    cin >> n;
    }
int tab_candidats[n];
for (i=0 ; i<n-1 ; i++) { tab_candidats[i]=i+2;
                         // cout << tab_candidats[i] <<endl;
                          }

i=0;
 while (tab_candidats[i]<= n)  {
                 for (j=0; j<n-1; j++) { if (((tab_candidats[j]%tab_candidats[i]) == 0) && (tab_candidats[j]!=tab_candidats[i]) )
                                        tab_candidats[j]=0;
                                        }
                 i++;

               }
i=0;
for (i=0 ; i<n-1 ; i++) {
                         cout << tab_candidats[i] <<endl;
                          }

}
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
30 oct. 2003 à 17:08
Salut,
Moi j'ai testé ton 1er bout de code, j'ai une erreur "integer divide by zero".
Il faudrait tester si tab_candidats[i] est nul ou pas avant d'utiliser %.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pwillou Messages postés 17 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 3 mai 2005
30 oct. 2003 à 17:52
Oui c'est vrai, j'avais avancé et compris le problème sans que le compilo me le dise.
Etant donné que je donne une valeur 0 pour des nombres non premiers, l'exercice me l'impose, il finit par rencontrer x%0...

Mais j'ai pas pensé à une vérification. Je cours voir ca, merci !
0
Pwillou Messages postés 17 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 3 mai 2005
30 oct. 2003 à 18:05
Ah ouais, ca marche avec la vérification !! Encore merci ;)

Une question c'est quoi ton compilo, avec ton message d'erreur, ca m'aurais éviter de le faire tourner à la main pour voir qu'il y avait un x mod 0.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
30 oct. 2003 à 18:11
Salut,
Visual c++ 6.0
et l'erreur se repere en mode debug pas a pas.
0
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
31 oct. 2003 à 01:21
le i=0;
avant la derniere boucle for ne sert à rien
www.morgan06.fr.fm
0
Pwillou Messages postés 17 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 3 mai 2005
31 oct. 2003 à 10:17
Oui c'est vrai, il m'a échappé. :blush)
Mici.
0
Rejoignez-nous