Résolu [C#] Problème if-else

Wazyx YT

Youtuber et Glitcher
Premium
Inscription
2 Février 2014
Messages
793
Réactions
681
Points
6 096
RGCoins
25
Alors voilà, je dois coder en C# un programme permettant de savoir si 3 points A,B et C sont alignés dans un plan mais peu importe les valeurs que je rentre, j'obtiens toujours le message disant que les points sont alignés. Je pense que le problème vient de mon if et de mon else sauf que je débute et du coup je sais pas trop..

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MetroFramework;

namespace Programme_Maths
{
    public partial class Form1 : MetroFramework.Forms.MetroForm
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string xA = textBox1.Text; decimal dxA = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string yA = textBox2.Text; decimal dyA = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string xB = textBox3.Text; decimal dxB = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string yB = textBox4.Text; decimal dyB = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string xC = textBox5.Text; decimal dxC = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string yC = textBox6.Text; decimal dyC = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            decimal Z = (dxB - dxA)*(dyC - dyA) - (dxC - dxA)*(dyB - dyA);
            if (Z == 0)
            {
                MessageBox.Show("Les points A,B et C sont alignés !", "Points alignés");
            }
            else
            {
                MessageBox.Show("Les points A,B et C ne sont pas alignés !", "Points non alignés");
            }
        }
    }
}
 
Alors voilà, je dois coder en C# un programme permettant de savoir si 3 points A,B et C sont alignés dans un plan mais peu importe les valeurs que je rentre, j'obtiens toujours le message disant que les points sont alignés. Je pense que le problème vient de mon if et de mon else sauf que je débute et du coup je sais pas trop..

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MetroFramework;

namespace Programme_Maths
{
    public partial class Form1 : MetroFramework.Forms.MetroForm
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string xA = textBox1.Text; decimal dxA = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string yA = textBox2.Text; decimal dyA = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string xB = textBox3.Text; decimal dxB = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string yB = textBox4.Text; decimal dyB = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string xC = textBox5.Text; decimal dxC = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            string yC = textBox6.Text; decimal dyC = decimal.Parse(xA, System.Globalization.CultureInfo.InvariantCulture);
            decimal Z = (dxB - dxA)*(dyC - dyA) - (dxC - dxA)*(dyB - dyA);
            if (Z == 0)
            {
                MessageBox.Show("Les points A,B et C sont alignés !", "Points alignés");
            }
            else
            {
                MessageBox.Show("Les points A,B et C ne sont pas alignés !", "Points non alignés");
            }
        }
    }
}
Ton problème vient des decimal.Parse(), le premier argument est toujours xA alors qu'il devrait changer ;)
 
Ton problème vient des decimal.Parse(), le premier argument est toujours xA alors qu'il devrait changer ;)
C'est ça de faire vouloir copier coller une commande trop de fois.. Et sinon merci !
Et juste le code est bien comme ça ou tu penses que y'a moyen de le réduire?
 
C'est ça de faire vouloir copier coller une commande trop de fois.. Et sinon merci !
Et juste le code est bien comme ça ou tu penses que y'a moyen de le réduire?
A voir, sachant que la formule mathématique permettant de savoir si 3 points sont alignés est faite grâce à la colinéarité de 2 vecteurs.

Peut-être qu'en calculant les coordonnées de 2 vecteurs avec les 3 points, et avec la formule: xy' - x'y = 0, on peut faire plus court.
 
A voir, sachant que la formule mathématique permettant de savoir si 3 points sont alignés est faite grâce à la colinéarité de 2 vecteurs.

Peut-être qu'en calculant les coordonnées de 2 vecteurs avec les 3 points, et avec la formule: xy' - x'y = 0, on peut faire plus court.
C'est ce que je fais en fait, la decimal Z c'est le résultat du calcul juste au dessus ^^
Mais sinon merci beaucoup !
 
Retour
Haut