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

  FORUM HardWare.fr
  Programmation

  Help Pour un débutant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Help Pour un débutant

n°190990
ohrrkan
Posté le 06-08-2002 à 19:36:21  profilanswer
 

je suis sous Xp et donc j'ai prit borland, parcque j'ai aussi un pc sous linux met e-mac est encore bien compliquer pour moi il me demande plein de truc.
donc avec borland j'est essayer de faire un 1er programe et j'ai un probleme. voila le code du programme:
 
 
#include <stdio.h>
main()
{
float valeur= 12.85;
float carre, cube;
int ent;
carre= valeur*valeur;
cube= carre*valeur;
printf ("la valeur%f a pour carré %f et pour cube %f\n", valeur, carre, cube);
ent= cube;
printf ("la partie enrière de son cube est: %d", ent);
}
 
 
et il me met comme erreur :  
[C++ Warning] File1.c(12): W8070 Function should return a value
soit une erreur sur la ligne 12 cad le "}"
donc si qq1 pourrais m'aider la!!!

mood
Publicité
Posté le 06-08-2002 à 19:36:21  profilanswer
 

n°190992
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2002 à 19:39:30  profilanswer
 

la fonction main doit toujours retourner une valeur !  
 
voici ta fonction rectifiée :

Code :
  1. #include <stdio.h>
  2. int main(int argc, char **argv)
  3. {
  4.     float valeur= 12.85;
  5.     float carre, cube;
  6.     int ent;
  7.     carre= valeur*valeur;
  8.     cube= carre*valeur;
  9.     printf ("la valeur%f a pour carré %f et pour cube %f\n",valeur, carre, cube);
  10.     ent= cube;
  11.     printf ("la partie enrière de son cube est: %d", ent);
  12.     return 0;
  13. }


Message édité par Harkonnen le 06-08-2002 à 19:39:49

---------------
J'ai un string dans l'array (Paris Hilton)
n°191002
ohrrkan
Posté le 06-08-2002 à 19:55:54  profilanswer
 

merci harkonnen met dans mon bouquin ou j'est tirer ce code il dise pas de rajoutée ca, je me demande pk?
Entoucas comme ca ya plus d'erreur et ca compile bien et me creait mon .exe
 
parcontre il me reste alors 2 petite question: d'une le .exe lorsque je le lance ne fait aucune action, rien ne se passe???
je suis sous Windows Xp ca vient de ca ou alors ya un autre pb?
 
et ensuite tu pourrais me dire pk a ton avis c'etait pas marquer dans mon bouquin de C?enfin ce que je veut savoir c a qoi serve précisement tes commandes en plus?
 
enfin voila et merci boy

n°191016
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2002 à 20:20:55  profilanswer
 

bon, c'est parti pour un cours abrégé de C !
 
La définition du C Ansi indique que la fonction main doit toujours retourner une valeur. Ca permet par exemple de voir si l'éxécution du programme s'est bien passée ou non. Généralement, si tu retournes 0 (return 0), ça veut dire que l'éxécution s'est faite sans problème. Au fur et à mesure de l'éxécution de ton code, tu peux être amené à faire différents tests de validité, et en fonction de ce test, tu retournes une valeur.
 
Exemple : quand tu créé un socket, tu testes si l'initialisation s'est correctement passée. Si oui, tu continues ton programme, sinon tu renvoies une valeur (2 par exemple) qui te permettra de voir que ton programme ne marche pas parce que l'initialisation du socket s'est mal passée.
 
Le return 0 que je t'ai rajouté est nécessaire, et indique que le programme s'est terminé normalement.
 
La signature de ta fonction signifie ceci :
 
int main(int argc, char **argv)
 
le "int main" signifie que la fonction renverra un integer (une valeur entière).
 
le paramètre argc est le nombre de paramètres que tu as passé en ligne de commandes, +1 pour le nom du programme.  
 
le paramètre argv est un tableau de chaines de caractères qui contient les chaines correspondant aux différents arguments.
 
Ex : test.exe toto1 toto2
 
ici, argc vaudra 3, car il y a 2 paramètres (toto1 et toto2) et le nom du programme (test.exe)
 
argv contiendra les chaines suivantes :
argv[0] = "test.exe";
argv[1] = "toto1";
argv[2] = "toto2";
 
tu pourras ainsi traiter les différentes options de la ligne de commande.
 
Enfin, ton programme fonctionne correctement sous XP. Le problème est qu'il s'agit d'une application console, et donc ça t'affiche le résultat dans la console, qui se referme aussitot. C'est pour ça que tu as l'impression que ça marche pas. Lance ton programme à partir d'une fenêtre MS-DOS.
 
Si tout ça n'est pas marqué dans ton bouquin, c'est parce qu'il est pourri !!! (c'est quoi comme bouquin ?)
Pour le C, un seul bouquin possible : "Le Langage C" de Kernighan et Ritchie, les créateurs du langage. LA référence.
 
Une dernière chose à propos de ton source ! J'espère qu'il ne vient pas de ton bouquin, sinon je te conseille de te faire rembourser !!
 
