CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Aide débutant] C++

Zephiel
Zephiel
Niveau 10
30 juillet 2006 à 11:01:12

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

  1. include <cstdio>
  2. include <cstdlib>
  3. include <iostream>
  4. include <cmath>

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

godrik
godrik
Niveau 30
30 juillet 2006 à 11:54:09

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)

Zephiel
Zephiel
Niveau 10
30 juillet 2006 à 12:28:23

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

Pseudo supprimé
Pseudo supprimé 30 juillet 2006 à 12:47:05

Probablement un problème de cast. SQRT ne semble pas définie pour le type int.

godrik
godrik
Niveau 30
30 juillet 2006 à 12:56:34

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.

Zephiel
Zephiel
Niveau 10
30 juillet 2006 à 13:34:55

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 ?

godrik
godrik
Niveau 30
30 juillet 2006 à 13:49:03

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

Zephiel
Zephiel
Niveau 10
30 juillet 2006 à 15:00:15

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

Zephiel
Zephiel
Niveau 10
30 juillet 2006 à 15:05:44

Désolé du double post :

C´est bon ça marche niquel avec double :ok:

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é :) )

Bigloo
Bigloo
Niveau 10
30 juillet 2006 à 16:22:47

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)

Zephiel
Zephiel
Niveau 10
30 juillet 2006 à 16:39:52

D´accord... :ok:

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

Bigloo
Bigloo
Niveau 10
30 juillet 2006 à 16:54:12

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

Zephiel
Zephiel
Niveau 10
30 juillet 2006 à 17:58:09

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

godrik
godrik
Niveau 30
30 juillet 2006 à 22:12:55

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.

Zephiel
Zephiel
Niveau 10
31 juillet 2006 à 20:03:23

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

godrik
godrik
Niveau 30
31 juillet 2006 à 21:13:12

pour le systeme numerique
http://www.mandragor.org/tutoriels/le_systeme_numerique/0

Zephiel
Zephiel
Niveau 10
31 juillet 2006 à 22:30:39

Merci beaucoup pour le site :ok:

Zephiel
Zephiel
Niveau 10
01 août 2006 à 13:25:40

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 ? :question:

Je suis vraiment désolé de vous embété avec ces questions mais j´ai besoin d´être sûr pour m´amélioré :)

godrik
godrik
Niveau 30
01 août 2006 à 15:04:23

il faut le representer sur plus de place.
2 octets par exemple te permettent de compter jusqu´a 65535

Zephiel
Zephiel
Niveau 10
01 août 2006 à 15:50:57

Ah bah oui...pourquoi ce limité à un octet...chuis con... :honte:

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment