Erreur de compil en C, qqun peut m'aider ? (pb ultra simple)

Erreur de compil en C, qqun peut m'aider ? (pb ultra simple) - C++ - Programmation

Marsh Posté le 13-02-2003 à 21:28:38    

je suis débutant en C et je ne comprend pas pourquoi j'ai l'erreur "incompatible type for argument 2 of `saisie'"
 
voilà le code source, j'ai juste déclaré et donné un sous-pg qui me permet de faire la saisie de reels dans un tableau
 
#include <stdio.h>
#include <stdlib.h>
 
/** déclaration de sous-pg **/
 
void saisie( int n, float tab[] );
 
 
 
/****** programme principal *******/
 
 
void main ()
{
    /* déclaration variables */
     
    int n_vr;        /* nb de valeurs de vr */
    int n_vs;        /* nb de valeurs de vs */
    float tab_vr;    /* tableau de vr */
    float tab_vs;    /* tableau de vs */
     
    /* saisie du nb de valeurs de vr */
     
    printf ("Combien de valeurs dans vr ? \n" );
    scanf ("%d", &n_vr);
    fflush(stdin);
     
        /* vérif */
         
        while (n_vr <= 0)
        {
                printf ("Erreur, combien de valeurs dans vr ? \n" );
                scanf ("%d", &n_vr);
                fflush(stdin);
        }
 
    /* appel du sous-pg de saisie pour vr */
     
/****** PB ICI :saisie(n_vr, tab_vr);  ******/
 
    /* saisie du nb de valeurs de vs */    
     
    printf ("Combien de valeurs dans vs ? \n" );
    scanf ("%d", &n_vs);
    fflush(stdin);
     
        /* vérif */
         
        while (n_vs <= 0)
        {
                printf ("Erreur, combien de valeurs dans vs ? \n" );
                scanf ("%d", &n_vs);
                fflush(stdin);
        }
         
 
    system("PAUSE" );  
   
}
 
/** sous-pg de saisie **/
 
void saisie ( int n , float tab[] )
 
/*
 
N : saisie
R : permet de saisir des valeurs réelles dans un tableau
E :  
        n : nb de valeurs du tableau
        tab : tableau à remplir
         
S : tab (rempli)
P : n positif
 
*/
 
{
    int i;  /* compteur */
     
    /** remplissage tableau **/
     
    for (i=0 ; i<n ; i++)
    {
        printf ("Entrez la valeur de rang %d " , i+1);
        scanf ("%f", &tab[i]);
        fflush(stdin);
         
        /* vérification */
         
        while (tab[i] <= 0)
        {
                printf("Resaisir valeur " );
                scanf ("%f", &tab[i]);
                fflush(stdin);
        }    
    }
}
 
merci d'avance :hello:


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
Reply

Marsh Posté le 13-02-2003 à 21:28:38   

Reply

Marsh Posté le 13-02-2003 à 21:32:26    

Code :
  1. float tab_vr;    /* tableau de vr */
  2. float tab_vs;    /* tableau de vs */


 
 [:totoz]

Reply

Marsh Posté le 13-02-2003 à 21:42:28    

c koi le pb ?
 
en changeant tab par &tab dans l'appel du ss-pg ca marche
 
il le faut ps en principe non ?  :heink:


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
Reply

Marsh Posté le 13-02-2003 à 21:43:49    

Code :
  1. float tab_vr[];    /* tableau de vr */
  2. float tab_vs[];    /* tableau de vs */


 
ça devrait aller mieux...  :sarcastic:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 21:44:55    

Schumacher a écrit :

c koi le pb ?
 
en changeant tab par &tab dans l'appel du ss-pg ca marche
 
il le faut ps en principe non ?  :heink:  


de mieux en mieux....
tu déclares un tableau et tu passes un pointeur vers un float ! je me demande comment ça peux marcher ton truc.
 
cf ma réponse au dessus !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 21:50:42    

Harkonnen a écrit :

Code :
  1. float tab_vr[];    /* tableau de vr */
  2. float tab_vs[];    /* tableau de vs */


 
ça devrait aller mieux...  :sarcastic:  


 
Euh ouais mais la, la memoire est toujours pas allouée....
 
 
Bon allez, deux solutions :
- si tu connais la taille max de ton tableau (et si c'est pas trop gros, exemple 100 ) tu ecrit ca :
 

Code :
  1. float tab_vr[100];    /* tableau de vr */
  2. float tab_vs[100];    /* tableau de vs */


 
et la ca devrais marcher
- sinon, il faut faire une allocation dynamique de memoire mais je crais que tu ne soit pas encore capable de bien comprendre comment ca marche.

Reply

Marsh Posté le 13-02-2003 à 21:51:04    

fflush(stdin);
 
 
inutile et non-défini
 
beaucoup semble croire que cette ligne est magique....

Reply

Marsh Posté le 13-02-2003 à 21:52:49    

fykman a écrit :


 
Euh ouais mais la, la memoire est toujours pas allouée....


voila ce que c'est d'être trop pressé de répondre....  :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 21:53:11    

++Taz a écrit :

fflush(stdin);
 
 
inutile et non-défini
 
beaucoup semble croire que cette ligne est magique....


 
oui je sais à quoi ça sert on nous l'a expliqué en cours mais on nous conseille de le mettre tout le tps
 


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
Reply

Marsh Posté le 13-02-2003 à 21:55:13    

Schumacher a écrit :


 
oui je sais à quoi ça sert on nous l'a expliqué en cours mais on nous conseille de le mettre tout le tps
 
 


 
Ya des profs, franchement...  :pfff:

Reply

Marsh Posté le 13-02-2003 à 21:55:13   

Reply

Marsh Posté le 13-02-2003 à 21:55:39    

fykman a écrit :


 
Ya des profs, franchement...  :pfff:  

+1 :pfff:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 21:56:17    

à priori ça pose pb sur des caractères par exemple où on peut avoir des résultat aléatoires si on ne le met pas (dixit mon prof)
 
sinon merci pour votre aide c bon j'ai compris  
 
et désolé mais je suis débutant, tout le monde commence bien un jour :jap:


Message édité par schumacher le 13-02-2003 à 21:57:02

---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
Reply

Marsh Posté le 13-02-2003 à 21:57:17    

Schumacher a écrit :

tout le monde commence bien un jour :jap:  


 
Tout a fait  ;)

