Secondes en heures... - C - Programmation
Marsh Posté le 14-10-2009 à 19:58:01
tes pointeurs sont NULL, et tu les dereference, donc ca plante.
et y a pas de miracle, comment veut tu recupérer tes sorties si tu passes pas heure,minute,secodnes en entrée ...
Marsh Posté le 14-10-2009 à 20:01:44
Ici, tu utilises des pointeurs qui pointent vers l'adresse mémoire "NULL" qui, comme son nom l'indique, représente le grand nul part, le néant, les abysses.
Autant dire que dès que tu vas exécuter ton programme, le système d'exploitation va l'arrêter immédiatement pour cause de tentative d'accès à une adresse mémoire invalide.
Donc, pourquoi utiliser des pointeurs d'entiers, et pas simplement des entiers ?
Autre chose : tu as une fonction, qui utilise des variables "pSecondes", "pMinutes", etc. Une autre fonction (main() n'est qu'une fonction presque comme les autres) utilise des variables "heures", "minutes", etc.
Rien qu'avec le nom de ces variables, tu devrais te dire qu'il n'y a strictement aucun rapport entre elles.
Mais, mieux encore, même si elles portaient le même nom, elles seraient distinctes et indépendantes (la variables "heures" de main() n'appartenant qu'à main() et étant différente de la variable "heures" d'une autre fonction lambda).
Ce qui m'amène à croire que tu as tenté de reproduire les mécanismes de passage de paramètres par adresse, sans les comprendre.
Un petit lien explicatif en ce cas : http://www.bien-programmer.fr/note [...] e_variable
Marsh Posté le 14-10-2009 à 20:04:45
Merci pour vos réponses! N'y-a-t-il pas possibilité, avec une fonction ne prenant en paramètre que les secondes, de pouvoir faire ce que je souhaite?
Marsh Posté le 14-10-2009 à 20:11:55
Ben si, il suffit de déplacer le printf() dans la fonction.
Marsh Posté le 14-10-2009 à 20:23:28
J'ai un peu modifié, mais cela n'est guère mieux (et j'ai pourtant l'impression d'avoir saisi le cours sur les pointeurs, & pour l'adresse, * pour la valeur sur laquelle il pointe..)
Code :
|
Marsh Posté le 14-10-2009 à 20:37:24
sauf que tu n'as pas besoin de pointeur dans ta fonction ...
Code :
|
On est pas en JAVA
Marsh Posté le 14-10-2009 à 20:46:41
Il semblerait que l'algo ne fonctionne pas... Et je ne vois pas pourquoi on n'utiliserait pas de pointeurs, il me semble qu'on perd l'adresse sinon!
Marsh Posté le 15-10-2009 à 08:13:15
dj_titeuf a écrit : Il semblerait que l'algo ne fonctionne pas... Et je ne vois pas pourquoi on n'utiliserait pas de pointeurs, il me semble qu'on perd l'adresse sinon! |
Salut,
Ton algo ne fonctionne pas car tu détruis la valeur de secondes à ta première affectation :
secondes = secondes % 60; -> secondes ne vaut plus 2400 mais le reste de la division par 60 (soit 0)
du coup les lignes suivantes seront fausses : minutes et heures vaudront 0 car calculés à partir de secondes qui vaut maintenant 0.
Marsh Posté le 15-10-2009 à 08:26:39
dj_titeuf a écrit : Et je ne vois pas pourquoi on n'utiliserait pas de pointeurs, il me semble qu'on perd l'adresse sinon! |
Il n'y a pas d'adresse à perdre sur cet exercice très simple...les pointeurs n'ont ici aucun semblant d'utilité. D'ailleurs pour un truc aussi court autant tout mettre dans le main()
Marsh Posté le 15-10-2009 à 23:25:56
dj_titeuf a écrit : Il semblerait que l'algo ne fonctionne pas... Et je ne vois pas pourquoi on n'utiliserait pas de pointeurs, il me semble qu'on perd l'adresse sinon! |
Parce que ça ne sert à rien. Certes on peut faire avec (mais à condition d'avoir des pointeurs qui pointent sur quelque chose de valide et non des pointeurs qui pointent sur NULL) et comme quelque chose de valide sera forcément une zone mémoire de type utilisable pour tes calculs (donc une zone mémoire de type int), tant qu'à avoir des pointeurs sur des int autant travailler directement avec les variables de type int.
Pour l'exemple, voici ta fonction avec des pointeurs
Code :
|
Tu conviendras que c'est totalement inutile et lourd et qu'on aura le même résultat en utilisant directement les variables heures, minutes et secondes
Marsh Posté le 14-10-2009 à 19:28:18
Bonjour,
J'ai essayé de coder un programme qui me transforme les secondes en heures minutes et secondes... Ca compile, mais plante à l'exécution. Pouvez-vous me dire ce qui ne va pas? Merci d'avance.