Aller au contenu


Photo

Problème en C#


  • Veuillez vous connecter pour répondre
13 réponses à ce sujet

#1 jeed

jeed

    SUPREM

  • Membre VIP
  • 674 messages
  • Locationun peu partout, même chez toi

Posté 07 octobre 2014 - 20:18

Bon, je reviens le temps d'un programme.  ca va vous paraitre simple, mais c'est un peu chiant parce que personne ne peut me répondre parmi ma classe ...

C'est du C#, et quand je le compile, il me sort des trucs genre, ma fonction n'est pas référée ou une connerie du genre.

Si quelqu'un pouvait me trouver mon erreur, ca serait vraiment énorme.

( et je pourrais retourner dans les limbes )

( ah, et techniquement, c'est mon if qui déconne )
 

namespace ConsoleApplication1
{
    class Program
    {
        static void saisie_élève(out string nom, out string prénom, out string classe)
        {
            Console.WriteLine("Entrez le nom de l'élève");
            nom = Console.ReadLine();
            Console.WriteLine("Entrez le prénom de l'élève");
            prénom = Console.ReadLine();
            Console.WriteLine("Indiquez la classe de l'élève");
            classe = Console.ReadLine();
        }

         static double Moyenne( double noteE1, double noteE2, double noteE3, double noteE4, double noteO1, double noteO2)
        {
            double calcul, somme;
            somme = (double)noteE1+noteE2+noteE3+noteE4+noteE4+noteO1+noteO2;
            calcul = somme / 6;
            return calcul;

        }

        
        static string resultat(double moyenne)
        {
            string note="";



            if (moyenne >= 10)    

                note = "Admis";
                else
                {

                if (moyenne > 8)

                    note = "Admis au Rattrapage";
                else

                    note = "Non admis";

                return note;


                }        

        }


        static void Main(string[] args)
        {
            double e1, e2, e3, e4, o1, o2;
            double m;
            string n, p, c;
            string res;
           
            saisie_élève(out n, out p, out c);

            Console.WriteLine("Afficher la première note d'écrit");
            e1 = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Afficher la seconde note ");
            e2 = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Afficher la troisième note ");
            e3 = Int32.Parse(Console.ReadLine());
            
            Console.WriteLine("Afficher la quatrième note ");
            e4 = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Afficher la première note d'oral ");
            o1 = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Afficher la seconde note d'oral ");
            o2 = Int32.Parse(Console.ReadLine());

            m = (double) Moyenne(e1,e2,e3,e4,o1,o2);


            Console.WriteLine("\n" + n + "\t\n" + p + "\nClasse " + c);
            Console.WriteLine("\n \n Notes D'Ecrit \n" );
            Console.WriteLine("___________________________________________________________");
            Console.WriteLine("Note 1 : " + e1 + " \t Note 2 : " + e2 + " \t Note 3 : " + e3 + "\t Note 4 : " + e4 + "\n \n ");
            Console.WriteLine("Notes D'Oral \n" );
            Console.WriteLine("_________________________________");
            Console.WriteLine("Note 1 : " + o1 + " \t Note 2 : " + o2 + " \n \n ");
            Console.WriteLine("_________________________________");
            Console.WriteLine("Moyenne : {0:##.##}",m);

            res = resultat(m);

            Console.WriteLine ("L'élève est donc " + res);

            Console.ReadLine();
        }

      

    }
    
} 


#2 DraKlaW

DraKlaW

    Ia, ia, Cthulhu fhtagn !

  • Membre
  • 458 messages
  • LocationR'lyeh

Posté 07 octobre 2014 - 20:43

Ok, j'ai juste lu en diagonale et j'ai aucune idée de si c'est la source du problème, mais coder avec des accents, c'est mal !!! Dans l'absolu, essaye de te contenter du bon viel ASCII pour le code, même si sur le papier ton langage supporte plus. (Exception: les caractères chelous dans les chaines de caractère, ça peut passer...)

Accèssoirement: code en anglais, t'auras plus de problèmes.

Édit : Faire une fonction moyenne qui prend un nombre fixe de valeurs, c'est pas beau.

Édit 2 : L'indentation / la mise en forme au niveau des if pique les yeux (mais c'est peut-être un foirage IPB). Si tu la refais correctement :
static string resultat(double moyenne)
{
    string note="";

    if (moyenne >= 10)    
        note = "Admis";
    else
    {
        if (moyenne > 8)
            note = "Admis au Rattrapage";
        else
            note = "Non admis";

        return note;
    }        
}
... il devient évident que ton return est mal placé.

#3 Dr_Windu

