rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Exercice en c

Posté par defati1983, le samedi 22 octobre 2005 à 01:43:06
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....
Répondre à defati1983  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
crabs, le samedi 22 octobre 2005 à 08:37:36
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 ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware
Répondre à crabs

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
defati1983, le samedi 22 octobre 2005 à 13:30:40
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
Répondre à defati1983

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
crabs, le samedi 22 octobre 2005 à 14:17:15
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 ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware
Répondre à crabs

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
No-miS, le samedi 22 octobre 2005 à 15:42:26
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. *** Qui ne doute pas acquiert peu.
Mais est-ce que "qui n'acquiert rien finit par douter"? J'ai un doute...
Répondre à No-miS

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
defati1983, le samedi 22 octobre 2005 à 22:22:26
merci pour votre aide et je vais essayer une autre fois...a vous de me souhaiter bonnechance.....merci encore
Répondre à defati1983

6


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
defati1983, le dimanche 23 octobre 2005 à 15:10:56
#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......
Répondre à defati1983

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
crabs, le dimanche 23 octobre 2005 à 17:03:57
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 '='.
s= x%60;
m= x/60;
h=x/3600;
j=x/86400; 

A+, crabs ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware
Répondre à crabs

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
de passage, le lundi 24 octobre 2005 à 11:16:15
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
Répondre à de passage

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
defati1983, le mercredi 26 octobre 2005 à 00:56:08
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
Répondre à defati1983

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
cataclypse, le jeudi 3 novembre 2005 à 13:54:55
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;
}

Répondre à cataclypse

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sousou, le lundi 14 janvier 2008 à 14:41:11
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
Répondre à sousou

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dark_hacker, le lundi 14 janvier 2008 à 14:44:41
hé sousou tu as vu la date de leur descussion
Répondre à dark_hacker

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 sousou, le lundi 14 janvier 2008 à 14:47:29
oui mais bon tu peux m'aidé :) tu me fera une tré grande faveure
Répondre à sousou
Discussions pertinentes trouvées dans le forum
03/07 11h21Exercices c#3
12/03 20h06Problème avec un exercice C5
28/12 20h48Exercices corrigés UML6
17/12 07h10Cours et exercices corrigés MERISE32
20/11 17h33Exercice c avec vecteur7
Plus de discussions sur « aide exercice c++ »
Logiciels pertinents trouvés dans les téléchargements
Télécharger PrévisiOOo 19 Février 2007PrévisiOOo - PrévisiOOo est un logiciel pour faire des prévisionnels. Un budget prévisionnel bien conçu n’a rien d’un laborieux exercice...Catégorie: Comptabilité/Paie
Licence: Freeware/gratuit
Télécharger Mini Lehrer  2.51Mini Lehrer - L'allemand est certes une belle langue, mais elle est tout aussi compliquée. Mini Lehrer est un programme gratuit...Catégorie: Environnement de travail
Licence: Freeware/gratuit
Télécharger CCleaner 2.09.600CCleaner - CCleaner (Crap Cleaner) est un utilitaire de nettoyage gratuit permettant de garantir un respect de la vie privée en...Catégorie: Anonymat/Confidentialité
Licence: Freeware/gratuit
Télécharger Free Mp3 Wma Converter 2.0Free Mp3 Wma Converter - Free Mp3 Wma Converter permet de convertir tout vos fichiers Mp3 , Wma , Ogg , AAC , m4a , mp4 , Ape , flac, Wav : ...Catégorie: Conversion
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « aide exercice c++ »