Program til at beregne pythagoras

I dette forum kan du stille og svare på spørgsmål om C# programmering. Alle med en interesse for C# er velkommen!
Besvar
Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49
Program til at beregne pythagoras

Indlæg af Bedemanden » 27. okt 2017, 21:53

Hej,

Jeg skal lave en assigment hvor jeg skal kode et program, som skal kunne regner Pythagoras læresætning ud:

a^2 + b^2 = c^2

Fx hvis jeg indtaster a = 4, b = 4 og c = 5 så skriver programmer "4^2 + 4^2 = 5^2"


Jeg kan simpelthen ikke finde ud af at komme i gang.

Jeg har fået et tip at man kan bruge tre løkker og en if-sætning.


En som kan guide mig i den rigtige retning?

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Program til at beregne pythagoras

Indlæg af cristian » 28. okt 2017, 14:11

Kode: Vælg alt

/*
 * Nemprogrammering -  https://www.nemprogrammering.dk/forum/viewtopic.php?f=47&t=1875
 */
int a = 3;
int b = 4;

StringBuilder sb = new StringBuilder();
sb.append(a + "^2" + " + " + b + "^2 = ");

a = (int) Math.pow(2, a);
b = (int) Math.pow(2, b);

sb.append(a + b);
System.out.println(sb);

// output
3^2 + 4^2 = 24
Resultatet skal du dog ikke (så vidt jeg kan se) sætte til power of two, da det jo er resultatet.
Der er sikkert en mere raffineret måde at gøre dette, men du har ikke brug for en lykke med mere.

Bedemanden, ved du hvordan du regner en "power of two" værdi ud i hoved? Rent princip mæssigt.

Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49

Re: Program til at beregne pythagoras

Indlæg af Bedemanden » 29. okt 2017, 18:55

Tak for svar :)


Jeg må kigge på det.



Jo, 2^2, 3^3 osv. har jeg styr på.

Hvorfor?

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Program til at beregne pythagoras

Indlæg af cristian » 29. okt 2017, 19:24

Jo, 2^2, 3^3 osv. har jeg styr på.

Hvorfor?
Hvis man ikke ved hvordan man regner noget ud på papir / eller har en ide om det.
Så bliver det sværer at lave et program der kan gøre det for en.

Noget til power of X er bits, det vil sige at de ser således ud når du skriver dem op

128 64 32 16 8 4 2 1 (1 springer du over her)

Så hvis du f.eks har 3^2
Så tæller du højre mod venstre fra 2, tre gange så du ender på 8 hvilket er det samme som 3^2

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: Program til at beregne pythagoras

Indlæg af jepperask » 30. okt 2017, 20:04

cristian skrev:
Jo, 2^2, 3^3 osv. har jeg styr på.

Hvorfor?
Hvis man ikke ved hvordan man regner noget ud på papir / eller har en ide om det.
Så bliver det sværer at lave et program der kan gøre det for en.

Noget til power of X er bits, det vil sige at de ser således ud når du skriver dem op

128 64 32 16 8 4 2 1 (1 springer du over her)

Så hvis du f.eks har 3^2
Så tæller du højre mod venstre fra 2, tre gange så du ender på 8 hvilket er det samme som 3^2
Arh, mener du ikke 2^3 = 8? Den binære talrække og pow har kun en relation ved 2^x, og ikke x^2 som pythagoras tager udgangspunkt i - eller måske misforstår jeg dit svar?

Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49

Re: Program til at beregne pythagoras

Indlæg af Bedemanden » 4. nov 2017, 23:32

Selve matematikken har jeg styr på, det er programmeringen, som jeg ikke forstår - jeg er lige startet på uddannelse, hvor vi har det meget basic. Jeg synes dog det er spændende, men svært at lære =)

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: Program til at beregne pythagoras

Indlæg af jepperask » 4. nov 2017, 23:33

Må vi se din kode?

Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49

Re: Program til at beregne pythagoras

Indlæg af Bedemanden » 5. nov 2017, 01:05

Kode: Vælg alt

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;

namespace Pythagoras
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int a = 1; a <= 200; a++)
            {
                for (int b = 1; b <= 200; b++)
                {
                    for (int c = 1; c <= 200; c++)
                    {
                        if (c*c == (a*a + b*b))
                        {
                            listBoxOutput.Items.Add(a.ToString() + " " + b.ToString() + " " + c.ToString() + " ");
                        }
                    }
                }
            }
                       
        }
    }

}

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: Program til at beregne pythagoras

Indlæg af jepperask » 5. nov 2017, 11:30

Din løsning gør faktisk meget af det du ønsker, den udregner nemlig alle kombinationer af trekanter med a,b,c = {1 .. 200}. Men får du ikke givet a og b?
Hvis opgaven er at du givet a og b skal udregne c, så kan du faktisk fjerne dine 2 yderste for-loops. Der er nemlig ingen grund til at teste forskellige værdier af a og b, hvis du får dem givet.

Kode: Vælg alt

        public static void TestMethod(int a, int b)
        {
            Console.WriteLine($"Testing {a} and {b}");
            for (int c = 1; c <= 200; c++)
            {
                if (c * c == (a * a + b * b))
                {
                    Console.WriteLine(a.ToString() + " " + b.ToString() + " " + c.ToString() + " ");
                }
            }
        }
Hvis du vil have en løsning uden for-loop, så tænk på at du har udtrykket:
a^2+b^2=c^2
Hvis du vil isolere c i ovenstående, skal du tage kvadratroden af c^2 og ligeledes på venstre side, så du får:
sqrt(a^2+b^2) = c

Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49

Re: Program til at beregne pythagoras

Indlæg af Bedemanden » 6. nov 2017, 19:00

Jeg kontrollerede lige mit design og der får jeg givet a og b.

Jeg ville dog selv kunne bestemme a og b, så derfor lavede jeg de loops også.

Jeg fik bare aldrig rettet min design til, så jeg kunne indtaste værdierne a og b.

Besvar