To mi hlava nebere – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

To mi hlava nebere – C / C++ – Fórum – Programujte.comTo mi hlava nebere – C / C++ – Fórum – Programujte.com

 

Matěj Pácha0
Super člen
10. 5. 2006   #1
-
0
-

Po??t?m trojf?zovou s?? - klasick? v?po?et sinusovky. Bohu?el mi to ale po??t? v?echny hodnoty stejn?, jako by se ua=ub=uc. Prom?nn? jsou:
double v.t - ?as (prom?nn?)
double p.u - amplituda
double p.f - frekvence
Funkce v.inkrement() je vlastn? "procedura", kter? v ka?d?m cyklu zvy?uje ?as o dt=0.001.
Ludolfovo ??slo jsem si definoval s?m
#define M_PI 3.141592
Do ua mi to p?kn? po??t?, ale ub a uc by m?lo b?t posunut? o +/- 120? a nen?.
Je?t? p?ipomenu, jak m? v?po?et vypadat:
u=f(t), tj. u=x*sin(w*t+a)
x ... amplituda
w ... ?hlov? rychlost w=2*pi*f
a ... fazovy posun
Jde mi jen o to, jestli mi tam uvid?te chybu, proto?e j? ji tam nevid?m!



for (v.t = 0; v.t <= 10; v.inkrement())
{
//vypocet napeti
ua = p.u*sin(2*M_PI*p.f*v.t);
ub = p.u*sin(2*M_PI*p.f*v.t - 2/3*M_PI);
uc = p.u*sin(2*M_PI*p.f*v.t + 2/3*M_PI);
//Chyb? z?pis do souboru
}

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
Matěj Pácha0
Super člen
11. 5. 2006   #2
-
0
-

Takže jsem v tom trošku pokročil, bohužel do většího prázdna. Zkusil jsem to trošku rozložit na víc menších výpočtů. Ke svému zděšení jsem ale zjistil, že mi nefunguje operace dělení!!! V debuggeru jsem si to procházel - tady je výsledek:



double pom = 0;
//vypocet: vysledek:
pom=2*2; //pom=4 OK
pom=2/3; //pom=0 !!!
pom=2/3*3 //pom=0 !!!
pom=3*6; //pom=18 OK
pom=4/2; //pom=2 OK
pom=3/2; //pom=1 !!!!!!
pom=2/3; //pom=0 !!!!!!

Ještě doplním, že jsem vložil knihovnu "math.h" a pracuju v MS Visual Studiu 6. nevím o žádném formátování výsledku. Jsem z toho jednoduše Kolben Daněk!
Jestli platí takováhle matematika, tak potěš koště!!! Nejde o to, že bych to neuměl nahradit součinem, ale představte si, že bezmezně věříte metodě a používáte ji všude. Když metoda selže, jsou dvě varianty. Buď na to přijdete (lepší varianta), nebo ne (tragédie).

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
Matěj Pácha0
Super člen
11. 5. 2006   #3
-
0
-

Takže to berte jako radu: když budete dělit dvě konstanty desetinného formátu (float, double) zadávaní přímo, zadejte je s desetinnou tečkou. Jak jsem se přesvědčil, někdy to přetypování na typ integer přichází jako blesk z čistého nebe. Ve výpočtu se totiž provedl výpočet mezi dvěma čísly typu int s výsledkem int a až ten výsledek se přetypoval na double. Číslo 2 totiž není double, ale int! Pro zadáné čísla double by to bylo 2.0 !!! Jo a když na něco nemůžete přijít, počkejte do rána :ok:

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
Jura_0
Stálý člen
11. 5. 2006   #4
-
0
-

paashi napsal:

Takže to berte jako radu: když budete dělit dvě konstanty desetinného formátu (float, double) zadávané přímo, zadejte je s desetinnou tečkou. Jak jsem se přesvědčil, někdy to přetypování na typ integer přichází jako blesk z čistého nebe. Ve výpočtu se totiž provedl výpočet mezi dvěma čísly typu int s výsledkem int a až ten výsledek se přetypoval na double. číslo 2 totiž není double, ale int! Pro zadání čísla double by to bylo 2.0 !!! Jo a když na něco nemůžete přijít, počkejte do rána :ok:


Jen doplnim. C++ ma totiz silnou typovou kontolu, takze kdyz delite dve cela cisla vrati se cele cislo(jak uz jste psal), jinak pokud byste chtel jakykkoliv jiny typ, tak staci pretypovat jeden z operandu na tento typ.

Nahlásit jako SPAM
IP: ...–
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, 13 hostů

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ý