Recherche Séquentielle Tableau deux dimensions
Résolu
faresk93
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
faresk93 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
faresk93 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai codé ce programme ci, il fonctionne parfaitement sauf que la recherche ne se fait que sur la première ligne.
Aidez moi svp !
J'ai codé ce programme ci, il fonctionne parfaitement sauf que la recherche ne se fait que sur la première ligne.
Aidez moi svp !
#include<stdio.h> #include<conio.h> #include<stdlib.h> int i,j,l,c={0,0,0,0}; void SaisirTab1(int *l,int *c) { do { printf("\n Lignes : "); scanf("%d",l); printf("\n Colonnes : "); scanf("%d",c); } while ((l<=0)&&(c<=0)); } void SaisirTab2(int tab[l][c]) { printf("\n"); for(i=0;i<l;i++) { for(j=0;j<c;j++) { printf("T[%d][%d] = ",i,j); scanf("%d",&tab[i][j]); printf("\n"); } } } void RemplirTab(int tab[l][c]) { for(i=0;i<l;i++) { for(j=0;j<c;j++) printf("%d \t",tab[i][j]); printf("\n"); } } float SommeTab(int tab[l][c]) { float s=0; for(i=0;i<l;i++) { for(j=0;j<c;j++) s+=tab[i][j]; } return s; } void main() { int tab[l][c],x,pos1,pos2; float p1,p2; printf("\n Fares Khiary\n\n"); SaisirTab1(&l,&c); printf("\n"); SaisirTab2(tab); printf("----------\n"); p1=SommeTab(tab); p2=p1/(l*c); RemplirTab(tab); printf("\nDonner un entier : "); scanf("%d",&x); pos1=-1; pos2=-1; for(i=0;(i<l && pos1==-1);i++) { for(j=0;(j<c && pos2==-1);j++) { if(tab[i][j]==x) { pos1=i; pos2=j; } } } if(pos1==-1 && pos2==-1) printf("\nAucun\n"); else printf("\nLa position de %d est : %d|%d\n",x,pos1,pos2); printf("\n%.2f %.2f",p1,p2); getch(); system("exit"); void abort(void); }
A voir également:
- Windev tableau 2 dimensions
- Tableau word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
2 réponses
J'ai codé ce programme ci, il fonctionne parfaitement sauf que la recherche ne se fait que sur la première ligne.
Ton programme contient plein d'erreurs, qui sont traduites en warning. Voilà pourquoi il est important de corriger tous les warnings ;-).
int i,j,l,c={0,0,0,0};
c est un nombre. Donc tu ne peux pas l'initialiser comme un tableau => c=0;
Si tu veux tout initialiser en même temps : int i,j,l,c; i=j=l=c=0;
Ou tout simplement : int i, j, l, c; (initialiser par défaut à 0).
Enfin, les variables globales sont à éviter. Il vaut mieux que les variables soient locales.
#include<conio.h>
Non standard.
void main()
Non standard. Le prototype de main() sans argument est : int main(void).
Et la fonction retourne un 0 : return 0;
int tab[l][c],x,pos1,pos2;
Dis autrement : int tab[0][0] (puisque l=c=0)...
Attention, donc aux valeurs. De plus, en C (ISO C89/90), tu ne peux mettre des variables pour définir les dimensions d'un tableau : int tab[LIGNE][COLONNE]; avec #define LIGNE 5 et #define COLONNE 6 (par exemple).
Dans ton cas, tu souhaites faire de l'allocation dynamique. Il faut donc passer par malloc(). Par exemple : int **tab;
tab=malloc(l*sizeof(int*));
for(i=0;i<l;i++) tab[i]=malloc(c*sizeof(int));
Ne pas oublier de faire les free (en sens inverse).
getch();
system("exit");
A remplacer par : system("pause"); return 0;
void abort(void);
A enlever du main().
Cdlt,
Ton programme contient plein d'erreurs, qui sont traduites en warning. Voilà pourquoi il est important de corriger tous les warnings ;-).
int i,j,l,c={0,0,0,0};
c est un nombre. Donc tu ne peux pas l'initialiser comme un tableau => c=0;
Si tu veux tout initialiser en même temps : int i,j,l,c; i=j=l=c=0;
Ou tout simplement : int i, j, l, c; (initialiser par défaut à 0).
Enfin, les variables globales sont à éviter. Il vaut mieux que les variables soient locales.
#include<conio.h>
Non standard.
void main()
Non standard. Le prototype de main() sans argument est : int main(void).
Et la fonction retourne un 0 : return 0;
int tab[l][c],x,pos1,pos2;
Dis autrement : int tab[0][0] (puisque l=c=0)...
Attention, donc aux valeurs. De plus, en C (ISO C89/90), tu ne peux mettre des variables pour définir les dimensions d'un tableau : int tab[LIGNE][COLONNE]; avec #define LIGNE 5 et #define COLONNE 6 (par exemple).
Dans ton cas, tu souhaites faire de l'allocation dynamique. Il faut donc passer par malloc(). Par exemple : int **tab;
tab=malloc(l*sizeof(int*));
for(i=0;i<l;i++) tab[i]=malloc(c*sizeof(int));
Ne pas oublier de faire les free (en sens inverse).
getch();
system("exit");
A remplacer par : system("pause"); return 0;
void abort(void);
A enlever du main().
Cdlt,
Merci fiddy !
???? ???? ???