CALCULATRICE REEL ET COMPLEXE

Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 - 5 avril 2005 à 23:07
cerf_volant Messages postés 4 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 5 mai 2005 - 14 avril 2005 à 15:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30568-calculatrice-reel-et-complexe

cerf_volant Messages postés 4 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 5 mai 2005
14 avril 2005 à 15:54
Je suis de passage sur ce prog, je n'ai pas testé la calculatrice.

je reviens sur
> #include <stdio.h>
> void main()
> {
> printf ( "Hello word !");
> }

Si c'est ca tes cours de C bah va falloir faire reviser le prof (et/ou toi aussi peut etre :) ).
VC est une passoire: si tu prends ton code et le compile sur un autre compilo tu risque de ne pas le voir compiler.

La norme C prévoit qu'une fonction renvoie systematiquement quelque chose et tu n'as pas le droit d'ommettre les void en C. Les IDE comme VStudio t'aident à développer mais un compilateur C digne de ce nom t'affichera une erreur. Sinon c'est le programme qui plantera à l'execution sans prévenir (segmentation fault courant sous linux)
Effectivement ce code fonctionne mais c'est le compilo qui corrige ton texte pour créer un executable correct (et parfois il ne fait pas ce qu'il faudrait...).

Donc tu dois écrire:

#include <stdio.h>
void main(void)
{
printf ( "Hello word !");

return;
}

Parfois le compilo demande une fonction main du type
int main (void){
int valeur
return valeur;
}

voila, rien de personnel mais comme morefaya est en phase d'apprentissage...

ps: bouquins sur la norme, pas fait pour les débutants (quoique avec un peu de patience, on comprend bien) La référence du C norme ANSI/ISO, Claude Delannoy, Ed. Eyrolles ou Le Langage C Norme ANSI, B. Kernighan et D. Ritchie
morefaya Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 11 mars 2006
13 avril 2005 à 23:19
je suis tout a fait d'accord BruNews, et comme c'est mon premier programme pour commence donc il peu parler j'avance sa ce n'etai que pour debuter
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 avril 2005 à 21:52
ha oui ? ben faut pas te gêner tu peux nous en faire une, mais une calculatrice digne de ce nom, pas une simple invite de commande comme ici et ensuite on te croira.
youssefbarca Messages postés 5 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 15 avril 2005
13 avril 2005 à 20:45
tout le monde sait faire une calculatrice
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
12 avril 2005 à 18:11
oui avec devcpp ca compile pas si tu met void main()...
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
6 avril 2005 à 18:02
le premier cours ct ca ? mais on voit juste l'ombre d'une fenetre noire s'afficher?

sinon pour le main je crois c'est la norme ton main doit retourner qqchose sinon win pourrait s'affoler!
Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 1
6 avril 2005 à 11:42
Je sais pas pour le void j'ai jamais rencontré de problème de compilation
Premier cour de C à l'IUT :
#include <stdio.h>
void main()
{
printf ( "Hello word !");
}
Sous VC6 aucun problème , je crois me souvenir ne pas avoir eu non plus de problèmes avec Dev C++ ou Borland C.
Enfin de toute façon c'est pas grave c'est pas ça qui va faire buger Windows ( quoique XD)
morefaya Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 11 mars 2006
6 avril 2005 à 11:23
ok pas de probleme je vais corriger lecode et le remettre.merci pour les conseils.
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
6 avril 2005 à 07:34
Taranael > Main doit tjrs renvoyer un entirer et c'est presque tjrs 0 Je vois pas pk tu veux le déclarer en void : sur certain compilo ca peut en plus générer des erreurs.
Personnellement j'ai rien compris à ta calculette un nomnre complexe c'est bien de la forme a + bi ? Pourquoi tu t'amuses à demander des puissances? à la limite des puissances de 10 je comprendrais mais là je comprends pas.
Autre chose pour traiter entièrement une expression complète c'est extrêment facile :
5.2 + 6.3 => scanf("%f%c%f")
Sinon c'est vrai vaut mieux utiliser des fonctions et des variables claires
a+
Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 1
5 avril 2005 à 23:28
Bon j'me suis un peu battu avec ton code et voilà ce que je dirais d'autre mis à part mon commentaire au dessus (désolé au passage du double mess)
- au début de ton code tu déclares ton main en int , mais finalement tu fais que retourner 0 donc déclares le en void !
- tu as inclus <stdlib.h> mais aucune fonction ne necessite cette bibliothèque , tu peux la virer ! Sinon math.h n'a pas sa place non plus :)
- plutôt que de balancer un main atroce avec 40 variables déclarées au début, utilises plutôt des fonctions , cad dans ton grand switch plutôt que de mettre le code en dur tu fais
switch ( ChoixCalcul )
{
case '2' : CalculReel(); break;
case '3' : CalculComplexe(); break;
default : printf ( "Rate ...");
}
- quand tu fais Variable = Variable * 2 , utilises plutôt la notation plus compacte et plus claire Variable *= 2 , et ça marche avec tous les opérateurs mathématiques
- tu n'as pas traité la division des complexes , si tu ne sais pas comment faire renseignes toi sur internet sur la méthode du conjugué , c'est facile j'ai fait ça en terminale :)
- faute de frappe dans le questionnaire sur les complexes , tu demandes deux fois la puissance de B2 (la première fois il s'agissait de B1)
- quand tu rends un résultat complexe inutile de mettre %d%s%d avec "+i" pour le %s , remplaces directement par %d+i%d
Bon voilà , mis à part le nom des variables c'est à peu près tout ce que j'ai pu remarquer ! On attend la vers 2.0 et sinon si je peux te donner un conseil pour la version 3.0 essait de pouvoir traiter une expression complète d'un seul coup pour les complexes en récupérant une chaine de caractères puis en utilisant des piles ! Je sais que j'avais fait ça en C mais ça fait un moment donc si tu veux plus d'infos demandes moi par mail parce qu'il faut que je retrouve tout ça !
Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 1
5 avril 2005 à 23:07
Une première amélioration très importante à apporter de toute urgence :
Changer le nom de tes variables ! Parce qu'actuellement le code est parfaitement illisible !! J'ai essayé mais je passe mon temps à chercher à quoi correspondait chaque variable !
Le programme perdra pas en rapidité si une variable s'appelle "PremierOperande" au lieu de "a"
Rejoignez-nous