Salut,
J´ai chercher un peu sur le forum pour avoir la fonction racine carré, et j´ai eu cette fonction :
sqrt()
Vala, moi, peinard, je m´entraine et je tente de faire un prog qui calculerai la longueur de l´hypothénuse avec pytagore :
//
// Utilisation du théoréme de Pytagore
//
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
// saisie de la longueur du côté a
int ca;
cout << "Entrez la longueur du cote a : ";
cin >> ca;
// saisie de la longueur du côté b
int cb;
cout << "Entrez la longueur du cote b : ";
cin >> cb;
// lance le calcul du côté c
int cc;
cc = sqrt((ca * ca) + (cb * cb));
// affiche le résultat
cout << "Longueur de l´hypothenuse : ";
cout << cc << endl;
// attend pour terminer le programme que l´uti
lisateur
// lise le contenu de la fenêtre puis appuie s
ur une touche
system("PAUSE");
return 0;
}
Valà, mon 1er prog en C++...........
Mais il marche pas >___<
Est ce que vous pourrez voir un petit peu où ça cloche (moi perso je vois pas)
Ou alors la commande pour les exponantiel...
((ca * ca) + (cb * cb))^(1/2) marche pas >....<
Vala, merci ![]()
bon, tu dis que ca ne marche pas, mais tu ne dis pas pourquoi. Qu´est ce qui te fait dire que ca ne marche pas . Une erreur de compilation, une erreur a l´execution, ou les résultats ne correspondent pas a ton attente.
Bon, en l´occurence, ca a l´air d´etre le 3 parceque:
// lance le calcul du côté c
int cc;
cc = sqrt((ca * ca) + (cb * cb));
tu stocke une racine carrée dans un entier, il y a
toutes les chances que cette valeur ne soit pas entier, tu vas donc obtenir un arrondi.
D´ailleurs je penses que ton compilateur doit te le dire dans un warning du genre (int from float conversion without explicit cast)
J´ai essayé avec cc = ((ca * ca) + (cb * cb))^(1/2)
Pour ca = 3 et ca = 4 le résultat affiché est 25 au lieu de 5, donc une erreur au niveau de la racine ( x^(1/2) = Racine(x) )
Ensuite j´ai changer avec sqrt() et la le compilateur (en l´occurence Dev-C++) refuse de le compiler...voici le message :
C:\Dev-Cpp\Test\Pyta.cpp
[Warning] In function `int main(int, char**)´:
24 C:\Dev-Cpp\Test\Pyta.cpp
call of overloaded `sqrt(int)´ is
163 C:\Dev-Cpp\include\math.h
candidates are: double sqrt(double)
465 C:\Dev-Cpp\include\c++\cmath
long double std::sqrt(long
461 C:\Dev-Cpp\include\c++\cmath
float std::sqrt(float)
Je sais pas si c´est très clair mais c´est ça...
Probablement un problème de cast. SQRT ne semble pas définie pour le type int.
l´operateur ^ en C++ est l´operateur "ou binaire exclusif" et non l´operateur mise a la puissance (qui d´ailleurs n´existe pas. La fonction pow existe)
Ton compilateur te dit (ce qui est etonnant c´est que le mien ne me le dit pas) que tu essaye d´appeler la fonction sqrt en lui passant un int en parametre.
Mais lui connait 3 fonction sqrt, une qui prend un float, un qui prend un int et un qui prend un double. Donc il ne sait pas laquelle il doit choisir.
Si tu ecris sqrt((double)((ca*ca)+(cb*cb))), tu va lui dire de transformer ca*ca... en double. Il saura donc qu´il doit prendre la fonction sqrt pour les doubles.
Ca à l´air de marcher avec la fonction double...j´ai pas très bien compris ça mais ça doit bien être expliquer par Les Nuls...
Autre chose, comment lui demandé de ne pas arrondir les nombres ?
il est obligé d´arrondir a partir du moment ou tu utilises un int. (int pour integer soit entier)
Si tu ne veux pas qu´il arrondisse. Utilises un double.
double cc = sqrt...
Erf...
Moi j´ai cru que "int" c´était pour définir une variable...
Comme "set" en AppleScrip...
M´enfin...merci pour vos réponse ![]()
Désolé du double post :
C´est bon ça marche niquel avec double
Merci beaucoup
Erf...m´enfin c´est du prog en 32 bit sur console, c´est moche comparé aux belles fenetre qu´on peut avoir en AS
Prochain objectif => Entrer les coordonnées de 2 points et afficher l´équation de la droite (faut y allez progressivement pour s´amélioré
)
Tu peux pas comparer l´AppleScript (qui est fait pour faire des programmes rapidement) et le C++. C´est loin d´être le même niveau. Plus tard tu feras des "belles fenêtres" en C++, et tu seras un peu dépité par la complexité de la chose - mais par contre tu sauras réellement ce que tu fais, et tu auras aussi plus de liberté (tu ne seras pas limité aux outils Apple)
D´accord...
Bah pressé d´arrivé au jour ou je pourrai crée de belles fenetre
Par contre c´est vrai qu´AS est assez limité (3 boutton au max c´est vraiment pas assez), mais il est vachement facile à assimilé...
J´ai bien essayé aussi le VB mais je comprends rien à la version PC (avoir les bouttons à désiné et tout :s ) par contre sur ma petite calculette graphique ça passe sans probleme
M´enfin je comprends pas l´utilité d´avoir séparé en "int","double","float","long",...pour désingé les variables...le petit "set" d´AS convient parfaitement aux problemes les plus poussé...
"Par contre c´est vrai qu´AS est assez limité (3 boutton au max c´est vraiment pas assez), mais il est vachement facile à assimilé... "
-> Ca c´est faux, fais des recherches du côté d´AppleScript Studio pour t´en convaincre. Je détaille pas parce que c´est pas le sujet ici, et que d´ailleurs AppleScript m´intéresse peu.
"M´enfin je comprends pas l´utilité d´avoir séparé en "int","double","float","long",...pour désingé les variables...le petit "set" d´AS convient parfaitement aux problemes les plus poussé..."
-> Pour toi c´est simple, pour la machine ça demande du code déjà écrit qui traite les choses à ta place : plus lent, plus de dépendances avec d´autres trucs. Dans la plupart des cas, on n´a pas besoin de tant de rapidité et de performances mais ça c´est autre chose.
Mouais...t´as raison, on as pas besoin de rapidité en régle général...
Par contre le confort compte enormement, m´enfin, il faut faire le compromis confort ou performances ![]()
historiquement, le C++ est une evolution du langage C.
Le C est un langage système. On peut voir ca comme une "surcouche a l´assembleur". Il devient donc normal de séparer de facon clair et precis les différents types qui existent dans le processeur.
Resalut :
J´ai pas compris également deux chose :
Est ce que, dans le language binaire :
0 = 0
1 = 1 = 00000001 (en octet)
10 = 2 = 000000010
11 = 3
100 = 4
101 = 5
110 = 6
111 = 7
1000 = 8
etc...
Et est ce qu´en hexadécimal :
0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9
A = 10
B = 11
etc...
Et j´ai également pas compris l´octal...
Derniere question, est ce qu´il est possible de crée des choix en sélectionant les options avec les fleches avec les truc écris genre :
Que voulez vous faire :
Calcul simple
Calcul complexe
Autrement que de dire : Entrer un nombre positif pour "Calcul simple", Entre un nombre négatif pour "Calcul complexe"...
Merci ![]()
pour le systeme numerique
http://www.mandragor.org/tutoriels/le_systeme_numerique/0
Merci beaucoup pour le site ![]()
Euh mince...j´ai pas compris un truc...
En octet, le plus grand nombre qu´on peux écrire c´est : 11111111 = 255 si j´ai bien compris...
Et si on veux representé un nombre plus grand en binaire ?
Je suis vraiment désolé de vous embété avec ces questions mais j´ai besoin d´être sûr pour m´amélioré ![]()
il faut le representer sur plus de place.
2 octets par exemple te permettent de compter jusqu´a 65535
Ah bah oui...pourquoi ce limité à un octet...chuis con... ![]()