Merci a tous pour votre aide, et surtout votre patience.
Merci beaucoup de m'aider a progresser comme ca ! Juste une petite question Michelbilaud, a quoi correspond les lignes que tu ajoute, moi je lis que quand operation n'est pas égal a +...et pourtant ca marche ! La magie de la programmation.
Une autre question, je veux ajouter un programme qui permet que si l'opération rentrée n'est pas valide ca affiche un message d'erreur :
if (operation != '+' || '-' || '*' || '/')/*Si l'opération n'est pas valide*/
{
printf("Je crois que l'operation que tu as rentree n'est pas valide !");
}
Je crois que l’opération que tu as rentrée n'est pas valide ! s'affiche a chaque fois même quand l'opération rentrée est bonne...
- Edité par CodeLearner1 26 janvier 2020 à 21:07:07
Il faut à chaque fois rappeler la variable. Et du coup l'opérateur est && je crois. (Sinon, il évalue '+' || '-' || '*' (évaluation qui n'a pas grand sens ici − mais c'est ce qu'il fait) et, ensuite, vérifie si 'operation' est différent du résultat de cette évaluation.)
Je veux maintenant calculer tout les diviseurs d'un nombre, j'ai donc agrandi mon programme.
Sauf que j'ai un message d'erreur Windows...
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char* argv[])
if (Choix == 2)
{
printf("Rentrez un nombre pour connaitre ses diviseurs !");
int nombreChoisi=0, diviseurs=0;
scanf("%d", nombreChoisi);
do
{
nombreChoisi / diviseurs++;
} while (diviseurs > sqrt(nombreChoisi));
}
return 0;
}
et l'erreur :
Qui correspond a ca :
Merci d'avance
- Edité par CodeLearner1 28 janvier 2020 à 22:06:15
Du coup j'ai modifié mon programme et je l'ai testé ...
if (Choix == 2)
{
printf("Rentrez un nombre pour connaitre ses diviseurs !\n : ");
int nombreChoisi = 0, a=2;
scanf("%d", &nombreChoisi);
if(nombreChoisi % a == 0)
{
printf("Les diviseurs de %d sont : ", nombreChoisi);
while (a <= sqrt(nombreChoisi))
{
if (nombreChoisi % a == 0)
{
printf("%d; ", a);
if (a != (nombreChoisi % a))
{
printf("%d; ", nombreChoisi / a);
}
}
a++;
}
}
if(nombreChoisi % 2 != 0)
{
printf("Ton nombre est premier !");
}
}
Je ne trouve pas d'erreur ou d’exceptions mais je ne sais pas par quoi remplacer le 2 pour savoir si un nombre est premier, si il y a des exceptions.
Bon bah voila, j'ai maintenant une calculette qui me fait aussi la liste des diviseurs d'un nombre
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char* argv[])
{
printf(" ==Menu==\nChoisissez une option\n1 : Calculette\t2 : Ensemble des diviseurs d'un entier naturel\n3 : Qqch\t4 : Qqcch\n : ");/*Menu*/
int Choix=0;/*declare la variable du menu*/
scanf("%d", &Choix);
if (Choix != 1 && Choix != 3 && Choix != 2 && Choix != 4)/*On cancel les petits malins*/
{
printf("Le menu que tu as choisi n'existe pas !");
}
if (Choix == 1)
{
printf("Saisissez un premier nombre : "); // premier nombre
int premierNombre = 0, secondNombre = 0, resultat = 0, reste = 0; // on déclare les variables
scanf("%d", &premierNombre);
printf("Saisissez un second nombre : "); // second nombre
scanf("%d", &secondNombre);
printf("Saisissez une operation : "); // signe opération
char line[10];/*on corrige les erreurs*/
char operation = '+';/*on declare operation*/
scanf("%s", line);
operation = line[0];
if (operation == '+') //si le signe est +
{
resultat = premierNombre + secondNombre;
}
if(operation == '-')// si le signe est -
{
resultat = premierNombre - secondNombre;
}
if(operation == '*')// si le signe est *
{
resultat = premierNombre * secondNombre;
}
if (operation == '/')//si le signe est /
{
resultat = premierNombre / secondNombre;;
if (resultat != premierNombre * secondNombre)/*si la division nest pas euclidienne*/
{
reste = premierNombre - resultat * secondNombre;
}
}
if (operation != '+' && operation != '-' && operation != '*' && operation != '/')/*Si l'opération n'est pas valide*/
{
printf("Je crois que l'operation que tu as rentree n'est pas valide !\n\n");
}
if (operation == '+' && operation == '-' && operation == '*' && operation == '/')
{
printf("\nLe resultat est %d, avec un reste de %d\n\n", resultat, reste);/*on annonce le résultat*/
}
}
if (Choix == 2)
{
printf("Rentrez un nombre pour connaitre ses diviseurs !\n : ");
int nombreChoisi = 0, a=2;
scanf("%d", &nombreChoisi);
if(nombreChoisi % a == 0)
{
printf("Les diviseurs de %d sont : ", nombreChoisi);
while (a <= sqrt(nombreChoisi))
{
if (nombreChoisi % a == 0)
{
printf("%d; ", a);
if (a != (nombreChoisi % a))
{
printf("%d; ", nombreChoisi / a);
}
}
a++;
}
}
if(nombreChoisi % 2 != 0)
{
printf("Ton nombre est premier !");
}
}
return 0;
}
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.