Exercice en c
Fermé
defati1983
Messages postés
54
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
15 décembre 2005
-
22 oct. 2005 à 01:43
hyamath - 2 déc. 2008 à 13:49
hyamath - 2 déc. 2008 à 13:49
A voir également:
- Exercice en c
- Comment trouver la correction d'un exercice - Forum Programmation
- Exercice pour apprendre à utiliser un ordinateur - Astuces et Solutions
- Exercice calculatrice en javascript ✓ - Forum Javascript
- Exercice word gratuit avec corrigé - Forum Word
- Fleur d'encre 5eme corrigé exercice ✓ - Forum PDF
11 réponses
defati1983
Messages postés
54
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
15 décembre 2005
4
23 oct. 2005 à 15:10
23 oct. 2005 à 15:10
#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......
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
22 oct. 2005 à 08:37
22 oct. 2005 à 08:37
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
defati1983
Messages postés
54
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
15 décembre 2005
4
22 oct. 2005 à 13:30
22 oct. 2005 à 13:30
merci davoir jetté un coup doeil sur mon message!!mais il ya juste une autre petite confusion. tavais dit que je dois utuliser le a b q et r. et ke je dois les declarer..alors la je reste un peu perdue!!!si tu peux maider un peu plus....merci davance
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
>
defati1983
Messages postés
54
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
15 décembre 2005
22 oct. 2005 à 14:17
22 oct. 2005 à 14:17
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
No-miS
Messages postés
274
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
29 novembre 2006
37
22 oct. 2005 à 15:42
22 oct. 2005 à 15:42
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
defati1983
Messages postés
54
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
15 décembre 2005
4
22 oct. 2005 à 22:22
22 oct. 2005 à 22:22
merci pour votre aide et je vais essayer une autre fois...a vous de me souhaiter bonnechance.....merci encore
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
23 oct. 2005 à 17:03
23 oct. 2005 à 17:03
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
defati1983
Messages postés
54
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
15 décembre 2005
4
26 oct. 2005 à 00:56
26 oct. 2005 à 00:56
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
dark_hacker
Messages postés
5
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
14 janvier 2008
14 janv. 2008 à 14:44
14 janv. 2008 à 14:44
hé sousou tu as vu la date de leur descussion