F-ce Sin, Cos ... – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

F-ce Sin, Cos ... – C / C++ – Fórum – Programujte.comF-ce Sin, Cos ... – C / C++ – Fórum – Programujte.com

 

Lodhart0
Newbie
10. 11. 2007   #1
-
0
-

Ahoj potřeboval bych poradit ohledně těchto f-cí. Jakto že když zadám např sin(2)
tak mi to hodí nesmyslené číslo v podobě 0.898cosi ? To samé u jiných f-cí ? Díky.

Nahlásit jako SPAM
IP: 217.196.215.–
Zelenáč0
Posthunter
10. 11. 2007   #2
-
0
-

Zkus napsat kod?!

Nahlásit jako SPAM
IP: 89.176.254.–
Lodhart0
Newbie
10. 11. 2007   #3
-
0
-

tak jsem myslel že není v tomto případě důležitý, ale už jsem na to přišel:

printf ...... sin(45*pi/180).

--------------------
problém mám ale stejně mám napsat f-ci sin pomoci rozvoje :
sin(x)=x - x^3/3! + x^5/5! - x^7/7! + .....

no a zaboha mi to nechce házat ty správné čísla !!

Nahlásit jako SPAM
IP: 217.196.215.–
k
~ Anonymní uživatel
144 příspěvků
10. 11. 2007   #4
-
0
-



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

#define PI 3.1415926535

double fact(double n)
{
double x=1;
for(;n>0;n--)
x*=n;
return x;
}

double sine(double x) /*v radianoch*/
{
double y=0;
int i;
for(i=0;i<=30;i++) { /*nemam sajnu po jake cislo sa ten faktorial zmesti do double, len som tresol...*/
if(i%2 == 0)
y+=pow(x, 2*i+1)/fact(2*i+1);
else
y-=pow(x, 2*i+1)/fact(2*i+1);
}

return x;
}

int main()
{
printf("%f %f \n", sin(30*PI/180), sine(30*PI/180));
return 0;
}


Problem je, ze 30 neni nekonecno ;) a keby aj je, tak sa tie faktoraily nezmestia ani do 500MB a nieze do 64b ;).
To ako to robi sin() nemam sajnu...

Nahlásit jako SPAM
IP: 195.91.54.–
k
~ Anonymní uživatel
144 příspěvků
10. 11. 2007   #5
-
0
-

...kurna, vo f-ci sine ma byt "return y;" ...my bad ;)

Nahlásit jako SPAM
IP: 195.91.54.–
Zelenáč0
Posthunter
10. 11. 2007   #6
-
0
-

To k : Takova drobnustka: ve vypoctu faktorialu bych dal podminku "n>1"

Nahlásit jako SPAM
IP: 89.176.254.–
k
~ Anonymní uživatel
144 příspěvků
10. 11. 2007   #7
-
0
-

jj, pisal som to narychlo... a navyse ak nemoze pouzit sin()/cos() tak asi ani pow() ale to uz necham nanho ;)

Nahlásit jako SPAM
IP: 195.91.54.–
Zelenáč0
Posthunter
10. 11. 2007   #8
-
0
-

Nj, naprogramovat takovy pow je desne slozity :-)
Dovolil jsem si z f-ce sin odstranit to modulo, jelikoz to je desne narocna operace ;-)



#include "iostream"
using namespace std;

double pow(double num, int exp){
double ret = 1;
for(int i=0; i<exp; i++){
ret *= num;
}
return ret;
}

double fakt(int n){
double x = 1;
while(n>1){
x *= n;
n--;
}
return x;
}

double sin(double rad){
double ret = rad;
int plus = -1;
for(int n=3; n < 300; n+=2, plus*=-1){
ret += plus * pow(rad, n) / fakt(n);
}
return ret;
}

int main(){
cout << sin(90*3.14/180) << endl;
return 0;
}

Nahlásit jako SPAM
IP: 89.176.254.–
Martin
~ Anonymní uživatel
1602 příspěvků
16. 1. 2008   #9
-
0
-

mohl by mi někdo prosim pomoct při napsání kodu pro spočítání sinu? už to hledám 3 dny a nikde se to nepíše nějak srozumitelně.

Nahlásit jako SPAM
IP: 89.185.238.–
yaqwsx+9
Posthunter
16. 1. 2008   #10
-
0
-

To Martin : Zkousel jsi wikipedii?Treba http://cs.wikipedia.org/wiki/Sinus -popripadne cizojazcne verze......

Nahlásit jako SPAM
IP: 85.160.90.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Martin
~ Anonymní uživatel
1602 příspěvků
16. 1. 2008   #11
-
0
-

To sem zkoušel, ale tam na wikipedii není vzorec přímo na spočítání sin 45° a to ja bych potřeboval. Mělo by to jít nějak přímo že napíšeš double sin(double x); ale nevim jak přesně

Nahlásit jako SPAM
IP: 89.185.238.–
yaqwsx+9
Posthunter
16. 1. 2008   #12
-
0
-

Pockat, ty jsi chces napsat sam f-ci na sin nebo to chces vedet pouze ze zvedavosti?Pokud si ji sam chces napsat, tak ti doporucuji toho nechat.Je to tezke a navic nemusi byt tak rychla jako f-ce sin v hlavicce <math>

Nahlásit jako SPAM
IP: 85.160.106.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Martin
~ Anonymní uživatel
1602 příspěvků
16. 1. 2008   #13
-
0
-

Takhle ja bych si chtěl udělat kalkulačku, která by mi spočítala sinus zadaného čísla.
O hlavičce <math.h> vim ale nevim jaký příkaz vybrat pro spočítání toho sinu.

