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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Convertisseur en langage C

n°1843999
xilebo
noone
Posté le 28-01-2009 à 08:45:23  profilanswer
 

Reprise du message précédent :
Dans quel but tu souhaites faire une pause dans ton programme ?
 
Si c'est pour afficher la valeur lors de tes tests sans que la fenêtre ne se ferme, je te conseille plutôt de mettre des points d'arrêts dans ton programme.
 
Et si tu exécutes ton programme en externe (à partir d'une console), ton "pause" ne servira à rien.

mood
Publicité
Posté le 28-01-2009 à 08:45:23  profilanswer
 

n°1844001
esox_ch
Posté le 28-01-2009 à 08:49:03  profilanswer
 

Et pis c'est pas portable :o (ce qui est fort pour un programme de 15 lignes :p)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1844003
Un Program​meur
Posté le 28-01-2009 à 08:50:07  profilanswer
 

jojomisterjo a écrit :

Oui donc pour l'histoire de la pause, c'est car j'affiche la console, et si je ne la mets pas, la fenête apparait et disparait aussitôt


 
OK: environnement de developpement mal foutu.
 

Citation :

Vous dîtes ceci "Code :
 
double calculhomme(int kg, int volume, int degre)"
 
Mais, j'ai essayé de faire cela et mon debugger ( je bosse avec DEV ++ ) me dit que les variables ne sont pas définit et ce dès mon permier scanf ( scanf("%ld", &kg); )
 
Voilà, c'est un problème non ?


 
Oui. Le probleme est que tu ne maitrises pas encore assez les bases pour poser des questions sur des forums en esperant comprendre les reponses.

n°1844143
jojomister​jo
Posté le 28-01-2009 à 12:30:58  profilanswer
 

aie aie ! Mais si j'enlève ma pause, ceci n'apparaitra pas à l'écran    :     printf("\nVous etes apte a conduire." );                      
                   else printf("\nVous n'etes pas apte a conduire." );    
Sauf que vous ne répondez pas à ma question, la pause ce n'est pas mon problème
 
---> Vous dîtes ceci "Code :  
 
double calculhomme(int kg, int volume, int degre)"  
 
Mais, j'ai essayé de faire cela et mon debugger ( je bosse avec DEV ++ ) me dit que les variables ne sont pas définit et ce dès mon permier scanf ( scanf("%ld", &kg); )  
 
Voilà, c'est un problème non ?  
 

n°1844148
jojomister​jo
Posté le 28-01-2009 à 12:40:04  profilanswer
 

Justement, j'essaie de les comprendre les bases.
 
C'est pas sorcier je vous demande juste pourquoi si j'enléve mes variables kg =0, volume = 0 et degre = 0; elle ne sont pas reconnues
 
Or que dans ma fonction du départ, je les définit par double calculhomme(int kg, int volume, int degre)"  
 
Voilà, juste ça que je ne perçois pas

n°1844150
jojomister​jo
Posté le 28-01-2009 à 12:46:29  profilanswer
 

... peut être car ce sont des variables locales non ?

n°1844187
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 28-01-2009 à 13:43:34  profilanswer
 

as tu déclaré le prototype de la fonction quelque part ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1844192
jojomister​jo
Posté le 28-01-2009 à 13:46:53  profilanswer
 

Absolument pas, ce n'est pas nécessaire car mes 2 fonctions sont définies tout en haut, donc le pc lit les 2 fonctions avant de lire main.c

n°1844264
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 15:44:15  profilanswer
 

jojomisterjo a écrit :

Justement, j'essaie de les comprendre les bases.
 
C'est pas sorcier je vous demande juste pourquoi si j'enléve mes variables kg =0, volume = 0 et degre = 0; elle ne sont pas reconnues
 
Or que dans ma fonction du départ, je les définit par double calculhomme(int kg, int volume, int degre)"  
 
Voilà, juste ça que je ne perçois pas


 
Il y a déjà un truc qui ne va pas, sauf erreur : Tu définies dans le prototype de calculhomme des int, et dans ton main des long.
Commence donc par définir le bon type de variables attendus par tes fonctions.

n°1844266
jojomister​jo
Posté le 28-01-2009 à 15:54:11  profilanswer
 

oui oui !!!! ok mais là dans mon dernier post j'ai mis int car on m'a reproché d'utiliser un long pour définif un entier donc après je mets int bien entendu.
 
Non mais j'a pigé, c'est une histoire de portée des variables, donc ce que j'ai fait c'est bon  hihi
 

mood
Publicité
Posté le 28-01-2009 à 15:54:11  profilanswer
 

n°1844268
jojomister​jo
Posté le 28-01-2009 à 16:00:44  profilanswer
 

Merci, je n'avais pas perçu que dans ma fonction mes variables d'entrée ne doivent pas forcément avec pour noms kg, volume, degre
Je peux mettre ce que je veux du temps que je les modifie dans mon calcul
 
Voilou, thanks for you

n°1844350
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 18:04:07  profilanswer
 

jojomisterjo a écrit :

Merci, je n'avais pas perçu que dans ma fonction mes variables d'entrée ne doivent pas forcément avec pour noms kg, volume, degre
Je peux mettre ce que je veux du temps que je les modifie dans mon calcul
 
Voilou, thanks for you


 
Hein? J'ai rien compris :D.

n°1844380
jojomister​jo
Posté le 28-01-2009 à 18:32:35  profilanswer
 

Merci, je n'avais pas perçu que dans ma fonction mes variables d'entrée ne doivent pas forcément AVOIR pour noms kg, volume, degre (variables définies dans main)
J'ai compris la portée des variables (globales, locales...)
 
 
Voilou, thanks for you
 

n°1844397
Elmoricq
Modérateur
Posté le 28-01-2009 à 19:17:09  profilanswer
 


[:prozac]
 
Ah, et tu galèrerais moins si tu te procurais un livre de C. Personne ne se lance dans un langage inconnu sans se documenter un minimum avant, pour une bonne raison : tu perds un temps monstrueux sur ce qui est expliqué dans les premières pages de n'importe quel cours.

n°1844423
jojomister​jo
Posté le 28-01-2009 à 20:38:02  profilanswer
 

--> lesitedu0

n°1844432
jojomister​jo
Posté le 28-01-2009 à 21:10:28  profilanswer
 

Mais quel est le problème dans ce code !
Je désire enfait obtenir une nouvelle valeur de mon nombre de départ mais toujours en gardant la valeur de départ en mémoire.
 
#include <stdio.h>
#include <stdlib.h>
 
 
void triplePointeur(long nombree);
 
 
 
int main(int argc, char *argv[])
{
    long nombre = 5, nbmodif = 0;
    long *pointeur = &nbmodif;  
 
    triplePointeur(nombre);  
    printf("%ld", nbmodif);  
    system("pause >nul" );
    return 0;
}
 
 
void triplePointeur(long nombree)
{
     
    *pointeur = nombree*3;
}

n°1844433
xilebo
noone
Posté le 28-01-2009 à 21:13:26  profilanswer
 

Problème de portée de variable. Pointeur n'existe pas dans triplePointeur. Tu l'as déclaré dans main(), il n'est donc pas visible en dehors de main().
 

n°1844437
jojomister​jo
Posté le 28-01-2009 à 21:23:18  profilanswer
 

Oui mais regardons ce code, pointeur est déclaré dans main() est ça fonctionne :
 
void triplePointeur(long *pointeurSurNombre);
 
int main(int argc, char *argv[])
{
    long nombre = 5;
    long *pointeur = &nombre;  
 
    triplePointeur(pointeur);  
    printf("%ld", *pointeur);  
 
    return 0;
}
 
void triplePointeur(long *pointeurSurNombre)
{
    *pointeurSurNombre *= 3; }

n°1844439
xilebo
noone
Posté le 28-01-2009 à 21:25:03  profilanswer
 

Relis ma phrase :)
 