Dr_Windu

    Avatar du Chaos

  • Engineer
  • 2 277 messages

Posté 07 octobre 2014 - 20:50

Hoy, je me suis permis de forker le topic, vu que ça m'a l'air d'une question sérieuse plus que d'une ânerie du TECOP.
(Même si je sais que la frontière est un peu floue à voir les posts de Hebus - je suppose que je ne les ai pas déplacés systématiquement plus tôt parce que j'adopte inconsciemment l'attitude que le PHP a forcément sa place dans le délirium ? Bref.)

D'abord un disclaimer total : moi y'en a pas parler C#. C'est un langage de grossofteux, donc mon assistance potentielle est limitée.

Remarque 1 : Est-ce que tu es sûr que Unicode est supporté correctement dans les identifieurs ? En théorie ça ne pose pas de problème en C#, mais une implémentation foireuse est vite arrivée. Par principe, j'éviterais les accents et autres caractères non-ASCII dans les noms de fonction, même si le langage le supporte. Cela dit je doute que ça soit le problème.

Remarque 2 : Un super bon plan quand le compilo te jette une erreur bizarre à la tête, c'est de 1 - googler le message, évidemment mais surtout 2 - si tu poses la question à des gens, ajoute le log de compilation, ça peut nous aider à trouver ce qui cloche exactement.

Remarque 3 : Je sais pas si c'est un résultat du copypasta, mais l'indentation de ton premier "else" est mauvaise. Il devrait être aligné avec son "if", normalement (de même que ses accolades, probablement).

Remarque 4 : Si c'est vraiment le "if" qui déconne, j'avoue avoir du mal à voir pourquoi. La seule chose qui me choque, c'est que tu compares un double (moyenne) avec des int (10 ou 8). Par principe j'écrirais 10.0 ou 8.0, mais à mon avis C# doit gérer le cast implicitement comme C.

Remarque 5 : Pourquoi caster la valeur de retour de Moyenne en (double) ? C'est normalement déjà son type.

Remarque 6 : Je ne peux pas déterminer pourquoi tu aurais un message du style "undefined reference to function" (est-ce bien ce que tu as ?) faute de connaître assez bien la syntaxe normale de C#, mais vu que c'est un langage OO, il y a gros à parier que c'est une histoire de namespace et/ou de méthodes statiques dans ta classe Program.
-> Est-ce que C# attache de l'importance aux majuscules au début d'un nom de fonction (je vois que IPB les colore différemment en tout cas, même si bon... IPB) et, par extension, pourquoi certaines de tes méthodes portent-elles une majuscule et pas les autres ?
-> Ça me traumatiserait violemment si c'était le cas, mais est-ce qu'il ne faudrait pas, à tout hasard, préfixer les noms de méthodes internes ? Du style "res = Program::resultat(m);" (ce serait laid quand même) ?

Voilà voilà, ça n'aide sans doute pas sur le problème immédiat, mais ça fait avancer le schmilblick. Cela dit, j'ai une autre remarque unrelated : c'est pas parce que tu ne veux plus passer ton temps à jouer que tu es obligé de t'exiler du forum, hein, y'a un juste milieu à trouver. Je pense que passer une fois par jour ou par semaine voir les nouveautés, c'est pas abusif et puis c'est toujours sympa de te voir. :D

===

EDIT : Mince, comment j'ai pu rater ça ? >_<

Est-ce que tu as vu ce qui arrive quand la moyenne est supérieure ou égale à 10 ? Quelle est la valeur de retour de la fonction resultat ? (Indice : il n'y en a pas, ce qui serait immédiat si le "else" était mieux indenté. Comme quoi, l'indentation...)

Du coup je pense que ton histoire de fonction pas référencée est juste un warning, et que as déduit que le if posait problème du fait que le programme marche, mais ne fait pas ce que tu voulais ? Je pose la question parce que, à lire ton post, ça n'est pas évident de savoir si on cherche une erreur de syntaxe (erreur ou warning à la compilation) ou un bug (comportement incorrect du programme, qui fonctionne par ailleurs).

Modifié par Dr_Windu, 07 octobre 2014 - 20:56.
Oh le boulet.

FYI.png

We did not invent the Algorithm. The Algorithm consistently finds Chaos.
The Algorithm is banned in China. The Algorithm killed Lycos.
The Algorithm is under GPL. The Algorithm constantly finds Chaos.
This is not the Algorithm. This is close.

#4 jeed

jeed

    SUPREM

  • Membre VIP
  • 674 messages
  • Locationun peu partout, même chez toi

Posté 07 octobre 2014 - 20:57

cjhatt10.png



#5 DraKlaW

