Scanf() sauté
Résolu
marie12_2000
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
c_est_pas_faux -
c_est_pas_faux -
Bonjour, ceci est sensé être un petit test pour résoudre un problème un peu plus compliqué mais voila je bloque dessus , je voulais associer au tableau nombre qui contient des chiffres romains des valeurs en nombres arabes, pour ce faire le chiffre romain doit être lu a partir du clavier, après avoir fait des tests j'ai pu remarquer que le programme saute quelques scanf et ne lit que 4 chiffres sur 8
merci d'avance
merci d'avance
#include <stdio.h> #include <stdlib.h> int main() { char rm[7]={'I','V','X','L','C','D','M'}; int ar[7]={1,5,10,50,100,500,1000}; char nombre[8]; int tab[8]; int i,cpt,j,z,trouve; for(i=0;i<8;i++) { scanf("%c",&nombre[i]); cpt=0; trouve=1; while((cpt<7)&&(trouve==1)) { if((nombre[i])!=(rm[cpt])) cpt=cpt+1; else{ trouve=0; tab[i]=ar[cpt]; } } } for(j=0;j<8;j++) printf("\n nombre %d \n",tab[j]); return 0; }
Configuration: Windows / Chrome 75.0.3770.100
A voir également:
- Scanf() sauté
- Jeu bonhomme qui court et saute - Télécharger - Arcade
- Pourquoi iptv saute tout le temps - Forum Box et Streaming vidéo
- Scanf - Forum C
- Tcl image qui saute - Forum Téléviseurs
- Souris qui saute ✓ - Forum souris / Touchpad
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je vois que tu ne testes pas ce que retourne scanf, et je ne vois pas que tu affiches le contenu de nombre[].
pourquoi utilises-tu scanf au lieu de getchar?
pourquoi utilises-tu scanf au lieu de getchar?
Un programme de conversion en chiffres romain qui marche :
#include <stdio.h>
#include <stdlib.h>
int r_to_a(char roman[], int arabe[], char c)
{
for (int i = 0; i < 7; i++)
{
if (c == roman[i])
{
return arabe[i];
}
}
return -1;
}
int convert(char tab[], char roman[], int arabe[], int size)
{
int result = 0;
for (int i = 0; i < size; i++)
{
if (i > 0 && r_to_a(roman, arabe, tab[i]) < r_to_a(roman, arabe, tab[i + 1]))
{
result += r_to_a(roman, arabe, tab[i + 1]) - r_to_a(roman, arabe, tab[i]);
i++;
printf("RESULT : %d\n", result);
}
else if (i > 0 && r_to_a(roman, arabe, tab[i]) >= r_to_a(roman, arabe, tab[i - 1]))
{
result += r_to_a(roman, arabe, tab[i]);
printf("RESULT : %d\n", result);
}
else
{
result += r_to_a(roman, arabe, tab[i]);
printf("RESULT : %d\n", result);
}
}
return result;
}
int main()
{
char roman[7] = {'I','V','X','L','C','D','M'};
int arabe[7] = { 1, 5, 10, 50, 100, 500, 1000};
char test[] = "MCMLXXXV";
int result = convert(test, roman, arabe, 8);
printf("RESULT RECEIVED : %d\n", result);
printf("RESULT EXPECTED : 1985");
return 0;
}
https://openclassrooms.com/forum/sujet/boucle-saute-la-scanf-une-fois-sur-deux
Merci quand même