2013-12-22, 09:15
  #1
Medlem
Jag har skrivit en formel för arean av en n-sidad polygon pyramid, jag har styltat upp allt så tydligt jag kan för att det ska bli rätt men det ger mig fel svar...

Kod:
decimal n = Convert.ToDecimal(textBox7.Text);
                            decimal s = Convert.ToDecimal(textBox2.Text);
                            decimal a = Convert.ToDecimal((s / 2 * DecimalMath.Sin(DecimalMath.Pi / n)) * DecimalMath.Cos(DecimalMath.Pi / n) * s * n);
                            decimal z = DecimalMath.Pow((s / 2) * (1 / DecimalMath.Sin(DecimalMath.Pi * (180 / n) / 180)), 2);
                            decimal H = DecimalMath.Sqrt(DecimalMath.Pow(s, 2) - z)*s;
                            decimal A = a * H / 3;
                            textBox1.Text = Convert.ToString(A);

n=antal sidor på basen. s=sidan(alla sidor lika långa). a=arean av basen. z=halva formeln för att räkna ut höjden via pytagoras sats. H=andra halvan. A=Volymen av pyramiden.


jag har en annan formel för volymen av en tetrahedron
Kod:
textBox1.Text = Convert.ToString((DecimalMath.Sqrt(2) / 12) * DecimalMath.Pow(Convert.ToDecimal(textBox2.Text), 3));
den förutsätter jag stämmer och den matchar inte föregående formel!
Vad händer?
Citera
2013-12-22, 09:57
  #2
Medlem
christerys avatar
Och när du handräknar, vad får du då?

360grader = 2pi i radianer. Tar du in det på alla ställen?

Orkar inte lösa din skoluppgift men du är på rätt väg när du delar upp problemet, nu kan du ju se om nån del inte producerar det du förväntar dig.
Citera
2013-12-22, 10:29
  #3
Medlem
Citat:
Ursprungligen postat av christery
Och när du handräknar, vad får du då?

360grader = 2pi i radianer. Tar du in det på alla ställen?

Orkar inte lösa din skoluppgift men du är på rätt väg när du delar upp problemet, nu kan du ju se om nån del inte producerar det du förväntar dig.
det är ingen skoluppgift
jag kan inte med sin,cos,tan etc... skulle du kunna kolla om jag gjort om radianer till grader rätt? :>
Citera
2013-12-22, 11:14
  #4
Medlem
christerys avatar
Citat:
Ursprungligen postat av TomRaj2
det är ingen skoluppgift
jag kan inte med sin,cos,tan etc... skulle du kunna kolla om jag gjort om radianer till grader rätt? :>

Det är ju det som är det roliga, sätt en breakpoint på "textBox1.Text = Convert.ToString(A);" eller skriv ut variablerna och jämför med din manuella beräkning.

Det är väl inte kul att lära sig programmering genom att få små problem lösta åt sig. Det roliga är ju att lösa dessa själv, lite som korsord.

Ta det ett steg i taget så går det bra.
Citera
2013-12-22, 11:52
  #5
Medlem
Citat:
Ursprungligen postat av christery
Det är ju det som är det roliga, sätt en breakpoint på "textBox1.Text = Convert.ToString(A);" eller skriv ut variablerna och jämför med din manuella beräkning.

Det är väl inte kul att lära sig programmering genom att få små problem lösta åt sig. Det roliga är ju att lösa dessa själv, lite som korsord.

Ta det ett steg i taget så går det bra.
Det är bara det att jag har hållt på med samma kod i typ 24+tim...
det är en liten del i ett helt program.
Citera
2013-12-22, 12:02
  #6
Medlem
Jag har äntligen gjort framsteg!
Felet ligger i formeln för basarean...
Citera
2013-12-22, 14:53
  #7
Medlem
christerys avatar
Citat:
Ursprungligen postat av TomRaj2
Jag har äntligen gjort framsteg!
Felet ligger i formeln för basarean...

Sedär, men du är säker på att den manuella beräkningen är solid.

