Ce prog en C ne doit pas afficher de négatif
Utilisateur anonyme
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
comme le dit le titre ce programme en C affiche des nombres négatif alors qu'il ne devrait pas
#include <stdio.h>
#include <conio.h>
int main(void)
{
float prec=0;
float suiv=1;
int nbr;
int cpt;
float terme;
printf("Entrez le nombre de terme:");
scanf("%d",&nbr);
printf("0\n1\n");
for(cpt=2;cpt<nbr;cpt++)
{
terme = suiv + prec;
prec = suiv;
suiv = terme;
printf("%d\n", int(terme));
}
getch();
}
il fonctionne bien mais quand j'entre un nombre de terme supérieur a 46
il me met des nombres négatifs dans la suite!!
comment faire pour que cette suite continue sans problème??????????
comme le dit le titre ce programme en C affiche des nombres négatif alors qu'il ne devrait pas
#include <stdio.h>
#include <conio.h>
int main(void)
{
float prec=0;
float suiv=1;
int nbr;
int cpt;
float terme;
printf("Entrez le nombre de terme:");
scanf("%d",&nbr);
printf("0\n1\n");
for(cpt=2;cpt<nbr;cpt++)
{
terme = suiv + prec;
prec = suiv;
suiv = terme;
printf("%d\n", int(terme));
}
getch();
}
il fonctionne bien mais quand j'entre un nombre de terme supérieur a 46
il me met des nombres négatifs dans la suite!!
comment faire pour que cette suite continue sans problème??????????
A voir également:
- Ce prog en C ne doit pas afficher de négatif
- Afficher appdata - Guide
- Negatif telephonique - Guide
- Afficher mot de passe wifi android - Guide
- Afficher google en page d'accueil - Guide
- Afficher taille dossier windows - Guide
4 réponses
Oui c'est normal car tu dépasses la valeur maximale d'un entier qui, pour un 16 bits est (à 1 près) (2 puissance 16)/2) soit environ 2 milliards.
Si tu veux aller plus aller plus loin, il te faut prendre des 'long long' qui, suivant ta machine, peut être codé sur 32 bits. Mais de toutes façons, il y aura toujours une limite.
Si tu ne veux pas de limites, sache qu'il existe un langage pour lequel les entiers n'ont pas limites (sauf évidemment celle de la mémoire de ta machine), c'est Python.
Ah, un détail: c'est (int)terme et non int(terme).
Et puis si tu repostes, utilise les balises < code > à droite des balises < souligne >.
Bonne continuation.
Si tu veux aller plus aller plus loin, il te faut prendre des 'long long' qui, suivant ta machine, peut être codé sur 32 bits. Mais de toutes façons, il y aura toujours une limite.
Si tu ne veux pas de limites, sache qu'il existe un langage pour lequel les entiers n'ont pas limites (sauf évidemment celle de la mémoire de ta machine), c'est Python.
Ah, un détail: c'est (int)terme et non int(terme).
Et puis si tu repostes, utilise les balises < code > à droite des balises < souligne >.
Bonne continuation.