Programme en langage C
Résolu
Hanan
-
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
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
-
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,-
-
-
-
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. -
-