Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1127 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°308818
schumacher
Posté le 13-02-2003 à 21:28:38  profilanswer
 

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.
mood
Publicité
Posté le 13-02-2003 à 21:28:38  profilanswer
 

n°308823
fykman
Errare Humanum Est
Posté le 13-02-2003 à 21:32:26  profilanswer
 

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


 
 [:totoz]

n°308832
schumacher
Posté le 13-02-2003 à 21:42:28  profilanswer
 

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.
n°308833
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:43:49  profilanswer
 

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)
n°308834
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:44:55  profilanswer
 

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)
n°308844
fykman
Errare Humanum Est
Posté le 13-02-2003 à 21:50:42  profilanswer
 

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.

n°308846
Taz
bisounours-codeur
Posté le 13-02-2003 à 21:51:04  profilanswer
 

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

n°308849
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:52:49  profilanswer
 

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)
n°308850
schumacher
Posté le 13-02-2003 à 21:53:11  profilanswer
 

++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.
n°308852
fykman
Errare Humanum Est
Posté le 13-02-2003 à 21:55:13  profilanswer
 

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:

mood
Publicité
Posté le 13-02-2003 à 21:55:13  profilanswer
 

n°308853
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:55:39  profilanswer
 

fykman a écrit :


 
Ya des profs, franchement...  :pfff:  

+1 :pfff:


---------------
J'ai un string dans l'array (Paris Hilton)
n°308854
schumacher
Posté le 13-02-2003 à 21:56:17  profilanswer
 

à 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.
n°308857
fykman
Errare Humanum Est
Posté le 13-02-2003 à 21:57:17  profilanswer
 

Schumacher a écrit :

tout le monde commence bien un jour :jap:  


 
Tout a fait  ;)

n°308858
schumacher
Posté le 13-02-2003 à 21:57:51  profilanswer
 

suis je pardonné ? :whistle:


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°308862
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:59:17  profilanswer
 

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)
n°308864
Taz
bisounours-codeur
Posté le 13-02-2003 à 22:02:34  profilanswer
 

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.

n°308867
Taz
bisounours-codeur
Posté le 13-02-2003 à 22:03:56  profilanswer
 

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.

n°308869
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 22:08:20  profilanswer
 

c'est qui B.S :??:


---------------
J'ai un string dans l'array (Paris Hilton)
n°308870
Taz
bisounours-codeur
Posté le 13-02-2003 à 22:09:53  profilanswer
 

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

n°308872
Taz
bisounours-codeur
Posté le 13-02-2003 à 22:11:34  profilanswer
 

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.

n°308894
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 22:24:08  profilanswer
 

++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)
n°308896
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 22:25:10  profilanswer
 

++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)
n°308899
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 22:27:48  profilanswer
 

++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)
n°308953
schumacher
Posté le 13-02-2003 à 23:12:22  profilanswer
 

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.
n°308961
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 23:17:02  profilanswer
 

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)
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
[vb] detecter une erreurFonction COPY, erreur persistante et très gênante....
[PHP] Erreur incompréhensible d'accès fichier[SQL] Requete avec LIKE : erreur de syntaxe O_o
Erreur avec SetCommState, please help me[flash]=lier du texte à un lien http = erreur de syntaxe
erreur signalé par le validateur ?Erreur Visualbasic sous access 2000 à l'ouverture d'un menu perso
Simple redirection ... comment faire ...Erreur de segmentation suite au passage à SuSE 8.1
Plus de sujets relatifs à : Erreur de compil en C, qqun peut m'aider ? (pb ultra simple)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR