Pascal-problem s prikladom

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
kolo
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 04. led 2004

Pascal-problem s prikladom

Příspěvek od kolo »

Ani zaboha nemozem prist nato ako napisat v Pascale tento priklad:
Napíšte program, ktorý vypočíta uhol medzi hodinovou a minútovou ručičkou, ak na vstupe
zadáte čas v hodinách a minútach.

Piplem sa s tym 1h a nic :x
Amd AthlonXp 2500+
Titan D5TB/CU35/R1,Epox 8KRAI(Via KT600),PQI 2x256 MB 400 CL2.5,ATI Sapphire Radeon 9550 128mb/128bit 250/200@435/265 + GLACIAL NorthPole 1000,Maxtor 15GB "5400" 2mb cache,Mercury HT4500 5.1,TTC-003,WinXp+SP2
zombux
Odborník PCT
Odborník PCT
Uživatelský avatar
Registrován: 05. čer 2003
Bydliště: sluníčkář a havloid z pražské lumpenkavárny

Příspěvek od zombux »

no rozdělil bych to na dvě části, jednak potřebuješ spočítat úhel hodinový a jednak minutový, to budeš počítat od jedný čáry, třeba od polohy "12 hodin". no a pak si řekneš že hodinová i minutová ručička má 60 možných poloh (pokud se hodinová posouvá každou minutu, sekundy neřešíme). vypočítáš o jaký procento se pohne za minutu (360° / 60 minutama = 6), tj u každý minuty se pohne o 6 stupňů. a to je celý - vynásobíš hodiny a minuty 6ti a pak zjistíš jakej je mezi nima rozdíl
ignorelist: kremrole a dezoláti
kolo
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 04. led 2004

Příspěvek od kolo »

Ako to mam presne zapisat??
Hodiny budu premena a
Minuty budu premenna b
Hovoris ze to treba dat krat 6
IF a*6 Then Write ...............TOTO MI ROBI PROBLEM,LEBO NEVIEM AKO DALEJ POD then by malo byt ELSE ale co tam mam dat?
Skus to napisat presne staci IF..............
Amd AthlonXp 2500+
Titan D5TB/CU35/R1,Epox 8KRAI(Via KT600),PQI 2x256 MB 400 CL2.5,ATI Sapphire Radeon 9550 128mb/128bit 250/200@435/265 + GLACIAL NorthPole 1000,Maxtor 15GB "5400" 2mb cache,Mercury HT4500 5.1,TTC-003,WinXp+SP2
kolo
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 04. led 2004

Příspěvek od kolo »

mOZE TO BYT TAK???
uhol bude ako U
U:=(a*6-b*6)
Amd AthlonXp 2500+
Titan D5TB/CU35/R1,Epox 8KRAI(Via KT600),PQI 2x256 MB 400 CL2.5,ATI Sapphire Radeon 9550 128mb/128bit 250/200@435/265 + GLACIAL NorthPole 1000,Maxtor 15GB "5400" 2mb cache,Mercury HT4500 5.1,TTC-003,WinXp+SP2
zombux
Odborník PCT
Odborník PCT
Uživatelský avatar
Registrován: 05. čer 2003
Bydliště: sluníčkář a havloid z pražské lumpenkavárny

Příspěvek od zombux »

kolo píše:mOZE TO BYT TAK???
uhol bude ako U
U:=(a*6-b*6)
hm nějak mi to nemyslí :oops: ale myslim že takhle by to mohlo fungovat. ještě musíš vymyslet jednu věc - když bude úhel větší než 180° tak zase počítáš zpátky, takže if U>180 then U:=U-(U-180) nebo tak něco.

//edit: jednodušší by bylo

IF a>b THEN U:=(a*6-b*6) ELSE U:=(b*6-a*6)
ignorelist: kremrole a dezoláti
zombux
Odborník PCT
Odborník PCT
Uživatelský avatar
Registrován: 05. čer 2003
Bydliště: sluníčkář a havloid z pražské lumpenkavárny

Příspěvek od zombux »

ne to je blbost. princip je správnej, ale ty hodiny jsou špatně, prvně musíš převést 24hodinovej systém na 12h (IF a>23 then a:=a-24), a pak přepočítáš stupně. každá hodina má 30°. vzorec pak bude

IF a*30>b*6 THEN U:=(a*30)-(b*6) ELSE U:=(b*6)-(a*30);
IF U>180 then U:=U-(U-180)
Naposledy upravil(a) zombux dne stř 5. led 2005, 20:28, celkem upraveno 2 x.
ignorelist: kremrole a dezoláti
kolo
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 04. led 2004

