[C#] Inversion de Nombre (Débutant)

momos73 Messages postés 2 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 8 janvier 2010 - 9 sept. 2009 à 22:31
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 10 sept. 2009 à 12:56
Bonjour,
Je commence totalement à programmer en C# et je n'ai donc aucune connaissance dans ce language.
Je dois faire un programme en mode console composé d'une fonction qui retourne deux nombres inversés de ceux saisies au clavier. C'est très simple à comprendre mais j'ai quelques difficultés de syntaxe.
Un petit aide ne serais pas du luxe.
Je vous laisse le code que j'ai commencé:

SUJET: Ecrire une fonction permettant d'échanger 2 entiers saisis au clavier
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Exercice3
{
    class Program
    {
        public static string EchangeNbr(ref int nbr1,ref int nbr2)
        {
            int i;
            i = nbr1;
            nbr1 = nbr2;
            nbr2 = i;
            return EchangeNbr(ref nbr1,ref nbr2);
        }

        static void Main()
        {
            int saisie1 , saisie2 ;
            
            saisie1 = Console.ReadLine();
            saisie2 = Console.ReadLine();
            EchangeNbr(ref saisie1,ref saisie2);
            Console.WriteLine(saisie1, saisie2);

            Console.Read();
        }
    }
}

Je travaille avec Visual Studio 2008 et il m'affiche des erreurs de conversion entre les variables (Impossible de convertir implicitement le type 'string' en 'int'). Je pense qu'il faut utiliser une fonction "ToString()" mais je ne sais pas l'utiliser.

Merci pour votre soutiens...

3 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
10 sept. 2009 à 08:36
Salut,
Non, il faut convertir les string en int avant de les passer à la ta fonction (pas de conversion implicite entre string et int).

Utilise pour ceci Int32.Parse ou encore mieux, Int32.TryParse


[hr]
-Blog-
-Site Perso-
0
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
10 sept. 2009 à 09:09
Je ne veux pas dire de betises, mais il me semble que ce bout de code :

public static string EchangeNbr(ref int nbr1,ref int nbr2)
        {
            int i;
            i = nbr1;
            nbr1 = nbr2;
            nbr2 = i;
            return EchangeNbr(ref nbr1,ref nbr2);
        }


va boucler sur lui même. Si tu veux renvoyer ton résultat au format string, change cette portion de code :

return Echange(ref nbr1, ref nbr2)


par :

return string.Format("{0} {1}", nbr1, nbr2); 


Le string.Format(..) formatte l'objet string, ça évite d'avoir un truc pas beau du genre :

return nbr1.ToString() + " " + nbr2.ToString();

Ensuite dans la fonction main(), tu remplaces ce bout de code :

EchangeNbr(ref saisie1,ref saisie2);
            Console.WriteLine(saisie1, saisie2);


par :

string resultat = EchangeNbr(ref saisie1, ref saisie2);
Console.WriteLine(resultat);
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
10 sept. 2009 à 12:56
public class Program
    {
        public static void Main(string[] args)
        {
            int x = 0;
            int y = 2;

            Swap(ref x, ref y);
        }

        public static void Swap<T>(ref T first, ref T second)
        {
            T temp = first;
            first = second;
            second = temp;
        }
    }


[hr]
-Blog-
-Site Perso-
0
Rejoignez-nous