DraKlaW

    Ia, ia, Cthulhu fhtagn !

  • Membre
  • 458 messages
  • LocationR'lyeh

Posté 07 octobre 2014 - 20:59

Grillé !

Ceci est un message à maturité nulle, merci de ne pas en prendre compte.

Ps : La solution est en édit de mon premier post.
Ps2 : En fait, pour être honnête, c'est le problème qui s'y trouve. J'ai pas donné la solution, mais je suis sur que ça ne devrait pas trop poser de problèmes. Par ailleur, le message d'erreur est plutôt explicite quand on y regarde...

#6 Dr_Windu

Dr_Windu

    Avatar du Chaos

  • Engineer
  • 2 277 messages

Posté 07 octobre 2014 - 21:02

Argh, le screenshot pour du texte ça pique.

Pour le reste ouais, ton compilo a trouvé exactement le même souci que moi et Drak.

Ce qu'il essaye de te dire avec ses mots à lui, c'est qu'un des chemins que ton code peut suivre (lorsqu'il doit se décider entre emprunter la branche du if et celle du else) le conduit à ne pas retourner de valeur dans la fonction "resultat" ; alors que celle-ci est réputée retourner systématiquement une chaîne de caractères. Ergo, phail.
FYI.png

We did not invent the Algorithm. The Algorithm consistently finds Chaos.
The Algorithm is banned in China. The Algorithm killed Lycos.
The Algorithm is under GPL. The Algorithm constantly finds Chaos.
This is not the Algorithm. This is close.

#7 jeed

jeed

    SUPREM

  • Membre VIP
  • 674 messages
  • Locationun peu partout, même chez toi

Posté 07 octobre 2014 - 21:02

Ah merde, si c'est juste ça, jvais genre me casser la gueule par principe


Edit : bon, bah je posterai suite à ce post, une photo de moi avec des bleus et des dents en moins

Merci, et bisous à vous ( vous me manquez, surtout toi )



#8 Dr_Windu

Dr_Windu

    Avatar du Chaos

  • Engineer
  • 2 277 messages

Posté 07 octobre 2014 - 21:03

Ah merde, si c'est juste ça, jvais genre me casser la gueule par principe


Bienvenue au club des crânes fracturés sur un bureau suite à "l'erreur à la con que j'ai cherché pendant trois heures, mékelkon kelkon kelkon arrgh". :D

Spoiler alert : ça n'est pas un club très select parmi les programmeurs.
FYI.png

We did not invent the Algorithm. The Algorithm consistently finds Chaos.
The Algorithm is banned in China. The Algorithm killed Lycos.
The Algorithm is under GPL. The Algorithm constantly finds Chaos.
This is not the Algorithm. This is close.

#9 DraKlaW

DraKlaW

    Ia, ia, Cthulhu fhtagn !

  • Membre
  • 458 messages
  • LocationR'lyeh

Posté 07 octobre 2014 - 21:08

Un grand classique, en effet. (En même temps, tu te doutais que sur un programme aussi complexe, ça ne pouvait pas être autre chose qu'une erreur à la con...)

Et attend d'avoir passé une après-midi sur un i à la place d'un j...

#10 Depeche Schtroumpf

Depeche Schtroumpf

    Born to be blue

  • Postulant
  • 313 messages
  • LocationLouanges, pas location.

Posté 08 octobre 2014 - 06:45

Dans ce coin-ci vous trouverez les traumatisés du Fortran qui ont perdu une semaine à faire des maths à cause d'un implicit none qu'il manquait à une routine...

(Des variables implicites, des variables... IMPLICITES! Oh, un mur ! *court*)



#11 Psykofloyd

Psykofloyd

    When nothing goes right, go left...

  • Membre
  • 188 messages
  • LocationLe chaos n’existe pas, il n’est qu’une formulation de l’ordre.

Posté 09 octobre 2014 - 17:43

Je me suis tellement explose les dents sur du C a 42 que je compatis a ta douleur -_-

Puis GCC envoya sur terre son son fils et prophete Valgrind !

La voie de lumiere.

 

+1 pour le code en anglais et ASCII !

 

Les 95 caractères ASCII affichables :

 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~

Et oui je m'ettait imprimé ca sur un postit ^^


Fuck morning classes.
Fuck early work.
Fuck anything in the the morning that doesn't involve sleeping, sex or bacon.

You either die a hiker or you live long enough to see yourself become a serial killer murdering hikers.


#12 jeed

jeed

    SUPREM

  • Membre VIP
  • 674 messages
  • Locationun peu partout, même chez toi

Posté 16 octobre 2014 - 18:44

Putain, mais les boucles c'est trop chiant ><




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)