Probleme tableau en C
Fermé
pims
-
14 mars 2009 à 12:06
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 mars 2009 à 14:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 mars 2009 à 14:25
A voir également:
- Probleme tableau en C
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
4 réponses
Bonjour,
void Remplir(int Tab[],int N){
int i;
for(i=0;i<N;i++){
printf("entrer l'entier N° %d:\n",i+1);
scanf("%i",&Tab[i]);
}
-> utilisez plutôt scanf("%i",Tab[i]);
void Remplir(int Tab[],int N){
int i;
for(i=0;i<N;i++){
printf("entrer l'entier N° %d:\n",i+1);
scanf("%i",&Tab[i]);
}
-> utilisez plutôt scanf("%i",Tab[i]);
Baal03
Messages postés
32
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
14 mars 2009
14 mars 2009 à 12:31
14 mars 2009 à 12:31
Salut, utilise sa pour ta fonction min()
#include <values.h> //Pour MAXINT
#define NB_CASE 5
void mininum(int tab[])
{
int min = MAXINT;
for(int index = 0; index < NB_CASE; index ++)
{
if(tab[index] < min){
min = tab[index];
}
}
printf("La valeur minimum est : %d",min);
}
#include <values.h> //Pour MAXINT
#define NB_CASE 5
void mininum(int tab[])
{
int min = MAXINT;
for(int index = 0; index < NB_CASE; index ++)
{
if(tab[index] < min){
min = tab[index];
}
}
printf("La valeur minimum est : %d",min);
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 mars 2009 à 13:21
14 mars 2009 à 13:21
Salut,
Petite remarque, dans ta fonction afficher, tu commences l'affichage à l'indice 1 au lieu de 0.
Et enfin l'erreur venait du fait que dans la fonction min, la condition d'arrêt était trop large. Tu faisais donc une itération en trop en comparant avec un élément ne faisant pas parti du tableau. De plus le minimum est Tab[min] et non tab[i].
Et enfin n'oublie pas d'inclure stdlib.h pour la fonction system.
Cdlt
Petite remarque, dans ta fonction afficher, tu commences l'affichage à l'indice 1 au lieu de 0.
Et enfin l'erreur venait du fait que dans la fonction min, la condition d'arrêt était trop large. Tu faisais donc une itération en trop en comparant avec un élément ne faisant pas parti du tableau. De plus le minimum est Tab[min] et non tab[i].
Et enfin n'oublie pas d'inclure stdlib.h pour la fonction system.
void min(int Tab[],int N){ int i; int min=0; for(i=1;i<N;i++) {if (Tab[i]<=Tab[min]) min=i;} printf("le min est %i",Tab[min]); }
Cdlt
ok, donc jai mis Tab[min] a la place de Tab[i] mais maintenant ,soit ca me renvoi 1 ,soit 2....
Et je n'ai pas trop compri ce que tu as expliqué fiddy. Quelle est l'iteration que je faisais en trop?
Et je n'ai pas trop compri ce que tu as expliqué fiddy. Quelle est l'iteration que je faisais en trop?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 mars 2009 à 14:25
14 mars 2009 à 14:25
Dans ta fonction, tu as mis :
for(i=1;i<=N;i++)
Donc la dernière itération sera i=N. Or le dernier élément du tableau est N-1 puisqu'il s'agit un tableau de N éléments. Voilà pourquoi il faut faire une inégalité stricte : i<N
for(i=1;i<=N;i++)
Donc la dernière itération sera i=N. Or le dernier élément du tableau est N-1 puisqu'il s'agit un tableau de N éléments. Voilà pourquoi il faut faire une inégalité stricte : i<N
14 mars 2009 à 13:16
utilisez plutôt scanf("%i",Tab[i]);
Non !
Avec scanf, on envoie l'adresse.
Il faut bien écrire :
scanf("%i",&Tab[i]);
ou encore
scanf("%i",Tab+i);
14 mars 2009 à 13:26
Il est vrai que scanf(format, * liste_adresses) atteint un pointeur en 2ème argument - il est donc normal de passer votre tableau par adresse.