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
A voir également:
- Programme en langage C
- Langage ascii - Guide
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Langage binaire - Guide
- Message programmé iphone - Guide
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 :
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,
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,
*********
Merci pr ta réponse
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,
J'ai pas compris ce que tu dis ,est ce que tu peux m'expliquer avec un autre méthode??
Exemple :
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.