Tableau en Langage C

Fermé
jup89 - 10 oct. 2010 à 16:21
Mr. D@RK Messages postés 26 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 16 octobre 2010 - 10 oct. 2010 à 20:50
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



4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
Modifié par fiddy le 10/10/2010 à 16:49
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 792 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 10 mai 2014 65
10 oct. 2010 à 16:39
Bonjour,

enchainer quoi ?

a+jp
0
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
10 oct. 2010 à 16:51
Lis mon commentaire ci-dessus.
En gros :
int cpt=0;
for(i=0;i<50;i++) {
if (t[i]==0)
cpt++;
}
0
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 lundi 19 juillet 2010 Statut Membre Dernière intervention 16 octobre 2010 28
10 oct. 2010 à 17:06
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
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
10 oct. 2010 à 17:20
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
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 lundi 19 juillet 2010 Statut Membre Dernière intervention 16 octobre 2010 28
10 oct. 2010 à 19:41
pour entrer dans la boucle:
while(t[i]<0 || t[i]>10)
(! remarque -1<0 :p ...héé je rigole seulement looool)
0
LOL ok merci bien pour tout alors
0
Mr. D@RK Messages postés 26 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 16 octobre 2010 28
10 oct. 2010 à 20:50
avec plaisir =)
et n'oublie pas de marquer "sujet resolu"

Cdlt,
0