Tableau en Langage C

jup89 -  
Mr. D@RK Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais bien un peu d'aide de votre part à un exo que j'ai à réaliser :

Ecrire un programme qui, étant donné 50 entiers lus au clavier entre 0 et 10 :

-calcule le nombre de 0 tirés
-indique le rang du 1er élément NON NUL
-affiche la suite des entiers


Je débute dans les tableaux donc j'ai pas encore bien bien compris comme ça marche exactement


Pour l'instant on va dire que j'ai fait que ça :

#include <stdio.h>
#include <stdlib.h>

int main ()

{

 int t[50],i,n;
 
 i=0;
  

 printf("Veuillez rentrer les 50 nombres : \n");

 while(i<50){
   scanf("%d",&t[i]);
   i=i+1;
   }




system("PAUSE");

return;
}





Maintenant je bloque...depuis maintenant 2h j'arrive pas à enchainer quelque chose :-( si vous pouviez m'aider svp



A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Pourquoi ne pas faire une simple boucle for ?
Par exemple :
for(i=0;i<50;i++) 
   scanf(...) 

Sinon, pour le return; il manque le 0. Il s'agit de return 0;

Ensuite pour les points que vous devez faire, je vous recommande les fonctions.

Ce qui pourra donner :

#include <stdio.h> 
#include <stdlib.h> 

int nbZero(int *t, const size_t sz) { 
  ... 
} 

int premier EltNonNul(int *t, const size_t sz) { 
... 
} 

int main (void) { 

 int t[50],i,n; 
  
 printf("Veuillez rentrer les 50 nombres : \n"); 

 for (i=0;i<50;i++) { 
   scanf("%d",&t[i]); 
 } 

printf("%d éléments nuls\n",nbZero(t,50); 
printf("%d ...\n",premierEltNonNul(t,50); 
... 


system("PAUSE"); 

return 0; 
} 



Pour compter le nombre d'éléments non nuls, une simple boucle, une condition (if) et un compteur fera l'affaire.
Pour trouver le premier indice non nul, une simple boucle avec une condition (if) fera l'affaire.
Et pour l'affichage, une simple boucle avec un printf fera l'affaire.

Cdlt,
0
jean-pierreL Messages postés 796 Date d'inscription   Statut Membre Dernière intervention   65
 
Bonjour,

enchainer quoi ?

a+jp
0
jup89
 
Bè le reste des questions

Déjà premièrement comment calculer le nombre de 0 tirés...

j'ai essayer de rajouter un if :


if (t[i]==0){
...

mais là je sais plus quoi faire.

Et en même temps avec une boucle WHILE je vois pas non plus
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Lis mon commentaire ci-dessus.
En gros :
int cpt=0;
for(i=0;i<50;i++) {
if (t[i]==0)
cpt++;
}
0
jup89
 
Merci mais je n'utilise pas le FOR...

je dois utiliser while ou if

j'ai essayer ça :

#include <stdio.h>
#include <stdlib.h>

int main ()

{

 int t[5],i,n,trouve;
 
 i=0;
 trouve=0;

 printf("Veuillez rentrer les 5 nombres : \n");

 while(i<5){
   scanf("%d",&t[i]);
   i=i+1;
   if(t[i]==0){
     trouve=trouve+1;
     printf("Nombre de zero est de : %d\n",trouve);
   }

  
   }



system("PAUSE");

return;
}



Mais ça me marque toujours 1 que j'en mette 0 ou 5
(j'ai remplacé 50 par 5 histoire que je puisse rapidement tester le programme)
0
Mr. D@RK Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   28
 
le probleme est dans:
i=i+1;
if(t[i]==0){
trouve=trouve+1;
printf("Nombre de zero est de : %d\n",trouve);
}
//
car tu incrémente avant de tester. remplace le par:
if(t[i]==0){
trouve=trouve+1;
}
i=i+1;
0
jup89
 
oui j'allais répondre merci bien Mr.D@RK

j'ai trouvé :

#include <stdio.h> 
#include <stdlib.h> 

int main () 

{ 

 int t[5],i,n,trouve; 
  
 i=0; 
 trouve=0; 

 printf("Veuillez rentrer les 5 nombres : \n"); 


 while(i<5){ 
    scanf("%d",&t[i]); 
   if(t[i]==0){ 
     trouve=trouve+1; 
      
   } 
    i=i+1; 
    } 
  printf("Nombre de zero est de : %d\n",trouve); 


system("PAUSE"); 

return; 
}



Maintenant je vais tester la suite je vous dis
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Et tu ne peux pas faire de fonction non plus ?
Car c'est une très mauvaise façon de procéder ainsi (mettre tout dans le main).
0
jup89
 
Ah oui d'accords merci

J'avais pas vu que lorsque je met un nombre>10 ça rajoute la même ligne en dessous et tant que je remet pas un nombre<10 ça accepte pas

C'est vraiment bien merci beaucoup :-)

juste le t[i]=-1 ??? pourquoi ? lol
0
Mr. D@RK Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   28
 
pour entrer dans la boucle:
while(t[i]<0 || t[i]>10)
(! remarque -1<0 :p ...héé je rigole seulement looool)
0
jup89
 
LOL ok merci bien pour tout alors
0
Mr. D@RK Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   28
 
avec plaisir =)
et n'oublie pas de marquer "sujet resolu"

Cdlt,
0