Rechercher : dans
Par :

Probleme modification de variable C#

Dernière réponse le 9 fév 2008 à 20:31:20 Durst1805, le 9 fév 2008 à 04:29:56 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un petit souci avec un programme que j'essaye de mettre en place. J'ai créer un simulateur d'heure, et j'y ai intégré trois petites méthodes lesquelles servent respectivement à :

1. Afficher l'heure qu'il est, et si il est midi ou minuit.
2. Afficher la durée de vie de l'espèce A (les animaux).
3. Afficher la durée de vie de l'espèce B (les hommes).

Au fil du temps, la durée de vie de chaque espèce doit diminuer d'elle même. Pour cela j'utilise une variable dva (durée de vie a) et une variable dvb (durée de vie b) qui se décrémentent au fil du temps. Mon problème est que je fixe un instant précis de l'heure à laquelle la décrémentation doit se faire, une fois la bonne heure affichée, la durée de vie se décrémente bien, mais une fois l'heure passée, les variables se remettent à leur valeur par défaut, et donc l'espèce ne vieilli jamais.
Voici donc mon extrait de code, pour vous permettre de déceler l'erreur ou bien me dire ce que je devrait changer ou ajouter.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Vieillesse
{
    public class Programme
    {
        public static void Main(string[] args)
        {
            int ss;
            int s;
            int mm;
            int m;
            int hh;
            int h;
            int dbg;

            for (s = 0, ss = 0, m = 0, mm = 0, h = 0, hh = 0, dbg = 0; ss != 10; )
            {
                ss++;
                if (ss > 9) s++; // passe à s
                if (ss > 9) ss = 0; // remet ss à zéro
                if (s > 5) mm++; // passe à mm
                if (s > 5) s = 0; // remet s à zéro
                if (mm > 9) m++; // passe à m
                if (mm > 9) mm = 0; // remet mm à zéro
                if (m > 5) hh++; // passe à hh
                if (m > 5) m = 0; // remet m à zéro
                if (hh > 9) h++; // passe à h
                if (hh > 9) hh = 0; //remet hh à zéro
                if (h == 2 & hh == 4) dbg++;  // incrémente dbg
                if (h == 2 & hh == 4) s = 0;  // *
                if (h == 2 & hh == 4) ss = 0; // *
                if (h == 2 & hh == 4) m = 0;  // * remet les compteurs à zéro 
                if (h == 2 & hh == 4) mm = 0; // *
                if (h == 2 & hh == 4) h = 0;  //
                if (dbg == 1) hh = 0; // remet le compteur hh à zéro
                if (h == 0 & hh == 0 & s == 0 & ss == 0 & m == 0 & mm == 0) dbg--; // remet dbg à sa valeur initiale
                Heure.Temps(h, hh, m, mm, s, ss);
                Vie.ageA(h,hh,m,mm,s,ss);
                Vie.ageB(h,hh,m,mm,s,ss);
            }

        }
    }


    class Heure
    {
        public static void Temps(int h, int hh, int m, int mm, int s, int ss)
        {
            string jour = "Il est midi";
            string nuit = "Il est minuit";
            if (h == 1 & hh == 2 & ss == 1 & s == 0 & m == 0 & mm == 0) Console.WriteLine(jour);
            if (h == 1 & hh == 2 & ss == 1 & s == 0 & m == 0 & mm == 0) System.Threading.Thread.Sleep(5000);
            if (h == 0 & hh == 0 & s == 0 & ss == 0 & m == 0 & mm == 0) Console.WriteLine(nuit);
            if (h == 0 & hh == 0 & s == 0 & ss == 0 & m == 0 & mm == 0) System.Threading.Thread.Sleep(5000);
            Console.WriteLine("Il est " + h + hh + ":" + m + mm + ":" + s + ss);
            System.Threading.Thread.Sleep(1);
            Console.Clear();
        }
    }

        class Vie
        {
            public static void ageA(int h, int hh, int m, int mm, int s, int ss)
            {
                int dva = 10;
                if (dva != 0 & hh == 1) dva -= 2;
                if (dva != 0) Console.WriteLine("il reste " + dva / 2 + " jours de survie à l'animal");
                if (dva == 0) Console.WriteLine(" L'animal est mort");

            }
            public static void ageB(int h, int hh, int m, int mm, int s, int ss)
            {
                int dvb = 30;
                if (dvb != 0 & hh == 1) dvb -= 2;
                if (dvb != 0) Console.WriteLine("il reste " + dvb / 2 + " jours de survie à l'homme");
                if (dvb == 0) Console.WriteLine(" L'homme est mort");
            }
        }
    }


Voici aussi un lien vers le programme compilé, que vous puissiez vous faire une idée visuelle du problème qui est engendré.
Merci de vos réponses, j'espères que vous pourrais me sortir de cette impasse ( je suis encore débutant, j'ai tout essayé).

Meilleures réponses pour « Probleme modification de variable C# » dans :
Langage C - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Les variables en C++ VoirLes variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...

1

Durst1805, le 9 fév 2008 à 04:34:58

Désolé j'ai une nouvelle fois oublier le lien :/
Ca m'arrive tout le temps.


http://www.megaupload.com/?d=TCLYXV9W

Répondre à Durst1805

2

 Durst1805, le 9 fév 2008 à 20:31:20

Up !

Répondre à Durst1805