2010-12-14 7 views
0

J'ai écrit du code pour générer un nombre premier dans une plage. Et puis essayer de stocker le nombre premier généré dans un tableau:stocker le contenu dans un tableau et afficher

if(prime) 
    printf("\n%d", n); 
prime_array[k]=n; 
k++; 

ensuite essayer d'imprimer le contenu du tableau:

for(z=0;z<6;z++) 
    printf("%d\n",prime_array[z]); 

La sortie que je reçois est incorrect. Qu'est-ce qui ne va pas?

+0

Montrez-nous le code complet. – codaddict

+0

que voyez-vous? Qu'attendez-vous de voir? –

+7

votre 'if' affecte' printf' seulement. Je ne suis pas sûr, mais vous devriez probablement mettre 'printf; prime_array [k] = n; k ++ 'dans un bloc entre' {} '. – khachik

Répondre

0

dans le code que vous avez posté, vous essayez de lancer un entier (n) dans quelque chose qui semble être un char (prime_array [k]), il ne peut pas fonctionner parce que 'n' et 'prime_array [ k] 'n'ont pas le même type et aussi parce que vous ne pouvez pas lancer un entier dans un tableau comme ça.

Si vous voulez mettre un entier dans un tableau, vous pouvez utiliser la fonction sprintf de stdio.h. Homme de cette fonction: http://man.cx/sprintf%283%29

Anhuin.

+2

quoi? désolé, mais ce n'est pas correct du tout! tout d'abord, il n'y a aucune raison de penser que 'prime_array [k]' est un 'char' ou que' n' est un entier. deuxièmement, même si c'était le cas, vous pouvez certainement lancer un 'int' à un' char' si l'entier est dans la plage représentable par un 'char' (-128 à 127). Troisièmement, vous pouvez certainement mettre un entier dans un tableau entier (ou un tableau char) par simple affectation. 'sprintf' pourrait être utilisé si vous vouliez une représentation sous forme de chaîne du nombre. – filipe

+0

Désolé ma mauvaise, je n'ai pas bien compris la question. Je pensais qu'il voulait lancer un entier dans un tableau char. Et oui, je suis d'accord avec vous, vous pouvez lancer un entier dans un caractère mais vous garderez juste le premier octet (ou le dernier en fonction du mode endian). – Anhuin

2

En supposant que tout le reste est correct, vous devez prendre en compte les éléments suivants: printf entre dans le bloc if, mais pas tout le reste. Il devrait probablement être:

if(prime) { 
    printf("\n%d", n); 
    prime_array[k]=n; 
    k++; 
} 
Questions connexes