Exercice C# [Résolu]

Messages postés
8
Date d'inscription
samedi 8 janvier 2011
Dernière intervention
30 mai 2012
- - Dernière réponse : cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
- 21 janv. 2011 à 20:26
Bonjour,

J'ai un problème avec un code que notre professeur nous a envoyé. Je n'arrive pas à le reproduire. Pouvez-vous m'expliquez ce qui manque pour le lancer?
Encore merci.

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

namespace testing
{
class Program{

static void Main(string[] args)
{
switch (args[2].ToUpper())
{
case "/ADD":
Console.WriteLine(
(
System.Convert.ToInt32(args[0])
+
System.Convert.ToInt32(args[1])
).ToString()
);
break;
case "/DEL":
bool b;
int a , c ;

b = int.TryParse(args[0], out a );
b = int.TryParse(args[1], out c );

Console.WriteLine( (a - c).ToString() );
break;


default:
Console.WriteLine("Invalid selection.");
break;


}
Console.Read();


}
}
}
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
3
Merci
Bonjour

Que veux-tu dire par
Je n'arrive pas à le reproduire

Le code semble complet,il suffit de le copier-coller pour l'executer.

Note: C'est un code en mode console, il te faut donc faire un projet Console

Bob.
C# is amazing, enjoy it!

Merci cs_Robert33 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_Robert33
Messages postés
382
Date d'inscription
samedi 22 janvier 2005
Dernière intervention
13 août 2011
3
Merci
salut tu a des argument manquants sur la ligne de commande

Merci yohan49 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de yohan49
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
3
Merci
Re

args[] est un tableau de chaine de caracteres reçu en parametre (Main(string[] args))
L'expression "args[2]" indique que le programme attend au moins 3 arguments
args[0], args[1], args[2]

Vu le code, les deux autres arguments doivent être des nombres entiers
System.Convert.ToInt32(args[0]) et System.Convert.ToInt32(args[1]) indique le le programme veut convertir les arguments en "int"


Ton programme doit donc etre lancé en mode console avec des arguments
Ouvre une console de commande sur ton ordi (Démarrer->executer->Cmd)
Place toi à l'endroit ou se trouve ton programme (cd le-chemin-complet)
Lance le programme avec ses arguments

ex: MonProgramme 12 25 /ADD


Bob.
C# is amazing, enjoy it!

Merci cs_Robert33 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
3
Merci
Re...

OK, mais revenons au probleme de base, on verra le switch apres.
je pense que tu confonds le code et l'execution.

1) Reglons le probleme de l'execution
Supposons que ton programme, une fois compilé, s'appelle "testing .exe"
comme il est en mode console, pour l'executer tu dois ouvrir une fenetre de commande et tapper la commande "Testing.exe"
jusque là tu suis ?

Ton programme attend des arguments ou parametres, ce sont des informations qu'on lui passe à l'execution.
donc si tu ne lui en passes pas tu as une belle exception (index out of range exeption)
pour lui passer des arguments, il faut les ajouter à la commande, dans ton cas il a besoin de 3 parametres, 2 entiers et un ordre
exemples:
Testing.exe 12 25 /ADD
Testing.exe 25 12 /DEL
tu suis toujours ?

Autre question, quel est ton environnement de developpement ?
utilise-tu un environnement integré avec un debugger, genre visual studio, ou compile-tu en ligne de commande ?

Bob.
C# is amazing, enjoy it!

Merci cs_Robert33 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
3
Merci
Bonsoir

oui tu peux utiliser directement le debugger
Ouvre les proprietes de ton projet, dans l'oglet DEBUG il y a une zone de texte (Command line arguments) ou tu peux entrer les argument de la commande
Mets y uniquement les arguments sans guillemets ex: 12 25 /ADD
ensuite tu peux debugger.

pour revenir sur le "switch case"
c'est une facilité qui permet d'éviter une cascade de If then else...
example
if (chaine == "A") 
{
  //code pour "A"
} 
else if (chaine == "B") 
{
  //code pour "B"
}
else if (chaine == "C") 
{
  //code pour "C"
}
else
{
  // Code pour les autres valeurs
}