Dans ton second exemple, pointeurSurNombre existe bien dans triplePointeur, c'est un paramètre de ta fonction.

n°1844442
jojomister​jo
Posté le 28-01-2009 à 21:31:08  profilanswer
 

et maintenant ?
 
#include <stdio.h>  
#include <stdlib.h>  
 
 
void triplePointeur(long nombree);  
 
 
 
int main(int argc, char *argv[])  
{  
    long nombre = 5, nbmodif = 0;  
    long *pointeur = &nbmodif;  
 
    triplePointeur(nombre);  
    printf("%ld", nbmodif);  
    system("pause >nul" );  
    return 0;  
}  
 
 
void triplePointeur(long nombree)  
{  
    long *pointeur = NULL;  
    *pointeur = nombree*3;  
}  

n°1844443
jojomister​jo
Posté le 28-01-2009 à 21:32:50  profilanswer
 

NON pas ca

n°1844444
jojomister​jo
Posté le 28-01-2009 à 21:34:14  profilanswer
 

Je définis pointeur dans triplePointeur et ça m'affiche 0 ...
 
En mettant ceci :
 
#include <stdio.h>  
#include <stdlib.h>  
 
 
void triplePointeur(long nombree);  
 
 
 
int main(int argc, char *argv[])  
{  
    long nombre = 5, nbmodif = 0;  
    long *pointeur = &nbmodif;  
 
    triplePointeur(nombre);  
    printf("%ld", nbmodif);  
    system("pause >nul" );  
    return 0;  
}  
 
 
void triplePointeur(long nombree)  
{  
    long nbmodif = 0;
    long *pointeur = &nbmodif;  
    *pointeur = nombree*3;  
}  

