Probleme tableau en C
pims
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, j'ai un petit souci avec mon tableau :je voudrais que mon programme renvoi le min des valeurs mais il me renvoit l'adresse de celles ci (il me semble...)
Quelqu'un trouve t-il mon erreur ? merci !
#include<stdio.h>
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[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]);
}
}
void Afficher(int Tab[],int N){
int i;
for(i=1;i<N;i++)
printf("%d ",Tab[i]);
printf("\n");
}
int main(){
int tableau[7];
Remplir(tableau,7);
Afficher(tableau,7);
min(tableau,7);
system("pause");
return 0;
}
Quelqu'un trouve t-il mon erreur ? merci !
#include<stdio.h>
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[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]);
}
}
void Afficher(int Tab[],int N){
int i;
for(i=1;i<N;i++)
printf("%d ",Tab[i]);
printf("\n");
}
int main(){
int tableau[7];
Remplir(tableau,7);
Afficher(tableau,7);
min(tableau,7);
system("pause");
return 0;
}
A voir également:
- Probleme tableau en C
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une 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]);
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);
}
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?
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);
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.