Besoin d'aide pour ce programme - C - Programmation
Marsh Posté le 27-04-2007 à 07:43:49
ReplyMarsh Posté le 27-04-2007 à 19:19:16
matafan a écrit : Donne le message d'erreur du compilo. |
Voici ce que dit le compilateur :
Error FCT_EX4.H : Declaration syntax error
Error FCT_EX4.H : Declaration syntax error
Error FCT_EX4.C : Declaration syntax error
Marsh Posté le 27-04-2007 à 19:20:16
ReplyMarsh Posté le 27-04-2007 à 20:03:06
tes fonction min() et max() doivent retourner un float mais ne retournent rien. Et main doit retourner un int.
Marsh Posté le 27-04-2007 à 20:08:52
zecrazytux a écrit : ligne ? |
Ligne 11 : FCT_EX4.H : Declaration Syntax Error
Ligne 12 : FCT_EX4.H : Declaration Syntax Error
Ligne 110 : FCT_EX4.C : Declaration Syntax Error
Marsh Posté le 27-04-2007 à 20:19:25
Ah et puis pourquoi cpt = cpt + 1 au lieu de cpt++ ?
Marsh Posté le 27-04-2007 à 20:20:01
-Opera- a écrit : tes fonction min() et max() doivent retourner un float mais ne retournent rien. Et main doit retourner un int. |
Même en fesant ceci cela ne marche pas :
/********************/
/* Fonction Maximum */
/********************/
float max (float *p_tab, int n)
{
int cpt ;
float max ;
max = *p_tab ;
cpt = 1 ;
while (cpt < n)
{
if ( *(p_tab+cpt) > max )
{
max = *(p_tab+cpt) ;
cpt = cpt + 1 ;
}
}
return (max) ;
}
/* Fonction Principale */
case 4 : float v_max ;
v_max = max (p_tab, n) ;
printf("La valeur maximum est %.3f", v_max) ;
break ;
Marsh Posté le 27-04-2007 à 21:50:31
poste ton code avec numeros de ligne et coloration synthaxique on y verra déja plus clair
Marsh Posté le 28-04-2007 à 08:46:32
Problème ici :
Code :
|
il faut écrire
Code :
|
Apparemment c'est le même problème dans la fonction min.
Marsh Posté le 28-04-2007 à 12:06:56
bisounours a écrit : p_tab est float. |
bisounours a écrit : Y a une différence entre tes 2 quotes? Ah si les crochets mais ça ne change rien au déroulement du code. |
T'es sûr que tu connais le C bisounours ?
Marsh Posté le 28-04-2007 à 18:59:57
bisounours a écrit : Y a une différence entre tes 2 quotes? Ah si les crochets mais ça ne change rien au déroulement du code. |
Moi je ne vois pas de crochets mais des accolades. Et justement, ça change énormément au déroulement du code...
bisounours a écrit : Non je sais rien t'es trop fort! C'est la réponse que tu attendais? |
Non, il veut juste connaître ton niveau de C. Parce que parler d'adresses "non entières" et ignorer l'utilité des accolades laisse quand-même rêveur...
bisounours a écrit : Je n'ai pas la prétention d'être un Dieu du C mais il m'arrive de faire des erreurs d'inattention sans sortir de la cuisse de Jupiter. |
Beaucoup sur ce fofo n'en font pas...
bisounours a écrit : En tout cas je propose des solutions au lieu de critiques inutiles. |
Beaucoup sur ce fofo aussi (probablement les mêmes d'ailleurs). Et dans la cat. C, j'ai souvent vu le pseudo de Matafan apparaître...
Marsh Posté le 28-04-2007 à 21:14:39
Ne t'énerve pas ce sont les bases du C que tu ne maîtrises pas c'est tout.
Le problème était que l'incrémentation du compteur cpt était dans l'action prise lorsque le test est vrai,( puisque elle était dans le bloc des crochets/accolades), donc lorsque le test du if n'est pas vrai ça boucle...
Maintenant, si on enlèves les crochets/accolades il n'y a que la mémorisation du max effectuée lorque le test du if réussit et l'incrémentation a toujours lieu donc ça ne boucle plus.
Marsh Posté le 28-04-2007 à 22:34:35
bisounours a écrit : |
ah ouais qd meme...
Marsh Posté le 29-04-2007 à 09:04:39
ReplyMarsh Posté le 29-04-2007 à 11:21:27
Tamahome a écrit : tu devrais sérieusement te remettre en questions... |
Parle à mon cul ma tête est malade.
Marsh Posté le 29-04-2007 à 12:47:34
bisounours a écrit : Parle à mon cul ma tête est malade. |
Pfff... heureusement que tu as supprimé tous tes messages du topic où tu nous sortais toutes tes âneries !!!
Matafan, Trap D, Tamahome et tous les autres pros qui liront ce topic sauront apprécier
Marsh Posté le 29-04-2007 à 12:54:06
ReplyMarsh Posté le 29-04-2007 à 12:59:40
Tamahome a écrit : pis c'est super courageux, on voit qu'il assume... |
Le plus drôle, c'est qu'il existe réellement dans ce fofo un super dieu du C qui se surnomme "bisounours-codeur". Lui ça doit-être son antinomique
Marsh Posté le 29-04-2007 à 13:05:01
J'ai supprimé mes messages qui fesaient preuve d'humanisme de ma part ce dont vous manquez cruellement. Achetez vous une vie sociale! ;-)
Je n'ai guère besoin de faire parti de votre petit clan pour valoriser ma petite personne.
Marsh Posté le 29-04-2007 à 13:12:29
bisounours a écrit : J'ai supprimé mes messages qui fesaient preuve d'humanisme de ma part ce dont vous manquez cruellement. Achetez vous une vie sociale! ;-) |
ton post prouve que si pourtant... tu n'as aucune dignité ou quoi ?
Marsh Posté le 29-04-2007 à 13:15:34
Citation : |
MDR! Tu te crois vraiment important? Allez retourne sur ton nuage ... dernier poste promis, juré, craché.
Marsh Posté le 29-04-2007 à 13:22:27
Il va faire une drôle de gueule l'OP, quand il va revenir lire son topic.
Tiens d'ailleurs, une question au pros justement : l'include de son fichier, il a le droit de le mettre entre <> au lieu de le mettre entre guillemets ? Mon k&r dit que si l'inclusion entre <> contient entre autre le caractère backslash, l'effet est indéfini.
Marsh Posté le 29-04-2007 à 14:56:48
bisounours a écrit : J'ai supprimé mes messages qui fesaient preuve d'humanisme de ma part ce dont vous manquez cruellement. Achetez vous une vie sociale! ;-) |
Si tes messages étaient si charitables, pourquoi les as-tu supprimés ? Tu ne veux plus faire preuve d'humanisme ???
bisounours a écrit : Je n'ai guère besoin de faire parti de votre petit clan pour valoriser ma petite personne. |
Il n'y a aucun clan. Il y a juste eu Matafan qui, lisant tes posts pleins, entre autre d'humanisme mais aussi et surtout d'incongruïtés, t'as posé une question. Il n'y a pas de honte à ne pas connaître le C. Moi je ne connais pas le Ruby ni le Perl mais 1) je n'en fais pas une maladie et 2) je ne vais pas m'incruster dans les fofo qui traitent de ces langages.
Marsh Posté le 26-04-2007 à 22:55:49
Chers amis,
Voici mon problème... Je dois concevoir un programme qui permet de créer un tableau modulable. Pour ce faire j'utilise le compilateur turbo C et j'ai créé mon propre header file dans lequel j'ai placé le prototype de mes fonctions. Tout fonctionne parfaitement sauf deux points... Edition de la valeur minimum et de la valeur maximum.
Lorsque je compile mon programme, il me dit en effet qu'il y a une erreur de syntaxe mais je ne la trouve pas ! Je dois également créer une fonction qui permet de à l'utilisateur de savoir la position de la valeur min et de la valeur max (Là j'ai vraiment besoin d'aide LOL) !
Pouvez m'aider ? Voici mon programme :
D'abord le Header File :
/**************************/
/* Header File fonction exercice 4 */
/**************************/
#ifndef fct_ex4.h
#define fct_ex4.h
int menu (void) ;
int nb_valeur (void) ;
void saisie (float *p_tab, int n) ;
void edit (float *p_tab, int n) ;
float max (float *p_tab, int n) ; /* C'est ici qu'il y a un problème */
float min (float *p_tab, int n) ; /* C'est ici qu'il y a un problème */
void croissant (float *p_tab1, float *p_tab2, int n) ;
void decroissant (float *p_tab1, float *p_tab2, int n) ;
#endif
Ensuite mes fonctions :
/*************/
/* Les fonctions */
/*************/
#include<stdio.h>
#include<conio.h>
#include<D:\TC\1Auto\Ex4\Version2\fct_ex4.h>
/*****************/
/* Affichage du menu */
/*****************/
int menu (void)
{
int choix, x1, y1 ;
printf("Que dsirez-vous ?\n" ) ;
printf("ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\n\n" ) ;
printf("1 --> Introduire le nombre de valeurs\n" ) ;
printf("2 --> Saisie des valeurs\n" ) ;
printf("3 --> Edition du tableau\n" ) ;
printf("4 --> Valeur maximum\n" ) ;
printf("5 --> Valeur minimum\n" ) ;
printf("6 --> Position de la valeur maximum\n" ) ;
printf("7 --> Position de la valeur minimum\n" ) ;
printf("8 --> Classement par ordre croissant\n" ) ;
printf("9 --> Classement par ordre dcroissant\n" ) ;
printf("0 --> Quitter\n\n" ) ;
printf("Faites votre choix : " ) ;
x1 = wherex () ; y1 = wherey () ;
do
{
gotoxy (x1, y1) ;
clreol () ;
scanf ("%d", &choix) ;
} while (choix<0 || choix>9) ;
return choix ;
}
/**************************/
/* Selection du nombre de valeurs */
/**************************/
int nb_valeur (void)
{
int N ;
clrscr () ;
printf("Nombre de valeurs que devra contenir votre tableau : " ) ;
scanf("%d",&N) ;
return N ;
}
/****************/
/* Saisie des valeurs */
/****************/
void saisie (float *p_tab, int n)
{
int x2, y2, i ;
float x ;
clrscr () ;
printf ("Saisie des valeurs\n" ) ;
printf ("ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\n\n" ) ;
i = 0 ;
printf (" Valeur [%2d] = ",i) ;
x2 = wherex () ; y2 = wherey () ;
for (i = 1 ; i < n ; i++)
{
printf ("\n Valeur [%2d] = ", i ) ;
}
for ( i = 0 ; i < n ; i++ )
{
gotoxy (x2,y2) ;
scanf ("%f", &x) ;
p_tab[i] = x ;
y2++ ;
}
}
/*****************/
/* Edition des valeurs */
/*****************/
void edit (float *p_tab, int n)
{
int i ;
clrscr () ;
printf ("Edition des valeurs\n" ) ;
printf ("ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\n\n" ) ;
printf("Vous avez introduit les valeurs suivantes : \n\n" ) ;
for ( i = 0 ; i < n ; i++ )
{
printf("La valeur en [%2d] est = %.3f \n", i, *(p_tab+i));
}
getch () ;
}
/*****************/
/* Fonction Maximum */
/*****************/
float max (float *p_tab, int n)
{
int cpt ;
float max ;
max = *p_tab ;
cpt = 1 ;
while (cpt < n)
{
if ( *(p_tab+cpt) > max )
{
max = *(p_tab+cpt) ;
cpt = cpt + 1 ;
}
}
printf("La valeur maximum est : %f", max) ;
}
/****************/
/* Fonction minimum */
/****************/
float min (float *p_tab, int n)
{
int cpt ;
float min ;
min = *p_tab ;
for(cpt=0; cpt<n ; cpt++)
{
if ( *(p_tab+cpt) < min )
{
min = *(p_tab+cpt) ;
cpt = cpt + 1 ;
}
}
printf("La valeur minimum est : %f", min) ;
}
/*****************/
/* Fonction Croissant */
/*****************/
void croissant (float *p_tab1, float *p_tab2, int n)
{
float provisoir ;
int cpt1, cpt2 ;
for (cpt1=0 ;cpt1<n-1 ; cpt1++)
{
p_tab2 = p_tab1 ;
for (cpt2=cpt1 ; cpt2<n ; cpt2++)
{
if (*p_tab2 < *p_tab1)
{
provisoir = *p_tab2 ;
*p_tab2 = *p_tab1 ;
*p_tab1 = provisoir ;
}
p_tab2++ ;
}
p_tab1++ ;
}
}
/*******************/
/* Fonction Décroissant */
/*******************/
void decroissant (float *p_tab1, float *p_tab2, int n)
{
float provisoir ;
int cpt1, cpt2 ;
for (cpt1=0 ;cpt1<n-1 ; cpt1++)
{
p_tab2 = p_tab1 ;
for (cpt2=cpt1 ; cpt2<n ; cpt2++)
{
if (*p_tab2 > *p_tab1)
{
provisoir = *p_tab2 ;
*p_tab2 = *p_tab1 ;
*p_tab1 = provisoir ;
}
p_tab2++ ;
}
p_tab1++ ;
}
}
Enfin m'a fonction principale :
/*****************/
/* Fonction principale */
/*****************/
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
#include<stdlib.h>
#include<D:\TC\1Auto\Ex4\Version2\fct_ex4.h>
#include<D:\TC\1Auto\Ex4\Version2\fct_ex4.c>
void main (void)
{
int choix ;
int n ;
float *p_tab ;
do
{
clrscr () ;
choix = menu () ;
switch (choix)
{
case 0 : abort () ;
case 1 : n = nb_valeur () ;
p_tab = (float*)malloc(n*sizeof(float)) ;
saisie (p_tab, n) ;
break ;
case 2 : saisie (p_tab, n) ;
break ;
case 3 : edit (p_tab, n) ;
break ;
case 4 : max (p_tab,n) ; /* C'est ici qu'il y a un problème */
break ;
case 5 : min (p_tab,n) ; /* C'est ici qu'il y a un problème */
break ;
case 8 : croissant (p_tab, p_tab, n) ;
edit (p_tab, n) ;
break ;
case 9 : decroissant (p_tab, p_tab, n) ;
edit (p_tab, n) ;
break ;
}
}while (choix!=0) ;
getch () ;
}
A toutes et à tous vraiment un grand merci