Bonjour à tous, Je viens zester votre zeste (schtroumpfer), afin de m'éclairer :
Je participe à un concours, qui a ceci en premier problème : J'ai donc crée ce petit programme, qui je pense résout plutôt bien le problème (en respectant les contraintes si j'ai bien lu) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | using System; using System.Text; namespace JeuDeCarteConsole { class Program { static void Main(string[] args) { bool resultat = false; int nombreDeLigneInt = 0; string nombreDeLigneString; int nombreDePoints = 0; //Initilisation d'une variable pour for int i = 0; while (resultat == false || (nombreDeLigneInt < 1 || nombreDeLigneInt > 1000)) { //Demande à l'utilisateur de rentrer le nombre de ligne Console.WriteLine("Rentrez le nombre de lignes (compris entre 1 et 1000)"); nombreDeLigneString = Console.ReadLine(); //On vérifie que l'utilisateur rentre un entier resultat = Int32.TryParse(nombreDeLigneString, out nombreDeLigneInt); if (true == resultat) { //Conversion du nombre ligne n en un entier m nombreDeLigneInt = Int32.Parse(nombreDeLigneString); } else { //On laisse resultat en état false } //On vérifie que le nombre est compris entre 1 et 1000 if (nombreDeLigneInt < 1 || nombreDeLigneInt > 1000) { Console.WriteLine("Vous n'avez pas saisi un nombre compris entre 1 et 1000. Veuillez recommencer\n"); } else { break; } } //On effectue la somme for (i = 0; i <= nombreDeLigneInt; i++) { nombreDePoints += i; } //On affiche le nombre de points requis Console.WriteLine("Le nombre de points requis est : " + nombreDePoints); Console.ReadLine(); } } } |
A noter : pour faciliter la lecture j'ai pas mis la variable N mais nombreDeLigneInt, je changerais plus tard bien sur.
A partir de ceci, j'ai deux questions :
1) Dans le site d'entrainement du concours (c'est le concours Prologin), ils mettent à disposition un code source à compléter pour nous aider, et si je prend celui en c, aucun problème, il me semble "normal":
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<stdio.h> #include<stdlib.h> void triangles(int n){ /* Complétez le code ici */ } int main(void){ int n; scanf("%d", &n); triangles(n); return 0; } |
Sauf qu'en C#, le langage que j'ai choisi, le code source n'est pas du tout le même et me semble beaucoup plus compliqué (il l'est…) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | using System; public class nb_triangulaire { static bool eof; static String buffer; public static char readChar_(){ if (buffer == null){ buffer = Console.ReadLine(); } if (buffer.Length == 0){ String tmp = Console.ReadLine(); eof = tmp == null; buffer = "\n"+tmp; } char c = buffer[0]; return c; } public static void consommeChar(){ readChar_(); buffer = buffer.Substring(1); } public static int readInt(){ int i = 0; char s = readChar_(); int sign = 1; if (s == '-'){ sign = -1; consommeChar(); } do{ char c = readChar_(); if (c <= '9' && c >= '0'){ i = i * 10 + c - '0'; consommeChar(); }else{ return i * sign; } } while(true); } public static void triangles(int n) { /* Complétez le code ici */ } public static void Main(String[] args) { int n = readInt(); triangles(n); } } |
Alors je ne comprends pas pourquoi, surtout que je ne comprend pas tout le code ? Qu'est ce que ce code apporte ?
Et deuxième question, je ne sais pas si mon code est bien optimisé, alors je prendrai tout avis pour savoir si il est trop commenté ? trop long ? trop compliqué ?
Merci d'avance