Vous n'êtes pas enregistré. Loggez-vous ou inscrivez vous.


Offre à ne pas rater : 1 pénis gratuit !

OleooRadio

Ecoutez OleooRadio

Pages: Précédent 1 2

Atom RSS

Page [ 2 of 2 ] Posts [ 21 to 28 of 28 ]

Crazy Legs

Re: [C] [Perso] Convertisseur de secondes

Tu n'as pas répondu à ma question rire t'inquiète je te l'ai demandé gentiment la dernière fois clindoeil ne pense pas que je rejette ton idée. Justement tu penses qu'elle est meilleure que la mienne, pas de problème je ne débute pas mais je suis encore a un petit niveau de programmation donc tu peux m'expliquer ce topic le permet également content

Phen

Re: [C] [Perso] Convertisseur de secondes

Bah le type de donnée short, c'est (2^16)-1 soit 65535. Donc il peut contenir des valeurs de -32768 à +32767 en comptant le 0. Le bit de poids fort étant le bit de signe.

NeuNeu78

Re: [C] [Perso] Convertisseur de secondes

Petit precision aussi n'utilise pas la fonction scanf, c'est une fonction pourri, c'est pratique mais naze vaut mieux utiliser fread ou fgets c'est plus propre et plus securiser puis sa permet d'eviter pas mal de bug.C'est pas tres grave sur ce genre de programme mais faut prendre de bonne habitudes des le debut.+

White Angels

Re: [C] [Perso] Convertisseur de secondes

toi tu as étudier les adresses de mémoire en C rire

nicotek

Re: [C] [Perso] Convertisseur de secondes

Crazy Legs a écrit:

Merci c'est gentil ces commentaires content
Bon alors voilà le code

Code:
#include <stdio.h>
#include <stdlib.h>

void conversion (long *semaine,long *jour,long *heures,long *minutes,long *secondes); //Ca c'est le prototype de la fonction "conversion".

int main(int argc, char *argv[])
{
    printf("Presente par Crazy Legs / 2008-2009\n"); //Pour ceux qui ne savent pas, printf est une fonction qui permet d'afficher un texte.
    long recommencer = 0; //Ca ça permet de recommencer tout simplement.
    do
{
    long semaine = 0, jour = 0, heures = 0, minutes = 0, secondes = 0; // Toutes les variable du programme.
    printf("\nEntrez un nombre de secondes : ");
    scanf("%ld", &secondes); //Scanf permet d'insérer un nombre par l'utilisateur.
    printf(" second%ldes ", secondes);
    conversion(&semaine,&jour,&heures,&minutes,&secondes); //Appel de la fonction "conversion" avec toutes les adresses de variable.
    printf("equivaut a %ld semaine(s) %ld jour(s) %ldH %ldmin %ldsec\n", semaine, jour, heures, minutes, secondes); //affichage des calcul.
    printf("Voulez-vous refaire une selection ? (Non = 1 / Oui = 2)");
    scanf("%ld", &recommencer);
    recommencer--;
}   while(recommencer); // Vu qu'il n'y a que deux choix à faire j'ai voulu mettre un booléen et de l'incrémenter de -1 pour qu'elle soit fausse ou vrai.
    return 0;
}

void conversion (long *semaine,long *jour,long *heures,long *minutes,long *secondes)
{
    *semaine = *secondes / 604800;       //La partie la plus intéressante du programme qui va tout calculer
    *jour = *secondes / 86400 - *semaine *7; // Important, enlever le nombre de semaines * le nombre de jour qu'il y a dans une semaine.
    *heures = *secondes / 3600 - *jour * 24 - *semaine * 168; //Pareil, enlever le nombre de jour * le nombre d'heure dans une journée - le nombre de semaine * le nombre d'heure dans une semaine (soit 24*7 =168)
    *minutes = *secondes / 60 - *heures * 60 - *jour *1440 - *semaine *10080; //Idem mais en enlevant le nombre d'heure, de jour et de semaine.
    *secondes = *secondes % 60; //Pas besoin de faire tous les calculs puisque la fonction modulo (%) permet de garder le reste de la division.
}

