Forum » Programiranje » C in računanje kotov
C in računanje kotov
RatedR ::
Lp, imam nalogo ki sicer ni težka, a ker še nisem naletel na sinuse in kosinuse jo neznam rešit.
Naloga zahteva izpis vseh treh notranjih kotov pravokotnega trikotnika.
Za izračun kota bi uporabil sinusni izrek:
sin α = (kateta1 * sin b) / kateta2 in sin c = (hipotenuza * sin b) / kateta 2
Prišel sem do sem, naprej pa nevem več kako.
Koda bi se mogla nadaljevat nekako tako:
Hvala za pomoč, če potrebujete dodatne informacije odpišite.
Naloga zahteva izpis vseh treh notranjih kotov pravokotnega trikotnika.
Za izračun kota bi uporabil sinusni izrek:
sin α = (kateta1 * sin b) / kateta2 in sin c = (hipotenuza * sin b) / kateta 2
Prišel sem do sem, naprej pa nevem več kako.
#include<stdio.h> #include<conio.h> #include<math.h> int main(void) { int kateta1; int kateta2; int hipotenuza; scanf("%d", &kateta1); scanf("%d", &kateta2); scanf("%d", &hipotenuza); float kotAlfa; float kotBeta = 90; float kotGama;
Koda bi se mogla nadaljevat nekako tako:
sin(kotaAlfa) = kateta1 * sin(kotBeta) / kateta2; //sin a = (kateta1 * sin ß) / kateta2 sin(kotGama) = hipotenuza * sin(kotBeta) / kateta2; //sin y = (hipotenuza * sin ß) / kateta2
Hvala za pomoč, če potrebujete dodatne informacije odpišite.
RatedR ::
kar mal se sm potrudi...
http://www.tutorialspoint.com/c_standar...
Nisem še srečal funkcij val, x, ret, sej nisem reku da mi reši nalogo...hočem samo pomoč oz. namig.
EDIT: Vse kar hočem izvest je, da mi spodnja koda deluje:
sin(kotaAlfa) = kateta1 * sin(kotBeta) / kateta2; //sin a = (kateta1 * sin ß) / kateta2 sin(kotGama) = hipotenuza * sin(kotBeta) / kateta2; //sin y = (hipotenuza * sin ß) / kateta2
Zgodovina sprememb…
- spremenilo: RatedR ()
Infinity ::
Za inverz SIN metode še nisi slišal? Mogoče si že slišal za arkus sinus?
mislim da ti to reši problem.
P.S.: http://www.cprogramming.com/fod/asin.ht...
kotaAlfa = asin(kateta1 * sin(kotBeta) / kateta2); kotGama = asin(hipotenuza * sin(kotBeta) / kateta2);
mislim da ti to reši problem.
P.S.: http://www.cprogramming.com/fod/asin.ht...
Zgodovina sprememb…
- spremenilo: Infinity ()
RatedR ::
Za inverz SIN metode še nisi slišal? Mogoče si že slišal za arkus sinus?
kotaAlfa = asin(kateta1 * sin(kotBeta) / kateta2);
kotGama = asin(hipotenuza * sin(kotBeta) / kateta2);
mislim da ti to reši problem.
P.S.: http://www.cprogramming.com/fod/asin.ht...
Sva že bližje rešitvi, vendar še ne čisto...torej koda je zdaj:
#include<stdio.h> #include<conio.h> #include<math.h> int main(void) { int kateta1; int kateta2; int hipotenuza; scanf("%d", &kateta1); scanf("%d", &kateta2); scanf("%d", &hipotenuza); float kotAlfa; float kotBeta = 90; float kotGama; kotAlfa = asin(kateta1 * sin(kotBeta) / kateta2); kotGama = asin(hipotenuza * sin(kotBeta) / kateta2); printf("Kot alfa: %f\n", kotAlfa); printf("Kot Gama: %f\n", kotGama); printf("Kot Beta: %f\n", kotBeta); getch(); }
Ko stvar zaženem dobim sledeče rezultate:
Željen rezultat je kot pri kotu Beta.
stapler rump ::
Ne razumeš prav sinusnega izreka.
Poleg tega nastaviš v tvojem programu kot beta na približno 5160 stopinj.
Poleg tega nastaviš v tvojem programu kot beta na približno 5160 stopinj.
Infinity ::
Tako kot je @stapler_rump rekel beta ni pravilno nastavljena, vse kotne operacije se dela v radianih.
90° zamenjaj za Pi/2.
90° zamenjaj za Pi/2.
Janac ::
#include <stdio.h> #include <math.h> int main (void) { double dA, dC, dB; double sqrt(double x); printf("Pozdravljeni v programu!\n\n"); printf("Vnesite dolzino prve katete:\n\n"); scanf("%lf", &dA); printf("Vnesite dolzino hipotenuze:"); scanf("%lf", &dC); dB= sqrt(dA*dA+dC*dA); printf("Dolzina prve katete je: %lf, medtem ko je prva kateta %lf ter hipotenuza %lf", dB, dA, dC); return (0); }
Imam podobno nalogo... Je algoritem pravilen? Izračunal naj bi manjkajočo kateto b v pravokotnem trikotniku.
Zgodovina sprememb…
- spremenil: Janac ()
Janac ::
dB= sqrt((dA*dA)-(dC*dC));
Kaj pa takole? Z minusom.
Odgovor sem našel tule: https://answers.yahoo.com/question/inde...
Senitel ::
Tudi ne, probaj še z deljenjem... Kaj pravi Pitagora in kaj imaš ti napisano v 16. vrstici zgoraj?
P.S.: Pardon, narobe prebral kaj zgoraj sploh vpisuješ in kaj hočeš nazaj. Minus bo prav.
P.S.2: Minus gre v pravo smer, ampak rešitev še vedno ni pravilna.
P.S.: Pardon, narobe prebral kaj zgoraj sploh vpisuješ in kaj hočeš nazaj. Minus bo prav.
P.S.2: Minus gre v pravo smer, ampak rešitev še vedno ni pravilna.
Zgodovina sprememb…
- spremenil: Senitel ()
Janac ::
Pravi tole...
Bi mogoče moral obrnit enačbo?
Vsota površin kvadratov katet pravokotnega trikotnika je enaka površini kvadrata nad hipotenuzo.
Bi mogoče moral obrnit enačbo?
Janac ::
B) Dopolnite vaš algoritem tako, da se izračunajo in izpišejo še vsi notranji koti pravokotnega trikotnika Ne pozabite narisati diagrama poteka.
Moj poskus:
beta=sin(dA/dC); alfa=sin(dC/dB); gama=sin(dB/dA);
Mi lahko kdo pomaga?
Zgodovina sprememb…
- spremenil: Janac ()
Senitel ::
Sinus je kotu nasprotna kateta / hipotenuzo. Torej sin(beta) = dA/dC... Inverz sinusa je pa?
Janac ::
Janac ::
Če sem vaju prav razumel imam za računanje beta kota OK formulo?
V matematiki ne blestim. Nikoli nisem.
V matematiki ne blestim. Nikoli nisem.
Zgodovina sprememb…
- spremenil: Janac ()
Janac ::
Mogoče ve kdo kako bi za tretjo v zanki naredu tko da se pri vnosu vrednost sešteje s vrednostjo ki je že v tej spremenljivki oz. v pomnilniku pod imeon spremenljivke?
Poskusil sem s:
Poskusil sem s:
while(iStevec<=5) { printf("Vnesite prvo oceno:\n"); scanf("%lf", &++dOcena1); iStevec=iStevec+1; }
RatedR ::
Janac nared si svojo temo.
__________________________________________
Mi lahko kdo pomaga pri mojem problemu?
__________________________________________
Mi lahko kdo pomaga pri mojem problemu?
Janac ::
Infinity ::
Nightta, saj smo ti že povedali da pretvori beto v radiane, saj knjižnica deluje z radiani.
RatedR ::
Yacked2 ::
"programerja", ki ne znata uporabljati pitagorovega izreka :S
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Infinity ::
nightta, rezultat je v radianih... Preprosto ga pretvori v stopinje po naslednji konverziji 1 radian = 57.2957795°. Drugič pa fantje malo bolj možgane uporabljat in pri matematiki poslušat, sploh če želite biti uspešni inženirji.
P.S.: V kodi zamenjaj vrednost za beto z konstanto HALF_PI, ki je del Math knjižnice (math.h)
P.S.: V kodi zamenjaj vrednost za beto z konstanto HALF_PI, ki je del Math knjižnice (math.h)
Zgodovina sprememb…
- spremenilo: Infinity ()
RatedR ::
Janac ::
Senitel ::
Brat, pisat, seštevat in odštevat,... bi se spodobilo, da se še spomne. Pitagora pa ni drastično naprej od tega.
In Nightta, zakaj za vraga sploh hard kodiraš kotBeta?
In Nightta, zakaj za vraga sploh hard kodiraš kotBeta?
RatedR ::
Brat, pisat, seštevat in odštevat,... bi se spodobilo, da se še spomne. Pitagora pa ni drastično naprej od tega.
In Nightta, zakaj za vraga sploh hard kodiraš kotBeta?
Zato ker naloga zahteva izpis vseh treh notranjih kotov pravokotnega trikotnika, en kot je pravokoten, ga imamo že podanega, saj tako sem si jaz zamislil stvar.
Senitel ::
Če imaš en kot podan, potem ne rabiš vnašat treh stranic.
In trikotnik s stranicami 8, 9, 12 ni pravokotni trikotnik.
...
In trikotnik s stranicami 8, 9, 12 ni pravokotni trikotnik.
...
RatedR ::
čuhalev ::
Če je trikotnik pravokoten, potem potrebuješ le dva podatka, torej bodisi dve kateti ali kateto in hipotenuzo.
Janac ::
#include <stdio.h> int main (void) { double dStevilo1, dStevilo2, dRezultat; char cOperand; printf("***Pozdravljeni v kalkulatorju!***\n\n"); printf("Vnesite prvo stevilo:\n\n\n"); scanf("%lf", &dStevilo1); getchar(); printf("Vnesite zeljen operand:\n\n"); scanf("%lf", &cOperand); getchar(); printf("Vnesite se drugo stevilo:\n\n"); scanf("%lf", &dStevilo2); getchar(); if(cOperand=='+') { dRezultat=(dStevilo1+dStevilo2); } else if(cOperand=='-') { dRezultat=dStevilo1-dStevilo2; } else if(cOperand=='*') { dRezultat=dStevilo1*dStevilo2; } else if(cOperand=='/') { dRezultat=dStevilo1/dStevilo2; } getch(); printf("%f", dRezultat); printf("%f %c %f je rezultat: %f", dStevilo1, cOperand, dStevilo2, dRezultat); return (0); }
Za operand mi na koncu izpiše 0 pa rezultat tudi ostane 0, če pa rezultat deklariram na 1 pa se izpiše za rezultat 1, torej predvidevam da je nekje semantična napaka? Prosim da kdo preleti program....
Janac ::
RatedR ::
Janac čemu tolk \n\n\n\n\n\n\n itd.? pa zakaj za vraga eni še vedno uporabljate madžarsko notacijo?
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Matematika - piramida pomočOddelek: Šola | 930 (740) | stb |
» | Romb, podan z višino in diagonaloOddelek: Šola | 1080 (856) | Randomness |
» | Fizika, kotne funkcijeOddelek: Šola | 10922 (9920) | amigo_no1 |
» | Java Pitagorejska številaOddelek: Programiranje | 1625 (1172) | HIP_HOP |
» | Fizika:VrvohodecOddelek: Šola | 1901 (1756) | jjohny |