Je rencontre un problème avec l'utilisation de la fonction isdigit(). Ma fonction en gros convertie heures, minutes, secondes en secondes . Merci par avance !
// TD 1 : Exercice 3 //
#include <stdio.h>
#include <ctype.h>
void conversion_en_seconde(int *pheures, int *pminutes, int *psecondes);
void conversion_en_seconde(int *pheures, int *pminutes, int *psecondes)
{
*pheures = (*pheures) * 3600;
*pminutes = (*pminutes) * 60;
*psecondes = (*psecondes) + (*pheures) + (*pminutes) ;
}
int main(int argc, char *argv[])
{
int cpt = 0;
int secondes = 0, minutes = 0, heures = 0;
int *psecondes = &secondes, *pminutes = &minutes, *pheures = &heures;
printf("<<<<<< TD 1 : Exercice 1 >>>>>>\n\n");
printf("<<<<<< Saisissez un nombre de seconde >>>>>>\n");
scanf("%d",&secondes);
printf("<<<<<< Saisissez un nombre de minute >>>>>>\n");
scanf("%d",&minutes);
printf("<<<<<< Saisissez un nombre d'heure >>>>>>\n");
scanf("%d",&heures);
char c1 = 'secondes';
char c2 = 'minutes';
char c3 = 'heures';
if(isdigit(c1) & isdigit(c2) & isdigit(c3))
{
conversion_en_seconde(pheures, pminutes, psecondes);
printf("<<<<<<Le nombre de seconde total est %d\n",secondes);
}
else
{
printf("Erreur");
cpt ++;
}
while(cpt != 0)
{
printf("<<<<<< Saisissez un nombre de seconde >>>>>>\n");
scanf("%d",&secondes);
printf("<<<<<< Saisissez un nombre de minute >>>>>>\n");
scanf("%d",&minutes);
printf("<<<<<< Saisissez un nombre d'heure >>>>>>\n");
scanf("%d",&heures);
if(isdigit(secondes) & isdigit(minutes) & isdigit(heures))
{
conversion_en_seconde(pheures, pminutes, psecondes);
printf("<<<<<<Le nombre de seconde total est %d\n",secondes);
cpt = 0;
}
else
{
printf("Erreur");
}
}
return 0;
}
char c1 = 'secondes';
char c2 = 'minutes';
char c3 = 'heures';
if(isdigit(c1) & isdigit(c2) & isdigit(c3))
{
conversion_en_seconde(pheures, pminutes, psecondes);
printf("<<<<<<Le nombre de seconde total est %d\n",secondes);
}
Les initialisations sont foireuses, une chaîne de caractères entre simples quotes pour initialiser des char ... ça n'a pas de sens. Est-ce vraiment l'opérateur & que tu veux utiliser dans le if(), ou bien est-ce && ? Ah je viens de comprendre, tu veux donner la valeur des variables secondes minutes et heures (int) à c1 c2 et c3 je pense ?
A part le fait que je ne comprends pas ta logique (pourquoi deux fois des inputs et que c1, c2 et c3 ne servent à rien) et que ça ne compile pas, isdigit() prend un char (qui sera converti en int) en entrée, pas un int ! Exemple:
De plus, la fonction conversion_en_seconde() ne doit pas recevoir des pointeurs. A cause d'eux, tu modifies les valeurs de heures, minutes et secondes entrées par l'utilisateur:
- Edité par edgarjacobs 21 septembre 2017 à 19:53:01
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Problème avec l'utilisation de la fonction isdigit
× 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