Plusieurs choses:
- met la fonction convertion au dessus du main, ca t'evite les declarations de proto en debut de programme. Si tu veux le faire propre, tu fais un convertion.c, et un convertion.h. Dans ton main tu fais un include de convertion.h.
- Printf c'est mal! Je t'explique: printf bufferise ta chaine, et ne l'affiche pas de suite. Moralite, si t'as pas de bol, tu te retrouve avec un prompt sans texte. Pour eviter ca, tu fais un write(1, "ta chaine", strlen("ta chaine")); Tu eviteras ainsi ce probleme.
- Derniere chose, pourquoi utiliser un prompt prenant 1 ou 2 en valeur, suivis d'un --? Il est facile de comparer deux chaines a la main, fait le, cela te fera un bon exercice.

nicotek

Re: [C] [Perso] Convertisseur de secondes

NeuNeu78 a écrit:

Petit precision aussi n'utilise pas la fonction scanf, c'est une fonction pourri, c'est pratique mais naze vaut mieux utiliser fread ou fgets c'est plus propre et plus securiser puis sa permet d'eviter pas mal de bug.C'est pas tres grave sur ce genre de programme mais faut prendre de bonne habitudes des le debut.+

Alors change de cours. Si tu veux faire un truc vraiment vraiment propre, tu fais un read avec 0 en fd_in.
0 correspond tu t'en doutes a STDIN.
De maniere plus generale, tu as ensuite a rajouter une petite fonction a la con pour convertir ton buffer:

Code:

int my_getnbr(char *str)
{
   int   i;
   int   out;
   int   neg;

   i = (str[0] == '-' ? 1 : 0);
   neg = (i == 0  ? 1 : -1);
   for (out = 0; str[i]; i++)
   {
        out = out * 10 + str[i] - '0':
   } 
   return (out * neg);
}

Crazy Legs

Re: [C] [Perso] Convertisseur de secondes

LOL je vous répète que je suis novice encore, c'est comme si vous appreniez à un primaire de résoudre :
ax² +bx + c

J'ai étudié (et j'étudie encore) le C grâce aux tuto de M@teo.
Vous en déduisez que je n'ai pas appris le C++, qui d'ailleurs ne change en rien les codes, ils sont juste simplifié pour les faignants xD

En fait actuellement je viens de comprendre pourquoi utiliser un long est inutile et je ne pense pas que ce genre de reproche (juste) est grave, mais juste.

En tout cas merci pour vos commentaires toujours justifiés content

nicotek

Re: [C] [Perso] Convertisseur de secondes

Si les deux types n'ont pas le même nom, c'est qu'il y à une raison.
Sur une archi 32, la contenance maximale d'un int est il me semble de 2^32, sur un 64, 2^64 etc etc.

Le long comporte une capacité deux fois supérieure a celle d'un int. En revanche, un long ne peut contenir de décimale, contrairement a un double ou à un float.
En terme de taille, un long équivaut a un double, mais n'a pas le même effet.

Concernant le c++, non, cela ne simplifie pas toujours le code. La compilation séparée te permet de générer des .o, qui te permettent ensuite de compiler ton binaire. Ces .o sont réalisable a partir de .c et de .cpp, ainsi, tu peux coder plus ou moins selon tes besoins. Le C est un des languages les plus "bas niveau", le c++, c'est orienté objet (et non pas objet). La notion de classe et d'héritage te permet de mettre en place un code bien plus lisible que le C. La surcharge de fonction est une bénédiction pour les codeurs, parce que les noms a la toto12343244, ca va bien!
En parlant de classes, ces dérniere te permettent de créer aisemment des méthodes, qui te  permettent effectivement de faire du code secure, les notions de constructeur et destructeurs te permettent de mieux gérer ta mémoire. Je n'épiloguerais pas sur les namespace, qui comportent les classes...

PS : Les  cours de m@teo sont excellents!

Page [ 2 of 2 ] Posts [ 21 to 28 of 28 ]

Le post pour invité est désactivé. Vous devez connexion ou s'enregistrer pour pouvoir répondre.

Pages: Précédent 1 2


Forum quick jump menu

[ Generated in 0.125 seconds, 8 queries executed ]

OleooRadio est une radio editee par Radionomy.

Oleoo.info : Classement par Audience - OleooTV - Recherche de Fichiers