C++ (cosinus, sinus) - C++ - Programmation
Marsh Posté le 18-09-2007 à 00:11:50
- Deja tu peux virer tes if(a > 4), ton programme passe toujours dans la branche else.
- Ensuite, edite ton message et entoure ton code de balises "code", ca sera plus lisible pour tout le monde
- Et pour finir, quelle est la valeur soi disant aberrante que tu obtiens quand tu entres 90 degres ?
Marsh Posté le 18-09-2007 à 10:45:33
bah si tu fais cstdlib, vaudrait mieux cstdio, cmath....
réorganise l'entrée et le test de l'entrée en :
do {
cout<<....
cin>>a;
} while( a pas bon );
do {
cout<<...
cin>>b;
} while( b pas bon );
float result;
switch( a )
{
...:
result =
}
cout << result ...
il est généralement judicieux de découpler entrée/vérification, traitement, sortie.
Marsh Posté le 18-09-2007 à 13:11:16
Citation : float b; |
Il vaut mieux utiliser double que float.
Citation : cout << cos(b * M_PI / 180); |
Il faut écrire 180.0 ou caster 180, sinon la division s'effectue avec un entier pour le résultat intermédiaire.
Marsh Posté le 19-09-2007 à 13:15:22
Tu vérifies si ton angle est supérieur à 360, mais pas s'il est inférieur à 0?
En fait il vaudrait mieux faire l'inverse et faire un modulo 360 non?
361° <=> 1°
Code :
|
Marsh Posté le 19-09-2007 à 17:20:18
laisse tomber tous les if, et passe par un modulo, bcp plus joli à mon gout.
En plus je vois pas pourquoi tu ne peux pas me donner cos de l'angle 4345345 ! cette valeur existe !
Marsh Posté le 18-12-2007 à 14:09:58
Moi je voudrai savoir comment faire pour calculer dans un programme en C++ une tangente hyperbolique d'un nombre complexe et aprè vérifier si l'angle est bon par rapport au sinus et cosinus.
Marsh Posté le 01-01-2008 à 23:03:19
olivthill a écrit : Il faut écrire 180.0 ou caster 180, sinon la division s'effectue avec un entier pour le résultat intermédiaire. |
Non
b * M_PI / 180
pas besoin de cast puisque M_PI est un double.
Marsh Posté le 17-09-2007 à 21:27:06
Voila je dois créer un programme qui affiche un menu (cosinus, sinus, tangente, cotangente) et qui selon le choix, je dois une valeur d'un angle et celui çi me renvoit la valeur.
Donc tout ce passe bien pour les angles simples on va dire genre si je fais cos 60° = 0.5
Par contre si je fais cos 90° je trouve une valeur completement
voici mon code, si quelqu'un pourrait m'aider ça serait sympa, Merci.
#include <cstdlib>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#define M_PI 3.14159265358979323846
int main(int argc, char *argv[])
{
cout <<"\t\tCALCULS TRIGONOMETRIQUES";
int a;
float b;
cout <<"\n\n1.Cosinus";
cout <<"\n2.Sinus";
cout <<"\n3.Tangente";
cout <<"\n4.Cotangente";
cout <<"\n\nEntrer votre choix (1 a 4 puis valider)";
cin >> a;
switch(a)
{
case 1:
if (a > 4)
cout << a <<" est un choix incorrect";
else
cout <<"Donner un angle entre 0 et 360 degres (puis valider) ";
cin >> b;
if ( b > 360)
cout << b <<" degres est une valeur incorrecte (entre 0 et 360) ";
else
cout << cos(b * M_PI / 180);
break;
case 2:
if (a > 4)
cout << a <<" est un choix incorrect";
else
cout <<"Donner un angle entre 0 et 360 degres (puis valider) ";
cin >> b;
if ( b > 360)
cout << b <<" degres est une valeur incorrecte (entre 0 et 360) ";
else
cout << sin(b * M_PI / 180);
break;
case 3:
if (a > 4)
cout << a <<" est un choix incorrect";
else
cout <<"Donner un angle entre 0 et 360 degres (puis valider) ";
cin >> b;
if ( b > 360)
cout << b <<" degres est une valeur incorrecte (entre 0 et 360) ";
else
cout << tan(b * M_PI / 180);
break;
case 4:
if (a > 4)
cout << a <<" est un choix incorrect";
else
cout <<"Donner un angle entre 0 et 360 degres (puis valider) ";
cin >> b;
if ( b > 360)
cout << b <<" degres est une valeur incorrecte (entre 0 et 360) ";
else
cout << 1/tan(b * M_PI / 180);
default:
cout <<"\n\nChoix invalide";
break;
}
getch();
system("\n\nPAUSE" );
return EXIT_SUCCESS;
}