Nahlásit jako SPAM
IP: 89.185.238.–
byF0
Návštěvník
16. 1. 2008   #14
-
0
-

Fce sinus bere jako argument úhel vyjářený v RADIÁNECH.

Nahlásit jako SPAM
IP: 85.71.97.–
Martin
~ Anonymní uživatel
1602 příspěvků
16. 1. 2008   #15
-
0
-

To jo ale ja bych potřeboval prostě :
Zadej úhel : "zadam"
sin: "vysledek" - popřípadě počet radiánů
Něco takoveho naprogramovat. Jenomže nevím kudy kam.

Nahlásit jako SPAM
IP: 89.185.238.–
tmi0
Věrný člen
16. 1. 2008   #16
-
0
-

To Martin : hmm tak co treba tohle :

#include <math.h> 

double noob_fce (double uh){ return sin(uh);}

??? zvladnes to ???

na vzdory vsem ocekavanim a predpokladum totiz slouzi ke spocitani sinu "prikaz" sin.
jo a sin 45stupnu je 2 na (-1/2)

Nahlásit jako SPAM
IP: 89.185.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
Martin
~ Anonymní uživatel
1602 příspěvků
16. 1. 2008   #17
-
0
-

Ja bych to chtěl udělat nějak takhle jestli je to možné ?



#include <math.h>
#include <stdio.h>
int main(void)
{
int uh;
scanf("%d", &uh);
double sin (double uh){ return sin(uh);}
/*tady je ta fela*/
return 0;
}

tam pravě nevim jak vypsat hodnotu toho sinu

Nahlásit jako SPAM
IP: 89.185.238.–
tmi0
Věrný člen
16. 1. 2008   #18
-
0
-

To Martin : nejdriv se prosim nauc aspon zaklady programovani. viditelne nechapes ani zaklady vystupu programu, ani mechanizmu funkci. tohle jsou veci ktere si muzes precist tady na webu v serialu. tak s tim prosim neotravuj zde na foru, ktere by melo slouzit vecem ktere v serialech postihnout nelze.

Nahlásit jako SPAM
IP: 89.185.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
Tomas_Dejmek
~ Anonymní uživatel
52 příspěvků
16. 1. 2008   #19
-
0
-

Spíš mu asi blbě radíte a matete ho.
Martin: Jak říká byF je to v radianech, to znamená že místo stupnů (degrees) ti vysledek vyjede v částech PI. Čili 360° = 3.1415. Takže aby jsi převedl výsledek na stupních, musíš vynásobyt asi tímto 57.29578

takže si vytvoř nějakou takovoudle funkci:
double ToDegrees(double num){
return num * 57.29578;
};

int main(){
cout<<"uhel : "<<ToDegrees(sin(2));
return 0;
};
Tohle by ti už mělo vypsat správně a dál si s tim snad poradíš.

Nahlásit jako SPAM
IP: 85.160.101.–
tmi0
Věrný člen
16. 1. 2008   #20
-
0
-

To Tomas_Dejmek : hmm kdyz sme u toho mateni tak 360° rozhodne neni 3.1415, ale zhruba dvakrat tolik (ale ten koeficient nasobeni je zhruba spravne tak predpokladam ze jste se jen prepsal). no ale myslim si ze problem uzivatele Martina neni jen v tomto - staci pohled do zdrojoveho kodu v .

navic on(Martin) potrebuje zjistit ciselnou hodnotu fce sin pro nejaky uhel (alespon tak jsem to pochopil), tedy potrebuje prevod opacny.

Nahlásit jako SPAM
IP: 89.185.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
Martin
~ Anonymní uživatel
1602 příspěvků
17. 1. 2008   #21
-
0
-

to Tmi: Chybu v kodu mám to přopouštím, je to i logické, protože mi to nefunguje. Ale zajímalo by mě jakou, abych ji mohl odstranit a neptat se někde jinde. jinak máte pravdu já potřebuju číselnou hodnotu sinu pro určitý úhel.

Nahlásit jako SPAM
IP: 89.185.238.–
tmi0
Věrný člen
17. 1. 2008   #22
-
0
-

To Martin : ciselnou hodnotu lze ziskat zavolanim funkce sin s parametrem ktery odpovida velikosti uhlu v radianech - je tedy nejprve treba prevest z uhlu na radiany.
jak naznacil Tomas_Dejmek , lze k tomu pouzit jednoduchy hruby mechanizmus nasobeni velikosti uhlu ve stupnich koeficientem (180/3,14).
vse potrebne k implementaci takovehoto programu naleznete v tutorialu C/C++ na tomto portalu.

Nahlásit jako SPAM
IP: 89.185.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
vsman
~ Anonymní uživatel
8 příspěvků
23. 2. 2008   #23
-
0
-

Martin napsal:
Ja bych to chtěl udělat nějak takhle jestli je to možné ?


#include <math.h>
#include <stdio.h>
int main(void)
{
int uh;
scanf("%d", &uh);
double sin (double uh){ return sin(uh);}
/*tady je ta fela*/
return 0;
}

tam pravě nevim jak vypsat hodnotu toho sinu


Co to je za syntax deklarovat funkciu vo funkcii a este k tomu rekurzivnu... :-o

Nahlásit jako SPAM
IP: 89.173.13.–
Zelenáč0
Posthunter
23. 2. 2008   #24
-
0
-

To vsman : Take si precti tmiho reakci ;-)

Nahlásit jako SPAM
IP: 89.176.254.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 140 hostů

Podobná vlákna

Sin a cos — založil Jiří

Cos — založil drizz

Cos na -1 — založil maartyyyy

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý