Avatar billede shjtip Nybegynder
06. oktober 1999 - 01:01 Der er 28 kommentarer og
2 løsninger

beregn areal af trekant i c++ samt potens regning

hej Eksperter, jeg har lige lavet et program med et "polyfhormisk" (hvordan er det nu det staves :-))det virker udemærket, men functionen skal udregne arealet af en retvinklet trekant. Hvordan er det lige??????man gør det :-) og hvordan kan jeg iøvrigt bruge potenser i c++. f-.eks (a*2 + b*2 = c*2) Jeg har prøvet at kigge i min online hjælp og  i math.h, men jeg har ikke rigtigt kunne finde det.
arealet af en trekant = ½ *h *g eller hva?
Hilsen Simon
Avatar billede chruker Nybegynder
06. oktober 1999 - 06:46 #1
Arealet af en hvilken som helst trekant beregnes med: højde * bredde * 0,5

Jeg kende ikke C++ særlig godt, men prøv med en kommando der hedder noget med expo(), exp()
Avatar billede soepro Nybegynder
06. oktober 1999 - 08:45 #2
Din formel "en halv højde * grundlinie" er korrekt - som chruker skriver uanset om trekanten er retvinklet eller ej. Pythagora's sætning derimod (a**2+b**2 = c**2) gælder KUN retvinklede trekanter.

Potenser får du med pow() funktionen, f.eks. sådan her:

#include <stdio.h>
#include <math.h>

int main(void)
{
  int x = 3, x2 = 0, xy = 0,
      y = 4, y2 = 0,
      z = 5, z2 = 0;
  xy = (int)pow(x,y);
  printf("x=%d i y=%d'te potens er = %d.\n", x, y, xy);
  x2=(int)pow(x,2);
  y2=(int)pow(y,2);
  z2 = x2 + y2;
  z =(int)pow(z2, (float)1/2);
  printf("%d**2+%d**2 = %d + %d = %d = c**2, dvs. c=%d\n",
        x, y, x2, y2, z2, z);
  return 0;
}

Iøvrigt kan du finde kvadratroden, kubikroden etc. vha. samme funktion vha. pow(x, (float)1/p), hvor p så er 2 hvis det er kvadrat-roden, 3 hvis det er kubik-roden osv. (HUSK float, da 1/p ellers tolkes som int og så bliver 0.)
Avatar billede bjarke Nybegynder
06. oktober 1999 - 08:57 #3
soepro >> Øv noget møg, jeg vidste, at jeg skulle være taget på arbejde klokken 8 i stedet for nu (8.45)

shj >> Hvis du skal blære dig en smule, så er formlen for en ikke retvinklet trekant (skulle vist passe):
  Areal = ½*a*b*sin(C)
Hvor a og b er to sider og C er vinklen MELLEM a og b :-)
Avatar billede shj Nybegynder
06. oktober 1999 - 14:53 #4
God morgen er lige stået op her kl 1400, jeg har været på nattevagt. Jeg oprettede spørgsmålet fra min arbejdsplads, derfor kan jeg ikke acceptere svar før Fredag. Men tak for de gode indlæg, jeg vil straks afprøve pow funktioenen. 
welcome back soepro!
Avatar billede bjarke Nybegynder
06. oktober 1999 - 14:57 #5
Nattevagt - hvor henne?
Avatar billede shj Nybegynder
06. oktober 1999 - 15:14 #6
jeg er it-operatør i en mellemstor edb drift. meget af selve produktionen foregår om natten, derfor arbejder jeg iøjeblikket på skiftehold. Fra 1. nov starter jeg som System engineer i et Sun Solaris og aix unixmiljø. Så er det slut med alt det natteroderi :-)
Hilsen Simon
Avatar billede bjarke Nybegynder
07. oktober 1999 - 08:09 #7
Jeg ved ikke om sådan noget morer dig. Men hvis du er interesseret, så kan jeg forsyne dig med formler, så du kan beregne areal, vinkler og sidelængder af enhver trekant, hvis du har blot 3 oplysninger om den.

3 oplysninger bestående af sidelængder eller vinkler (blot ikke 3 vinkler alene).

I øvrigt så gælder den sidste formel jeg skrev selvfølgelig også for retvinklede trekanter!
Avatar billede shj Nybegynder
07. oktober 1999 - 17:48 #8
Bjarke << Det ville være fint, ´jeg har nemlig gået og ledt efter mit gamle matematik leksikon, det er tit man lige skal bruge en eller anden formel, så enhver formel er interessant for mig.

Hilsen Simon
Avatar billede bjarke Nybegynder
08. oktober 1999 - 09:07 #9
KENDES:

2 sider + 1 vinkel:
c*c = a*a + b*b - 2*a*b*cos(C) (cosinus-relationen)

3 sider:
A = sqrt( s*(s-a)*(s-b)*(s-c) ), hvor s=1/2*(a+b+c) (Herons formel)

cosinus-relationen kan så omskrives så du kan finde en vinkel vha 3 sider:
C = arccos( (-c*c + a*a + b*b)/(2*a*b) ), arccos = cos i minus første

F.eks. 1 side + 2 vinkler:
a/sin(A) = b/sin(B) (sinus-relationen)
Det er selvfølgelig det samme som:
a = b*sin(A)/sin(B)

Resten kan vist udledes af dette ved at kombinere formlerne eller bytte rundt på bogstaverne (f.eks. finder der selvfølgelig 3 sinus-relationer, men de er selvfølgelig allesammen alligevel det samme).

Håber du kan bruge det. Jeg forbeholder mig ret til at have skrevet forkert, så check lige om programmet regner rigtigt.

God fornøjelse :-)

PS: Udfordringen for dig som programmør ligger selvfølgelig i at lave programmet, så man bare indtaster de 3 data man har og så finder programmet selv ud af hvilke formler den skal bruge.......;-)
Avatar billede soepro Nybegynder
08. oktober 1999 - 09:36 #10
bjarke >> Hvis ikke min (efterhånden) støvede hukommelse fra Mat/Fys svigter mig, gælder sinus/cosinus relationerne mellem en trekants vinkler og sider KUN retvinklede trekanter. Det er kun Herons formel, en omskrivning af ½*h*g, som gælder alle trekanter. Husk på at sinus til en vinkel er "højden" af en retvinklet trekant med hypotenuse =  1, cosinus tilsvarende "længden" af en retvinklet trekant med hypotenuse = 1.

simon >> Hvis det kun er trekantens areal, der er interessant, og du kender to sider (a & b) & vinklen mellem de to sider (v), er formlen ganske enkelt:

areal = ½ * b * sin(v) * a

Den holder i øvrigt også for en retvinklet trekant - uanset om det er den rette eller de to 45 graders vinkler man "kender".
Avatar billede bjarke Nybegynder
08. oktober 1999 - 10:19 #11
soepro >> hvis du har ret, så er min hukommelse endnu mere støvet end din :-) Den formel du skriver (som ofte kaldes appelsin-formlen - A=absin ) har jeg allerede skrevet lidt ovenfor i min første kommentar.

Det du tænker på er cosinus og sinus-formlerne:
cos(A) = b/c    (hvor vinklen C er den rette)
og sin(A) = a/c
De gælder kun for retvinklede trekanter, men RELATIONERNE gælder for alle trekanter, men jeg vil undlade at lave beviset her, men blot henvise til diverse gym-lærebøger ;-)
Avatar billede soepro Nybegynder
08. oktober 1999 - 10:39 #12
bjarke >> sorry - I stand corrected !!
Avatar billede bjarke Nybegynder
08. oktober 1999 - 10:42 #13
soepro >> Jeg går meget op i matematik ;-)
Avatar billede shj Nybegynder
08. oktober 1999 - 14:00 #14
he he! der kan man så hvor et relativt simpelt matematik spørgsmål kan udvikle sig til et matematisk forum. Hvis nogens matematik hukommelse er støvet må det i sandhed være min. Så det er fedt at få nogle af de gamle læresætninger genopfrisket. Jeg har længe programmeret i visual basic, der er mange funktioner givet på forhånd hvorved man ikke har så meget brug for matematik som i c++.
Jeg kan iøvrigt oplyse at jeg har sendt soepros svar på potenser til min c++ lærer da han også gerne vil have et svar *LOL*
Hilsen Simon
Avatar billede bjarke Nybegynder
08. oktober 1999 - 14:37 #15
Kendte din lærer ikke pow-funktionen :-/ ???

for heltal, kan du jo selv lave funktionen:

float potens(float x, int eks)
{
  float temp = x;
  for(int i=1; i<eks; i++)
    temp*=temp;
  return temp;
}
Avatar billede bjarke Nybegynder
08. oktober 1999 - 14:50 #16
Hov ja, du kan jo også lave den for negative eksponenter (men decimal-eksponenter kan jeg ikke lige improvisere i hovedet):

float potens(float x, int eks)
{
  float temp;
  if(eks>0)
    {
    temp = x;
    for(int i=1; i<eks; i++)
      temp*=temp;
    }
  if(eks<0)
    {
    temp = 1/x;
    for(int i=1; i<-eks; i++)
      temp*=temp;
    }
  else return 1;
  return temp;
}
Avatar billede bjarke Nybegynder
08. oktober 1999 - 14:52 #17
Men du skal selvfølgelig lige overveje dine variabel-typer. Og det vil måske (?) være smartere at lave funktionen som en template ;-)

