Exercice en c
defati1983
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
hyamath -
hyamath -
bonsoir
comme je suis debutante en info ..jai essayé de faire un petit excercice mais jarrive pas a avoir les bons resultats donc ki peut maider..me fera du plus grnd plaisir merci a tous voila le probléme:
ecrivez un programme quit lit un nombre de secondes entier au clavier et qui affiche cette durée en jours,heures,minutes et secondes au format "x jours,x heures, x minutes et x secondes.
merci jen ai vraiment besoin....
comme je suis debutante en info ..jai essayé de faire un petit excercice mais jarrive pas a avoir les bons resultats donc ki peut maider..me fera du plus grnd plaisir merci a tous voila le probléme:
ecrivez un programme quit lit un nombre de secondes entier au clavier et qui affiche cette durée en jours,heures,minutes et secondes au format "x jours,x heures, x minutes et x secondes.
merci jen ai vraiment besoin....
A voir également:
- Exercice en c
- Transmath 3eme exercice ✓ - Forum Études / Formation High-Tech
- Corrigé d'un exercice du livre transmaths 3e - Forum Loisirs / Divertissements
- Fleur d'encre 5eme corrigé exercice - Forum PDF
- Corrigés 350 exercices niveau moyen ✓ - Forum Loisirs / Divertissements
- Livre du professeur 5eme fleur d'ancre ✓ - Forum PDF
11 réponses
#include <stdio.h>
main()
{
int x, j, h, m, s;
printf("introduisez un nombre entier:");
scanf("%i",&x);
s== x%60;
m== x/60;
h==x/3600;
j==x/86400;
if (x<60)
printf("0 j,0 h,0 m et x s:%i\n",x);
else
if(x>=60 && x<3600 )
printf("0 j,0 h,x m et x s:%i\n",x);
getchar();
if (x>=3600 && x<86400 )
printf("0 j,x h,x m et x s:%i\n",x);
getchar();
if (x>=86400)
printf("x j,x h,x m et x s:%i\n",x);
printf("%i j,%i h,%i m,%i s\n",j, h, m, s);
getch();
}
voila ce ke jai fait mais ca me donne des valeur negaatives pour les s et des valeurs grandes pour les autres......
main()
{
int x, j, h, m, s;
printf("introduisez un nombre entier:");
scanf("%i",&x);
s== x%60;
m== x/60;
h==x/3600;
j==x/86400;
if (x<60)
printf("0 j,0 h,0 m et x s:%i\n",x);
else
if(x>=60 && x<3600 )
printf("0 j,0 h,x m et x s:%i\n",x);
getchar();
if (x>=3600 && x<86400 )
printf("0 j,x h,x m et x s:%i\n",x);
getchar();
if (x>=86400)
printf("x j,x h,x m et x s:%i\n",x);
printf("%i j,%i h,%i m,%i s\n",j, h, m, s);
getch();
}
voila ce ke jai fait mais ca me donne des valeur negaatives pour les s et des valeurs grandes pour les autres......
salut,
Le problème repose sur le principe du changement de base et de la
division euclidienne sur les entiers naturels.
Ainsi tu décomposes ton calcul
secondes = reste de la division entière du nombre total de secondes par 60
minutes brutes = quotien de la division précédente
minutes = reste de la division entière des minutes brutes par 60
heures brutes = quotien de la division précédente
Et tu réitères pour les jours en utilisant 24 comme diviseur.
L'arithmétique des entiers en C:
q = a / b ; donne le quotien entier de la division euclidienne a par b
r = a % b ; donner le reste de la division euclidienne a par b
Pour que cela fonctionne bien : a, b, q et r doivent être déclaré comme entier
(char, short, int, long, long long, et toutes les combinaisons unsigned)
A+, bon courage, crabs
Le problème repose sur le principe du changement de base et de la
division euclidienne sur les entiers naturels.
Ainsi tu décomposes ton calcul
secondes = reste de la division entière du nombre total de secondes par 60
minutes brutes = quotien de la division précédente
minutes = reste de la division entière des minutes brutes par 60
heures brutes = quotien de la division précédente
Et tu réitères pour les jours en utilisant 24 comme diviseur.
L'arithmétique des entiers en C:
q = a / b ; donne le quotien entier de la division euclidienne a par b
r = a % b ; donner le reste de la division euclidienne a par b
Pour que cela fonctionne bien : a, b, q et r doivent être déclaré comme entier
(char, short, int, long, long long, et toutes les combinaisons unsigned)
A+, bon courage, crabs
Salut,
Je pense pas pouvoir donner un cours de C, je te files un URL sur un truc
qu'est pas mal pour apprendre le C :
http://www.ltam.lu/Tutoriel_Ansi_C/
A+, crabs
Je pense pas pouvoir donner un cours de C, je te files un URL sur un truc
qu'est pas mal pour apprendre le C :
http://www.ltam.lu/Tutoriel_Ansi_C/
A+, crabs
Salut defati1983
pour ton petit programme, je pense que tu peux raisonnablement te fixer 4 variables entieres j, h, m et s que tu initialises à 0.
Tu as normalement stocké dans 'entrée' le nombre de secondes total.
Ce qui est logique, c'est de voir en premier combien de jours tu peux mettre dans ce nombre de secondes 'entrée'. Calcule le nombre de secondes dans une journée, ça sera une constante entiere S_j = 86400
(dans la logique de mes noms de variable, tu auras aussi S_h = 3600, S_m = 60 et S_s = 1).
Donc en langage algorithmique:
soit temp = entree;
j = (int) (temp/S_j);
/*(le (int) fait la partie entiere du resultat, cela dit, je crois que si j est entier, t'as meme pas besoin de mettre le (int), le compilateur faisant automatiquement la conversion)*/
temp = temp - j*S_j;
A ce moment là, tu as dans j le nombre de jours, et dans temp le nombre de secondes qui ne "tiennent" pas dans une journée.
Je te laisse trouver la suite, qui est fort similaire.
Bon courage, en esperant t'avoir aidée.
Bye.
*** edit : comme l'a bien dit une autre personne dans le poste, l'utilisation de l'opérateur % c'est la classe aussi, ça fait un modulo que je t'ai fait à la main plus haut. ***
pour ton petit programme, je pense que tu peux raisonnablement te fixer 4 variables entieres j, h, m et s que tu initialises à 0.
Tu as normalement stocké dans 'entrée' le nombre de secondes total.
Ce qui est logique, c'est de voir en premier combien de jours tu peux mettre dans ce nombre de secondes 'entrée'. Calcule le nombre de secondes dans une journée, ça sera une constante entiere S_j = 86400
(dans la logique de mes noms de variable, tu auras aussi S_h = 3600, S_m = 60 et S_s = 1).
Donc en langage algorithmique:
soit temp = entree;
j = (int) (temp/S_j);
/*(le (int) fait la partie entiere du resultat, cela dit, je crois que si j est entier, t'as meme pas besoin de mettre le (int), le compilateur faisant automatiquement la conversion)*/
temp = temp - j*S_j;
A ce moment là, tu as dans j le nombre de jours, et dans temp le nombre de secondes qui ne "tiennent" pas dans une journée.
Je te laisse trouver la suite, qui est fort similaire.
Bon courage, en esperant t'avoir aidée.
Bye.
*** edit : comme l'a bien dit une autre personne dans le poste, l'utilisation de l'opérateur % c'est la classe aussi, ça fait un modulo que je t'ai fait à la main plus haut. ***
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci pour votre aide et je vais essayer une autre fois...a vous de me souhaiter bonnechance.....merci encore
Salut,
L'opérateur d'affectation en C, c'est '='.
L'opérateur '==' permet de vérifier l'égalité entre les 2
opérandes.
Dans tes affectations, remplaces '==' par '='.
A+, crabs
L'opérateur d'affectation en C, c'est '='.
L'opérateur '==' permet de vérifier l'égalité entre les 2
opérandes.
Dans tes affectations, remplaces '==' par '='.
s= x%60; m= x/60; h=x/3600; j=x/86400;
A+, crabs
bonjour defati
je viens de faire ton exercice en modifiant un peu ton programme:
#include <stdio.h>
#include <stdlib.h>
main( )
{
int x, j, h, m, s, r, t,u;
printf("introduisez un nombre entier:");
scanf("%i",&x);
s= x%60;
m= x/60;
h=x/3600;
r=x%3600;
j=x/86400;
t=x%86400;
if (x<60)
{s=x;
printf("0 j,0 h,0 m et %d s\n",s);}
else
if(x>=60 && x<3600 )
{printf(" 0 j, 0 h, %d m, %d s\n",m,s);}
else
if (x>=3600 && x<86400 )
{m=r/60;
printf(" 0 j, %d h, %d m, %d s\n",h,m,s);}
else
if (x>=86400)
{h=t/3600;
u=t%3600;
m=u/60;
printf("%d j,%d h,%d m,%d s\n",j, h, m, s);}
system("pause");
}
bon courage pour la suite
je viens de faire ton exercice en modifiant un peu ton programme:
#include <stdio.h>
#include <stdlib.h>
main( )
{
int x, j, h, m, s, r, t,u;
printf("introduisez un nombre entier:");
scanf("%i",&x);
s= x%60;
m= x/60;
h=x/3600;
r=x%3600;
j=x/86400;
t=x%86400;
if (x<60)
{s=x;
printf("0 j,0 h,0 m et %d s\n",s);}
else
if(x>=60 && x<3600 )
{printf(" 0 j, 0 h, %d m, %d s\n",m,s);}
else
if (x>=3600 && x<86400 )
{m=r/60;
printf(" 0 j, %d h, %d m, %d s\n",h,m,s);}
else
if (x>=86400)
{h=t/3600;
u=t%3600;
m=u/60;
printf("%d j,%d h,%d m,%d s\n",j, h, m, s);}
system("pause");
}
bon courage pour la suite
merci pour laide.....je me demandais si il nexistait pas une autre façon moins compliker et moins longue sans meme utiliser if..else...merci encore
Il me semble qu'en initialisant les variables à 0, on peut facilement se passe des tests. Chez moi, j'ai essayé le code suivant, et ça semble fonctionner.
#include <stdio.h> int main(int argc, char * argv[]) { long long x = 0; int s = 0; int m = 0; int h = 0; long j = 0; char date[50]; int t = 0; long long tl = 0; printf("nombres de secondes : "); scanf("%d",&x); s = x % 60; tl = (x - s) / 60; t = tl % 60; tl = (tl - t) / 60; m = t; h = tl % 24; j = (tl - h) / 24; sprintf(date,"%8ld jours %2d heures %2d minutes et %2d secondes\n", j, h, m, s); puts(date); system("pause"); return 0; }
bjr les ingenieurs ;
. Calculez la factiorielle N!= 1.2.3... (N-1).N d'un entier naturel N en respectant que 0!=1.
a) Utilisez while ,
b) Utilisez for .
je trouve une difficulté a faire ce prgrame pouviez vs m'ader merciiii a vs
. Calculez la factiorielle N!= 1.2.3... (N-1).N d'un entier naturel N en respectant que 0!=1.
a) Utilisez while ,
b) Utilisez for .
je trouve une difficulté a faire ce prgrame pouviez vs m'ader merciiii a vs