n°1844449
xilebo
noone
Posté le 28-01-2009 à 21:44:16  profilanswer
 

tu vas avoir un beau segmentation fault :o
 
Si tu veux créer une fonction permettant de multiplier par 3 une valeur (ici nbmodif), soit tu passes en paramètre la valeur, tu fais le calcul, et tu retournes la valeur calculée, soit tu passes l'adresse de ta variable à ta fonction.
 

Code :
  1. long triple(long nombre) ;
  2. int main(){
  3. long nbmodif = 5;
  4. nbmodif = triple(nbmodif);
  5. // printf ...
  6. return 0;
  7. }
  8. long triple(long nombre) {
  9. return 3*nombre;
  10. }


 

Code :
  1. void triple(long *nombre) ;
  2. int main(){
  3. long nbmodif = 5;
  4. triple(&nbmodif);
  5. // printf ...
  6. return 0;
  7. }
  8. void triple(long *nombre) {
  9. *nombre *= 3;
  10. }


 
Comme on a pu te le conseiller ci-dessus, le langage C de K&R est la base pour commencer (et non le site du zéro).

n°1844456
jojomister​jo
Posté le 28-01-2009 à 22:07:35  profilanswer
 

oui, mais je voulais tout de même conserver le 5 ici, or que votre code ne le permet pas
J'achéterai le livre
Mais svp dîtes moi le probléme dans mon dernier code
svp

n°1844461
jojomister​jo
Posté le 28-01-2009 à 22:22:46  profilanswer
 

J'ai trouvé ce que je voulais
 
#include <stdio.h>  
#include <stdlib.h>  
 
 
void triplePointeur(long nombre);  
 
 
 
int main(int argc, char *argv[])  
{  
     
     
     
    long nombre = 5;
    triplePointeur(nombre);  
 
    printf("%ld", nombre);
    system("pause >nul" );  
    return 0;  
}  
 
 
void triplePointeur(long nombre)  
 
 
{  
     
    long nbmodif = 0;  
    long *pointeur = &nbmodif;
    *pointeur = nombre*3;  
    printf("%ld\n", nbmodif);  
}  

n°1844469
Joel F
Real men use unique_ptr
Posté le 28-01-2009 à 22:58:36  profilanswer
 

mes yeux v_v
 
et oublei le site du zero, comem son nom l'indique, il remplis de connerie sans nom.

n°1844486
jojomister​jo
Posté le 29-01-2009 à 00:17:39  profilanswer
 

ah bon, ça me semblait expliquer de manière ludique et complète.

n°1844496
Elmoricq
Modérateur
Posté le 29-01-2009 à 06:42:57  profilanswer
 

jojomisterjo a écrit :

ah bon, ça me semblait expliquer de manière ludique et complète.


 
Encore une fois : "Le Langage C", de Kernighan & Ritchie.
 
Ou à la limite : http://publications.gbdirect.co.uk/c_book/
Pas très à jour sur les normes, mais bon c'est gratuit.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
typelist et C++Ox[C#] - Envoi d'email avec variables
Introspection en C++ ?Recherche programmer C++
[C] aide polynomesMicrosoft compiler C/C++ 7.0
[C++] RESOLU - Imprimer la valeur d'un pointeur sans le prefixe 0x?J'éssai de coder sha1 en C !
[C] Conversion Hexa vers ASCIIB. Stroustrup - Programming: Principles and Practice Using C++
Plus de sujets relatifs à : Convertisseur en langage C


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