Příspěvek od kolo »

kEBY SOM DAVAL HODINY OD 0=12...............11,TAK BY TO BOLO
(a*30)-(b*6)...................
Ked je vacsi ako 180 stupnov tak 360-(a*30)-(b*6)...................
Asi to nepochopis :oops: ,DIK ZA RADU,dost mi pomohla!!!!!!!!
Amd AthlonXp 2500+
Titan D5TB/CU35/R1,Epox 8KRAI(Via KT600),PQI 2x256 MB 400 CL2.5,ATI Sapphire Radeon 9550 128mb/128bit 250/200@435/265 + GLACIAL NorthPole 1000,Maxtor 15GB "5400" 2mb cache,Mercury HT4500 5.1,TTC-003,WinXp+SP2
TomV
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 12. lis 2003
Bydliště: Jihočeská Metropole (tm) ... lol
Kontaktovat uživatele:

Příspěvek od TomV »

Takže, já to trochu shrnu. Bez ohledu na to, co tu zatím padlo, takhle jsem to vymyslel já a celkem mi to dává smysl. Zkusím ten "algoritmus" rozepsat v krocích...


1) Uvažujme čas 12:00 jako úhel 0° pro obě ručičky. Převedeme 24 hodinový čas na 12ti hodinový.

2) Spočítáme úhel minutové ručičky. To je to snažší : 360°/60 = 6° jedna minuta, tzn. úhel minutovky = minuty * 6.

3) Spočítáme hodinovku. Ta už je těžší, protože nemá jenom dvanáct poloh (po 30°), ale ještě se pohybuje mezi nimi v závislosti na minutovce.

A teď ten fígl - minutovka má 60 poloh. Za předpokladu, že největší přesnost tohoto programu je 1 minuta, můžeme rozdělit těch 30° (část mezi celými hodinami) na 60 dílů - tj. 60 * 0,5°.

Takže úhel hodinovky = počet hodin * 30° + počet minut * 0,5°.

4) Spočítáme rozdíl mezi úhly a máme výsledek... :-)


A já ti dík za tohle zadání, protože už vím, co napíšu jako zápočtovku z Pascalu... :-)
The problem has been eaten.Obrázek
Vanilkovou do velkýho kornoutu bych prosil... hodně velkýho... hodně vanilkovou
zombux
Odborník PCT
Odborník PCT
Uživatelský avatar
Registrován: 05. čer 2003
Bydliště: sluníčkář a havloid z pražské lumpenkavárny

Příspěvek od zombux »

Tom má pravdu, k hodinám se musí přičíst i minuty. jj. kecám :)
ignorelist: kremrole a dezoláti
TomV
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 12. lis 2003
Bydliště: Jihočeská Metropole (tm) ... lol
Kontaktovat uživatele:

Příspěvek od TomV »

kolo píše:kEBY SOM DAVAL HODINY OD 0=12...............11,TAK BY TO BOLO
(a*30)-(b*6)...................
Ked je vacsi ako 180 stupnov tak 360-(a*30)-(b*6)...................
Asi to nepochopis :oops: ,DIK ZA RADU,dost mi pomohla!!!!!!!!
Máš to blbě. :) Nezapočítáváš do toho úhel hodinovky v závislosti na minutovce (hodinovka přece neskáče jenom po celých hodinách :-)). Takhle ti může vyjít hodinovka až o 29° míň, než by měla.

//Edit :

Kód: Vybrat vše

uhel := ((a*30)+(b*0.5)) - (b*6);
The problem has been eaten.Obrázek
Vanilkovou do velkýho kornoutu bych prosil... hodně velkýho... hodně vanilkovou
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

TomV v tom udelal jasno :bigups: , ale nemeli byste zapominat na matematiku a chudaky procesory, ktere delaji diky lenosti programatoru zbytecne vypocty...
Takze staci

Kód: Vybrat vše

 uhel := a*30-5.5*b 
8-)
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
kolo
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 04. led 2004

Příspěvek od kolo »

CHCEM sa vam vsetkym podakovat,velmi ste mi pomohli :)
Bez Vas by som bol strateny..................

Pozrite sa na tento ak chcete,povedzte mi co robi...........

Co robi dany program? Svoje odpovede zdovodnite!