För annars om du baserar programmet på nåt som inte stämmer så gäller det gamla ordspråket: skit in = skit ut.

Först löser man problemet och formulerar en algoritm för detta, sen kodar man. Inte tvärt om. Bara ett tips i all välmening.
Citera
2013-12-22, 16:02
  #8
Medlem
Citat:
Ursprungligen postat av christery
Sedär, men du är säker på att den manuella beräkningen är solid.

För annars om du baserar programmet på nåt som inte stämmer så gäller det gamla ordspråket: skit in = skit ut.

Först löser man problemet och formulerar en algoritm för detta, sen kodar man. Inte tvärt om. Bara ett tips i all välmening.
Jag är helt säker på formeln, koden är korrekt men jag får noll som svar...på bas-arean för att vara exakt.
När jag slår exakt samma formel på miniräknaren får jag rätt svar men inte med vs...Jag har dubbelkollat radianer och grader...
Citera
2013-12-23, 06:59
  #9
Medlem
christerys avatar
Citat:
Ursprungligen postat av TomRaj2
Jag är helt säker på formeln, koden är korrekt men jag får noll som svar...på bas-arean för att vara exakt.
När jag slår exakt samma formel på miniräknaren får jag rätt svar men inte med vs...Jag har dubbelkollat radianer och grader...

Tja, är formeln och koden korrekt så kan bara gud eller det flygande spaghettimonstret hjälpa dig.

Jag hade gissat på att en av uträkningarna blir 0 och då blir allt 0.

Sätt en breakpoint och sväva över uträkningen för att kolla om det evalueras eller annars så kör du dom en efter en till variabler slask1, slask2 slask3 osv. och kikar på vilken som blir 0.

Går fortare än att fråga på FB i alla fall.
Citera
2013-12-23, 10:35
  #10
Medlem
Citat:
Ursprungligen postat av christery
Tja, är formeln och koden korrekt så kan bara gud eller det flygande spaghettimonstret hjälpa dig.

Jag hade gissat på att en av uträkningarna blir 0 och då blir allt 0.

Sätt en breakpoint och sväva över uträkningen för att kolla om det evalueras eller annars så kör du dom en efter en till variabler slask1, slask2 slask3 osv. och kikar på vilken som blir 0.

Går fortare än att fråga på FB i alla fall.
jag vet redan vilken som blir noll, och det är den som är korrekt...
Citera
2013-12-23, 10:49
  #11
Medlem
Citat:
Ursprungligen postat av christery
Tja, är formeln och koden korrekt så kan bara gud eller det flygande spaghettimonstret hjälpa dig.

Jag hade gissat på att en av uträkningarna blir 0 och då blir allt 0.

Sätt en breakpoint och sväva över uträkningen för att kolla om det evalueras eller annars så kör du dom en efter en till variabler slask1, slask2 slask3 osv. och kikar på vilken som blir 0.

Går fortare än att fråga på FB i alla fall.
Jag har fixat det nu! av ngn anledning tyckte vs att (1/4)=0 Jag var tvungen att skriva Convert.toDecimal(0.25)*n*[blablabla] . Är det en grej? att en sånn enkel grej ledde till så många timmar! good god.

Det flygande spaghettimonstret?!? trött? :P
Citera
2013-12-23, 11:02
  #12
Medlem
christerys avatar
Citat:
Ursprungligen postat av TomRaj2
Jag har fixat det nu! av ngn anledning tyckte vs att (1/4)=0 Jag var tvungen att skriva Convert.toDecimal(0.25)*n*[blablabla] . Är det en grej? att en sånn enkel grej ledde till så många timmar! good god.

Det flygande spaghettimonstret?!? trött? :P

Tja, varit uppe i nåt dygn nu. Men snart är det jul och jag hoppas att tomten kommer med sömn. Eller var det nåt annat sagoväsende som gjorde det.

Kul att det löste sig.

Men, nu kan du ju knåpa ihop den till en oneliner som får professorer att klia sig i skallen.

1.0/4 skulle ha fungerat. Du dividerade 2 integers.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in