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

  FORUM HardWare.fr
  Programmation
  C

  Besoin d'aide pour ce programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide pour ce programme

n°1550308
JMorrison
Posté le 26-04-2007 à 22:55:49  profilanswer
 

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 d‚sirez-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 d‚croissant\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

mood
Publicité
Posté le 26-04-2007 à 22:55:49  profilanswer
 

n°1550344
matafan
Posté le 27-04-2007 à 07:43:49  profilanswer
 

Donne le message d'erreur du compilo.

n°1550773
JMorrison
Posté le 27-04-2007 à 19:19:16  profilanswer
 

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

n°1550775
zecrazytux
Posté le 27-04-2007 à 19:20:16  profilanswer
 

ligne ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
n°1550799
-Opera-
mago spé électricité
Posté le 27-04-2007 à 20:03:06  profilanswer
 

tes fonction min() et max() doivent retourner un float mais ne retournent rien. Et main doit retourner un int.

Message cité 1 fois
Message édité par -Opera- le 27-04-2007 à 20:03:25

---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
n°1550803
JMorrison
Posté le 27-04-2007 à 20:08:52  profilanswer
 


 
Ligne 11 : FCT_EX4.H : Declaration Syntax Error
Ligne 12 : FCT_EX4.H : Declaration Syntax Error
Ligne 110 : FCT_EX4.C : Declaration Syntax Error

n°1550808
-Opera-
mago spé électricité
Posté le 27-04-2007 à 20:19:25  profilanswer
 

Ah et puis pourquoi cpt = cpt + 1 au lieu de cpt++ ? [:mlc]


---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
n°1550810
JMorrison
Posté le 27-04-2007 à 20:20:01  profilanswer
 

-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 ;

n°1550835
zecrazytux
Posté le 27-04-2007 à 21:50:31  profilanswer
 

poste ton code avec numeros de ligne et coloration synthaxique on y verra déja plus clair


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
n°1550881
matafan
Posté le 28-04-2007 à 07:55:03  profilanswer
 

C'est un pointeur vers un float, pas un float.

mood
Publicité
Posté le 28-04-2007 à 07:55:03  profilanswer
 

n°1550883
Trap D
Posté le 28-04-2007 à 08:46:32  profilanswer
 

Problème ici :

Code :
  1. while (cpt < n)
  2. {
  3.    if ( *(p_tab+cpt) > max )
  4.    {
  5.      max = *(p_tab+cpt)   ;
  6.      cpt = cpt + 1 ;
  7.    }
  8. }

il faut écrire

Code :
  1. while (cpt < n)
  2. {
  3.    if ( *(p_tab+cpt) > max )
  4.       max = *(p_tab+cpt)   ;
  5.    cpt = cpt + 1 ;
  6. }

Apparemment c'est le même problème dans la fonction min.


Message édité par Trap D le 28-04-2007 à 08:54:37
n°1550908
matafan
Posté le 28-04-2007 à 12:06:56  profilanswer
 

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 ?

n°1551008
Sve@r
Posté le 28-04-2007 à 18:59:57  profilanswer
 

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...


Message édité par Sve@r le 28-04-2007 à 19:22:54

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1551039
Trap D
Posté le 28-04-2007 à 21:14:39  profilanswer
 

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.

n°1551058
Tamahome
⭐⭐⭐⭐⭐
Posté le 28-04-2007 à 22:34:35  profilanswer
 

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.


 
ah ouais qd meme...  :ouch:


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1551123
Tamahome
⭐⭐⭐⭐⭐
Posté le 29-04-2007 à 09:04:39  profilanswer
 

tu devrais sérieusement te remettre en questions...


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1551143
bisounours
Posté le 29-04-2007 à 11:21:27  profilanswer
 

Tamahome a écrit :

tu devrais sérieusement te remettre en questions...


 
Parle à mon cul ma tête est malade.

n°1551161
Sve@r
Posté le 29-04-2007 à 12:47:34  profilanswer
 

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 :sarcastic:


Message édité par Sve@r le 29-04-2007 à 12:56:29

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1551162
Tamahome
⭐⭐⭐⭐⭐
Posté le 29-04-2007 à 12:54:06  profilanswer
 

pis c'est super courageux, on voit qu'il assume...


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1551164
Sve@r
Posté le 29-04-2007 à 12:59:40  profilanswer
 

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 [:rofl]


Message édité par Sve@r le 29-04-2007 à 13:00:01

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1551165
bisounours
Posté le 29-04-2007 à 13:05:01  profilanswer
 

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.

Message cité 2 fois
Message édité par bisounours le 29-04-2007 à 13:06:59
n°1551167
Tamahome
⭐⭐⭐⭐⭐
Posté le 29-04-2007 à 13:12:29  profilanswer
 

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! ;-)
 
Je n'ai guère besoin de faire parti de votre petit clan pour valoriser ma petite personne.


 
ton post prouve que si pourtant... tu n'as aucune dignité ou quoi ?  :??:


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1551169
bisounours
Posté le 29-04-2007 à 13:15:34  profilanswer
 

Citation :


ton post prouve que si pourtant... tu n'as aucune dignité ou quoi ?  :??:


 
MDR! Tu te crois vraiment important? Allez retourne sur ton nuage ... dernier poste promis, juré, craché.


Message édité par bisounours le 29-04-2007 à 13:16:08
n°1551170
-Opera-
mago spé électricité
Posté le 29-04-2007 à 13:22:27  profilanswer
 

Il va faire une drôle de gueule l'OP, quand il va revenir lire son topic. [:itm]
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.


---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
n°1551197
Sve@r
Posté le 29-04-2007 à 14:56:48  profilanswer
 

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.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
mood
Publicité
Posté le   profilanswer
 


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

  Besoin d'aide pour ce programme

 

Sujets relatifs
[AIDE] Probleme avec un formulairearret du programme sur touche entree
Besoin d'aide pour un premier programmeurgent, svp, j'ai besoin de l'aide sur ce programme en c
besoin d'aide pour un programmebug dans mon programme vb.net besoin d'aide ( resolu)
[PROBLEME] Besoin d'aide pour un petit programme basicBesoin AIDE pour programme sur EEPROM !!! MERCI !!!!
[Visual Basic]: Besoin d'un peu d'aide pour un programme à l'école.Urgent Besoin d'aide pour finaliser un programme ORACLE/JAVA sur lyon
Plus de sujets relatifs à : Besoin d'aide pour ce programme


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