var m1,m2:integer;
begin
write('zadaj 2 cene cisla: ');
readln(m1,m2);
if m1<10 then write (m2*2);
if m1<>2*m2-m1 then write (m1 - sqrt(m2))
else write (m2 div 6);
end.
Amd AthlonXp 2500+
Titan D5TB/CU35/R1,Epox 8KRAI(Via KT600),PQI 2x256 MB 400 CL2.5,ATI Sapphire Radeon 9550 128mb/128bit 250/200@435/265 + GLACIAL NorthPole 1000,Maxtor 15GB "5400" 2mb cache,Mercury HT4500 5.1,TTC-003,WinXp+SP2
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

readln(m1,m2); - nacteni hodnot dvou promennych
if m1<10 then write (m2*2); - kdyz m1<10, napise dvojnasobek m2
if m1<>2*m2-m1 then write (m1 - sqrt(m2))
else write (m2 div 6); - kdyz m1 se nerovna 2*m2-m1, napise m1-odmocnina m2, jinak napise celociselnou cast m2/6

co je na tom tak sloziteho?
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
TomV
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 12. lis 2003
Bydliště: Jihočeská Metropole (tm) ... lol
Kontaktovat uživatele:

Příspěvek od TomV »

Dony píše:TomV v tom udelal jasno :bigups: , ale nemeli byste zapominat na matematiku a chudaky procesory, ktere delaji diky lenosti programatoru zbytecne vypocty...
Takze staci

Kód: Vybrat vše

 uhel := a*30-5.5*b 
8-)
Co dělá procesor navíc, když mu to prsknu do závorek ? :? Já být programátor - lama... :-) Z těch závorek je pěkně poznat, co se tam děje. Na ten tvůj zápis (ač matematicky elegantnější) bych už potřeboval ve zdrojáku komentář... :-)

2 kolo : Kterej dobytek vás učí používat proměnné a, b, U, m1, m2, atd... ? Vždyť se v tom zdrojáku pak ani prase nevyzná... :roll:
The problem has been eaten.Obrázek
Vanilkovou do velkýho kornoutu bych prosil... hodně velkýho... hodně vanilkovou
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

nejde ani o ty zavorky, ale o jedno nasobeni a scitani navic... komentar bys tam musel napsat i tak...
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
TomV
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 12. lis 2003
Bydliště: Jihočeská Metropole (tm) ... lol
Kontaktovat uživatele:

Příspěvek od TomV »

Dony píše:nejde ani o ty zavorky, ale o jedno nasobeni a scitani navic... komentar bys tam musel napsat i tak...
To je taky fakt... :)
The problem has been eaten.Obrázek
Vanilkovou do velkýho kornoutu bych prosil... hodně velkýho... hodně vanilkovou
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

TomV píše:2 kolo : Kterej dobytek vás učí používat proměnné a, b, U, m1, m2, atd... ? Vždyť se v tom zdrojáku pak ani prase nevyzná... :roll:
tohle se používá na školách záměrně v případě kdy máš za úkol napsat co dělá nějakej program aby Ti nenapověděli názvama proměnných :wink:
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
kolo
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 04. led 2004

Příspěvek od kolo »

Zistite,ci niektora cifra v 3-cifernom prirodzenom cisle je 5.
:sad:
Amd AthlonXp 2500+
Titan D5TB/CU35/R1,Epox 8KRAI(Via KT600),PQI 2x256 MB 400 CL2.5,ATI Sapphire Radeon 9550 128mb/128bit 250/200@435/265 + GLACIAL NorthPole 1000,Maxtor 15GB "5400" 2mb cache,Mercury HT4500 5.1,TTC-003,WinXp+SP2
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

kolo píše:Zistite,ci niektora cifra v 3-cifernom prirodzenom cisle je 5.
:sad:
ach jo, takže:


function JeTam5(Cislo: Integer): Boolean;
begin
if (IntToStr(Cislo)[1]='5') or (IntToStr(Cislo)R[2]='5') or (IntToStr(Cislo)R[3]='5')
then Result:= True
else Result:= False;
end;

psáno v Delphi notaci, ale jistě je to čitelné
+ doporučuju ještě test, zda číslo je skutečně 3ciferné, jinak odkazování se na 3. prvek retězce (např.) může havarovat
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
kolo
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 04. led 2004

Příspěvek od kolo »

A v Pascale by si to nemohol napisat............. :oops:
Amd AthlonXp 2500+
Titan D5TB/CU35/R1,Epox 8KRAI(Via KT600),PQI 2x256 MB 400 CL2.5,ATI Sapphire Radeon 9550 128mb/128bit 250/200@435/265 + GLACIAL NorthPole 1000,Maxtor 15GB "5400" 2mb cache,Mercury HT4500 5.1,TTC-003,WinXp+SP2
Odpovědět

Zpět na „Programování a web“