Reply

Marsh Posté le 13-02-2003 à 21:57:51    

suis je pardonné ? :whistle:


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
Reply

Marsh Posté le 13-02-2003 à 21:59:17    

Schumacher a écrit :

suis je pardonné ? :whistle:


non, tu es condamné à lire le stoustrup en entier en écoutant le dernier single d'Alizée


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 22:02:34    

Schumacher a écrit :

à priori ça pose pb sur des caractères par exemple où on peut avoir des résultat aléatoires si on ne le met pas (dixit mon prof)
 
sinon merci pour votre aide c bon j'ai compris  
 
et désolé mais je suis débutant, tout le monde commence bien un jour :jap:

n'importe quoi. si tu veux te débarasser de ce qu'il y a dans le buffer de stdin, tu le vide en faisant par exemple, pour passer à la ligne suivant
 
http://www.isty-info.uvsq.fr/~rume [...] 4.html#q_4
 
 
 
 

Citation :

14.4 Pourquoi ne jamais faire fflush(stdin) ?
La fonction fflush() a un comportement défini uniquement sur les flux ouverts en écriture tels que stdout. Il est possible que sur votre système, appliquer cette fonction à stdin soit possible, mais c'est alors une extension non standard. Le comportement est indéterminé, et imprévisible.
 
Il faut bien comprendre que stdin n'est pas forcément relié au clavier, mais peut être rattaché à un réseau, un fichier, etc.
 
 
14.5 Comment vider le buffer associé à stdin ?
Une bonne manière est de lire sur le flux tant qu'il n'est pas vide, avec les fonctions habituelles comme fgets() ou getchar(). Voici un exemple avec cette dernière :
 
    c = getchar();
    if (c != '\n';)
        while ( (getchar()) !=  '\n';) {
    };
     
 
Ce morceau de code permet de lire un caractère, et vide ce qui peut rester dans le buffer, notamment le '\n' final.

Reply

Marsh Posté le 13-02-2003 à 22:03:56    

Harkonnen a écrit :


non, tu es condamné à lire le stoustrup en entier en écoutant le dernier single d'Alizée

:pfff:  
 
par contre alizée :love:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
pauvre B.S.

Reply

Marsh Posté le 13-02-2003 à 22:08:20    

c'est qui B.S :??:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 22:09:53    

Schumacher a écrit :

à priori ça pose pb sur des caractères par exemple où on peut avoir des résultat aléatoires si on ne le met pas (dixit mon prof)


 
de l'absurdité de la situation: ton prof te fais faire un truc qui ne fais tout simplement rien ( non-défini et sans effet sous linux,a pres....) et attendant un résultat magique... par contre ça lui viendrait pas à l'idée de controler scanf  :pfff:  
 
en plus les programmes de test, c'est quand meme plus facile de taper les entrées une fois pour toutes dans un fichier et de rediriger ensuite.
 
bref laisse tomber ton fflush

Reply

Marsh Posté le 13-02-2003 à 22:11:34    

Harkonnen a écrit :

c'est qui B.S :??:

tu baisses dans mon estime. t'as jamais pensé que stroustrup avait un prénom?
 
N.B. B.S. a inventé le C++, pas le C qui vient du travail de B.K. & D.R.

Reply

Marsh Posté le 13-02-2003 à 22:24:08    

++Taz a écrit :

tu baisses dans mon estime. t'as jamais pensé que stroustrup avait un prénom?
 
N.B. B.S. a inventé le C++, pas le C qui vient du travail de B.K. & D.R.

Bjarne, évidemment ! Honte sur moi !!! :sweat:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 22:25:10    

++Taz a écrit :

N.B. B.S. a inventé le C++, pas le C qui vient du travail de B.K. & D.R.


Brian Kernighan et Dennis Ritchie ! et sans fautes d'orthographe en plus !! :d


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 22:27:48    

++Taz a écrit :

par contre alizée :love:


toi aussi tu baisses dans mon estime [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 23:12:22    

donc fflush(stdin) totalement inutile, même lors de la lecture d'un caractère ?
 


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
Reply

Marsh Posté le 13-02-2003 à 23:17:02    

Schumacher a écrit :

donc fflush(stdin) totalement inutile, même lors de la lecture d'un caractère ?
 
 


oui
cf le post de Taz pour la méthode à utiliser pour flusher stdin


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed