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

Signaler
Messages postés
2
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
8 janvier 2010
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
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...
A voir également:

3 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
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-
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
11
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);
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
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-