Pour retourner la partie entière d'un décimal, tu as la fonction modf, incluse dans <math.h>. Ce que tu fais est du bricolage archi faux !!
 
ent = cube;
=> FAUX !! cube est un flottant et ent un entier ! tu auras un cast implicite absolument merdique
 
printf ("la partie enrière de son cube est: %d", ent);
oh la la la .... [:leg9]
 
float valeur= 12.85;
 
à remplacer par const float valeur = 12.85
 
bref... achete le bouquin !!!
 
 


---------------
J'ai un string dans l'array (Paris Hilton)
n°191018
Olivier51
Posté le 06-08-2002 à 20:25:24  profilanswer
 

Autre solution qui marchera :
 

Code :
  1. #include <stdio.h> 
  2.   void main(void
  3.   { 
  4.         float valeur= 12.85; 
  5.         float carre, cube; 
  6.         int ent; 
  7.         carre= valeur*valeur; 
  8.         cube= carre*valeur; 
  9.         printf ("la valeur%f a pour carré %f et pour cube %f\n",valeur, carre, cube); 
  10.         ent= cube; 
  11.         printf ("la partie enrière de son cube est: %d", ent);
  12.   }


 
void signifie pas de valeur, c'est à dire que ton programme n'aura pas besoin d'argument et ne retournera aucune valeur (ce n'est pas pour ça que tu ne pourras rien afficher ou autre ...)
 
Et maintenant tu devrais voir qqch avec ça, j'ai rajouter la fonction getch() (dans conio.h) qui attends l'appuis d'un touche ...
 

Code :
  1. #include <stdio.h> 
  2.   #include <conio.h> 
  3.   void main(void
  4.   { 
  5.         float valeur= 12.85; 
  6.         float carre, cube; 
  7.         int ent; 
  8.         carre= valeur*valeur; 
  9.         cube= carre*valeur; 
  10.         printf ("la valeur%f a pour carré %f et pour cube %f\n",valeur, carre, cube); 
  11.         ent= cube; 
  12.         printf ("la partie enrière de son cube est: %d", ent);
  13.         getch();
  14.   }


n°191031
ohrrkan
Posté le 06-08-2002 à 20:51:26  profilanswer
 

Merci a vous deux pour vos réponse

n°191074
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2002 à 21:57:38  profilanswer
 

suis-je donc le seul a penser que

Code :
  1. ent= cube; 
  2.         printf ("la partie enrière de son cube est: %d", ent);
  3.   }


est du code dégueulasse, et que la fonction modf est bien plus propre ?  :??:


---------------
J'ai un string dans l'array (Paris Hilton)
n°191096
HappyHarry
Posté le 06-08-2002 à 22:33:29  profilanswer
 

Harkonnen a écrit a écrit :

suis-je donc le seul a penser que

Code :
  1. ent= cube; 
  2.         printf ("la partie enrière de son cube est: %d", ent);
  3.   }


est du code dégueulasse, et que la fonction modf est bien plus propre ?  :??:  




 
oui
lu dans le kernighan et ritchie (2e édition page 151) :
"printf convertit, met en forme, et imprime ses arguments sur la sortie standard"
 
edit : correction d'une faute de frappe


Message édité par HappyHarry le 06-08-2002 à 22:33:53
n°191103
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2002 à 22:42:24  profilanswer
 

HappyHarry a écrit a écrit :

 
 
oui
lu dans le kernighan et ritchie (2e édition page 151) :
"printf convertit, met en forme, et imprime ses arguments sur la sortie standard"



 
OK
compile moi ça, utilise GCC, VC, BCB, ce que tu veux ! et si y'en a un qui ne te sort pas un warning, je m'incline.  
et si y'a un warning, c'est qu'il y a du code dégueulasse !


---------------
J'ai un string dans l'array (Paris Hilton)
n°191108
HappyHarry
Posté le 06-08-2002 à 22:51:45  profilanswer
 

Harkonnen a écrit a écrit :

 
 
OK
compile moi ça, utilise GCC, VC, BCB, ce que tu veux ! et si y'en a un qui ne te sort pas un warning, je m'incline.  
et si y'a un warning, c'est qu'il y a du code dégueulasse !




 
en -Wall je te le concede, et pis de toutes facons ca devrait pas faire ce qu'il veut  ;)

mood
Publicité
Posté le 06-08-2002 à 22:51:45  profilanswer
 

n°191424
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-08-2002 à 12:49:02  profilanswer
 

And ze winner is..... :d
 
http://forum.hardware.fr/images/feydrautha.jpg


Message édité par Harkonnen le 07-08-2002 à 12:49:42

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

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

  Help Pour un débutant

 

Sujets relatifs
help 1er programmeGros probleme sur mon script d'inscription... Help me....
[VB] Help newbie : option-Button = radio-button ???masquer les warnings (help!)
[NB] Help, c'est quoi la différence entre PL-SQL et SQLÀ la recherche d'un livre avec exercises pour débutant intermédiaire.
need help pour mettre a jour un selectpb fermeture session.. help!!!!! moi pa comprendre....
[MySQL] Débutant please help !help pour un debutant
Plus de sujets relatifs à : Help Pour un débutant


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