Beklager hvis I får en masse mails fordi jeg skriver så mange gange, men man har jo ikke altid gennemtænkt det hele på forhånd:-)
Avatar billede shj Nybegynder
08. oktober 1999 - 16:02 #18
Når jeg om engang er færdig med det her kursus kunne det være sjovt at komme igang med lidt windows programmering. jeg har både vc 5.0 og borland c++ bulder 4.0 std. jeg tror jeg fortrækker borland, findes der nogle bøger der tager windowsprogrammering i borland, step by step? Det er jo noget anderledes med VCL og API
Avatar billede bjarke Nybegynder
08. oktober 1999 - 17:44 #19
Det ved jeg ikke, men giver du et tip, hvis du støder på en god bog???
Avatar billede shj Nybegynder
08. oktober 1999 - 18:43 #20
jep det skal jeg gøre

God weekend
Avatar billede soepro Nybegynder
11. oktober 1999 - 11:38 #21
Jeg vil foreslå dig at anskaffe Teach Yourself C++ Builder in 21 Days, som du f.eks. kan få fra Ravenholm. Den "spilder" godt nok lige 7 af de 21 dage på alm. C++ programmering, men jeg synes den er meget lærerig. Er der ikke manualer med til din BCB40 Std. ??? Der er en "svend" på næsten 800 sider med min BCB4.0 Pro hvor man kan finde svaret på næsten alt.
Avatar billede shj Nybegynder
11. oktober 1999 - 17:46 #22
Hej soepro<< min bcb4 std. er en låne cd, så jeg har desværre ikke fået manualer med, men jeg har tænkt på at anskaffe mig den. ved du hvad den koster ca.

Hilsen -simon
Avatar billede bjarke Nybegynder
12. oktober 1999 - 08:27 #23
soepro >> hvad koster 21 Days og kan man manualen købes seperat (for hvor meget)?
Avatar billede shj Nybegynder
12. oktober 1999 - 13:44 #24
bjarke >> har du egentligt nogensinde programmeret i windows?
Avatar billede bjarke Nybegynder
12. oktober 1999 - 13:47 #25
Ork ja - mindst en times tid ;-)

Lige nu sidder jeg og forsøger at lave lidt VB (lidt cut'n'paste fra hjælpen - lidt gætteri - optage lidt makro og så klippe i den - osv)
Avatar billede soepro Nybegynder
12. oktober 1999 - 13:56 #26
BCB 4.0 koster ca. 1195,- kr. Ravenholm på 44889900. Hvis du køber den, behøver du ikke købe TY C++ 21, for der følger TY C++ 14 med ! Ellers koster TY C++ 21 ca. 440,- kr. (Køb programmet !!!)
Avatar billede bjarke Nybegynder
12. oktober 1999 - 14:02 #27
soepro >> BCB 4.0 er det programmet? Og hvad koster BCB 4.0 Pro?

Iøvrigt shj og soepro (og alle i andre smuglæsere;-) har I tænkt på, at ifølge c++ syntaks, så burde man nærmere skrive:

    'navn' << 'meddelelse'
end  'navn' >> 'meddelelse'

jævnfør cin og cout!!!! :)
Avatar billede shj Nybegynder
12. oktober 1999 - 15:44 #28
he he!
char vbspørgsmål[max];
cout <<"det har du helt ret i Bjarke!
cout <<"hvis du har et spørgsmål i vb!<<endl;
cout <<"Vil jeg da gerne være behjælpelig hvis jeg kan";
cin>>vbspørgsmål;

Avatar billede bjarke Nybegynder
12. oktober 1999 - 15:56 #29
#define max 1000000000000000000  // så har jeg lidt at bruge af - hi hi

// Ok:
void sporgsmal()
  {
  cout << "Hvordan opererer man med celleværdier?";
  cout << "\nJeg troede man bare kunne gøre noget i retning af:";
  cout << "\n  cells("A1").value = \"hej\"";
  cout << "\neller .text";
  }

Pyha, irriterende måde at sidde og skrive på!
Er man virkelig nødt til først at select'e en celle og derefter give den en værdi (hvordan sætter man den f.eks. lig med en inputbox?).

Og hvad er forskellen på select og activate?

Hvis det ikke er nok, så prøv at kigge her (hvis du gerne vil hjælpe mig:-)

  http://www.eksperten.dk/spm.asp?id=5430
Avatar billede roadkill Nybegynder
06. maj 2000 - 10:25 #30
Vi, som ikke har glemt alt vores matematik, vil osse kunne tilføje følgende mulighed for at udregne potenser:

a=x^y => log(a)=log(x^y)=y*log(x) => a=exp(y*log(x));

Altså

double pow(double x, double y)
{
  return exp(y*log(x));
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester