» »

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.
#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.

dukedl ::

lp dukedl

RatedR ::

dukedl je izjavil:

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?

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 ::

Infinity je izjavil:

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.

Infinity ::

Tako kot je @stapler_rump rekel beta ni pravilno nastavljena, vse kotne operacije se dela v radianih.
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 ()

Senitel ::

Ne, ni pravilen.

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... :8) 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.

Zgodovina sprememb…

  • spremenil: Senitel ()

Janac ::

Pravi tole...
Vsota površin kvadratov katet pravokotnega trikotnika je enaka površini kvadrata nad hipotenuzo.


Bi mogoče moral obrnit enačbo?

Janac ::

(dA*dA)+dB=(dC*dC);


Tole bi pa moglo bit prav sedaj...

Janac ::

	dB= (-(dA*dA)+(dC*dC));


Samo še v koren dam ;)

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 ::

Senitel je izjavil:

Sinus je kotu nasprotna kateta / hipotenuzo. Torej sin(beta) = dA/dC... Inverz sinusa je pa?


kosinus? :)

bluefish ::

Arcsin pa res.

Janac ::

Če sem vaju prav razumel imam za računanje beta kota OK formulo?

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:

	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?

Janac ::

RatedR je izjavil:

Janac nared si svojo temo.
__________________________________________
Mi lahko kdo pomaga pri mojem problemu?


Kaj nimava enakega problema?:P

Infinity ::

Nightta, saj smo ti že povedali da pretvori beto v radiane, saj knjižnica deluje z radiani.

RatedR ::

Infinity je izjavil:

Nightta, saj smo ti že povedali da pretvori beto v radiane, saj knjižnica deluje z radiani.

Rezultat je še vedno napačen:

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)

Zgodovina sprememb…

  • spremenilo: Infinity ()

RatedR ::

Yacked2 je izjavil:

"programerja", ki ne znata uporabljati pitagorovega izreka :S

Js sm pa mislil da je tema namenjena temu da pomagaš, nisem programer, nisem še srečal teh funkcij, kdor sprašuje nakonc le ve.

amacar ::

Ne rabiš biti programer, kotne funkcije se naučiš že v osnovni šoli.

Janac ::

amacar je izjavil:

Ne rabiš biti programer, kotne funkcije se naučiš že v osnovni šoli.


Ti se resno še spomniš kaj iz osnovne šole?

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?

RatedR ::

Senitel je izjavil:

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.
...

RatedR ::

Senitel je izjavil:

Če imaš en kot podan, potem ne rabiš vnašat treh stranic.
In trikotnik s stranicami 8, 9, 12 ni pravokotni trikotnik.
...

Zdaj sem že čisto zmeden...kaj je pol fora tega? ne ovinkarit pa povej kaj naj naredim.

č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....

Senitel ::

In kaj "%lf" pomeni in zakaj misliš, da bi ti moral prebrat + kot znak?

Janac ::

Senitel je izjavil:

In kaj "%lf" pomeni in zakaj misliš, da bi ti moral prebrat + kot znak?


Oh, sem zamenjal na formatno določilo "%c" in deluje :)

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Matematika - piramida pomoč

Oddelek: Šola
6872 (682) stb
»

Romb, podan z višino in diagonalo

Oddelek: Šola
9969 (745) Randomness
»

Fizika, kotne funkcije

Oddelek: Šola
2610472 (9470) amigo_no1
»

Java Pitagorejska števila

Oddelek: Programiranje
201575 (1122) HIP_HOP
»

Fizika:Vrvohodec

Oddelek: Šola
121835 (1690) jjohny

Več podobnih tem