Programme en langage C

Résolu
Hanan -  
 Hanan -
Bonjour,

J'ai un programme en langage C demande de remplir une matrice
(3 lignes,4colonnes),compter et afficher à la fin le nombre de zéro saisie et la position de chaque zéro .

J'ai écris le programme mais il ne fonctionne pas ,qlq peut m'aider pr le corrigé svp
voilà le code :

#include <stdio.h>
void main ()
{int t1[100];
int t2[100];
int tab[3][4];
int i,c,j,k=0,posl,posc;
c=0;
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
{
printf("saisie une notes \n");
scanf("%d",&tab[i][j]);}
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
{
if(tab[i][j]==0)
{
c=c+1;
t1[i]=i;
t2[i]=j;
}
}
printf("\n le nombre de 0 est %d\n",c);
for(i=0;i<=11;i++)

printf("l'élément dans la ligne %d et le colonne %d est nul \n",t1[i],t2[i]);

}

****************
Merci d'avance

1 réponse

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    bonjour,

    La prochaine fois, n'oublie pas de mettre ton code entre tes balises "code" (à droite du bouton souligné) sinon c'est illisible.
    Sinon remarque sur ton code :
    if(tab[i][j]==0) 
    { 
    c=c+1; 
    t1[i]=i; 
    t2[i]=j; 
    } 

    Ok, tu comptes le nombre de 0. Par contre pour la position, la méthode est fausse. Imagine que la ligne i de tab ne contienne que des 0. Tu récrirais sur t1[i] et t2[i] puisque i serait le même.
    Il faut que tu revois ce point.

    Cdlt,
    0
    1. Hanan
       
      wé exactement le prb dans la partie ou on détermine la position de zéro,j'arrive pas à le résoudre,si t'a une idée pr le faire svp dis moi.

      *********
      Merci pr ta réponse
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      T'as grosso modo de façon de faire.
      Soit tu fais un tableau de structure. Ce qui donnera : t[c].ligne=i; et t[c].colonne=j;
      avec c le c-ème zéro analysé.
      Soit tu peux faire t[c]=i*4+j; Avec i*4+j tu pourras retrouver i et j avec t[c]/4 et t[c]%4
      Cdlt,
      0
    3. Hanan
       
      C=0?,prkoi cette formule i*4+j exacte ??
      J'ai pas compris ce que tu dis ,est ce que tu peux m'expliquer avec un autre méthode??
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      A priori, tu préfères la méthode du tableau simple.
      Exemple :
      if(tab[i][j]==0) {
         tab[c]=4*i+j;
         c++;
      }
      

      Pourquoi 4*i+j ? Car tab est un tableau qui contient 4 colonnes. Chacune vont de 0 à 3. Donc tous les multiples de 4, on va à la ligne suivante.
      Autrement, ton tableau tab[i][j]=... pourrait très bien s'écrire tab[0][4*i+j];
      Et pour retrouver ligne et colonne à partir de l'expression 4*i+j, tu utilises le modulo (%) et la division entière (/) comme expliqué dans le précédent post.
      0
    5. Hanan
       
      Un grand merci pr toi Fiddy, j'ai résoudre le prb =)
      0