Peux se remplacer par
switch (chaine)
{
  case "A":
    //code pour "A"
  break;
  case "B":
    //code pour "B"
  break;
  case "C":
    //code pour "C"
  break;
  default:
    // Code pour les autres valeurs
  break;
}
De plus à l'execution c'est plus rapide car le complitateur ne fait qu'une seule évaluation puis is saute directement au bon endroit
alors qu'avec les if...then...else les conditions sont évaluées jusqu'à trouver la bonne.


Bon code...
Bob.
C# is amazing, enjoy it!

Merci cs_Robert33 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_Robert33
Messages postés
8
Date d'inscription
samedi 8 janvier 2011
Dernière intervention
30 mai 2012
0
Merci
Bonjour,

Merci de me répondre. Je le fais bien en mode console, quand je lance ce code il me dit:
switch (args[2].ToUpper()) : indexoutofrangeexeption was unhandled.

Pourrais-je te demander également de m'expliquer le code s'il te plaît?

Merci,
Lameth
Commenter la réponse de Lameth7
Messages postés
8
Date d'inscription
samedi 8 janvier 2011
Dernière intervention
30 mai 2012
0
Merci
Salut, je suis débutant en c#, quand tu dis qu'il manque des arguments sur la ligne de commande, tu pourrais m'expliquer s'il te plait.
J'étais absent à ce cours et j'ai demandé au prof qu'il m'envoie le code. Donc c'est de la nouvelle matière et je ne sais pas vraiment ce qui se passe.
Merci
Commenter la réponse de Lameth7
Messages postés
382
Date d'inscription
samedi 22 janvier 2005
Dernière intervention
13 août 2011
0
Merci
ta ligne de lancement de prog doit etre ca :

testing 10 20 /ADD

où 10 args[0], 20 args[1] et /ADD = args[2]
Commenter la réponse de yohan49
Messages postés
382
Date d'inscription
samedi 22 janvier 2005
Dernière intervention
13 août 2011
0
Merci
et puis on n'est quand même en janvier , ca fait 6 mois que tu code, et tu ne sais toujours pas ce que c'est que les argument de ligne de commandes, ca fait peur , soit change d'ecole, soit arrete de secher les cours
:)
Commenter la réponse de yohan49
Messages postés
8
Date d'inscription
samedi 8 janvier 2011
Dernière intervention
30 mai 2012
0
Merci
:) je ne vois pas à quel moment j'ai dit que je faisais du code depuis 6 mois (5 mois pcq'on commence les cours en septembre).
De plus, le cours de c# a commencé en décembre (je n'ai eu que 5 cours jusqu'à présent et j'ai raté le dernier, celui pour lequel je pose des questions). Ce sont des cours du soir(je travaille en journée) et nos profs ne sont en général pas des vrais professeurs, ils connaissent juste très bien leur domaine. Donc ils se contentent de montrer du code et à toi de comprendre, il ne nous a jamais parlé du terme argument ni de quoi que ce soit d'autre. Pour lui la base on doit se débrouiller seul...Donc on doit plus travailler par nous-mêmes, et pour çà il faut du temps et j'en ai pas beaucoup.
C'est pour çà que ma question est simple pour vous mais pas pour moi. Donc j'ai encore une question:
Je dois mettre le : où 10 args[0], 20 args[1] et /ADD = args[2] ou précisément s'il te plaît. Parce que je ne comprend pas vraiment (c'est la première fois que je vois un switch)

Encore merci,
Lameth

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

namespace testing
{
class Program
{

static void Main(string[] args)
{
switch (args[2].ToUpper())
{
case "/ADD":
Console.WriteLine(
(
System.Convert.ToInt32(args[0])
+
System.Convert.ToInt32(args[1])
).ToString()
);
break;
case "/DEL":
bool b;
int a, c;

b = int.TryParse(args[0], out a);
b = int.TryParse(args[1], out c);

Console.WriteLine((a - c).ToString());
break;


default:
Console.WriteLine("Invalid selection.");
break;


}
Console.Read();


}
}
}
Commenter la réponse de Lameth7
Messages postés
8
Date d'inscription
samedi 8 janvier 2011
Dernière intervention
30 mai 2012
0
Merci
oui là çà va. J'utilise visual studion 2010 (debugger compris).
Donc je peux le tester dans VB directement et pas dans aller en mode console?

Merci,
Lameth
Commenter la réponse de Lameth7

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.