Iam_The_Ghost Posted October 7, 2009 Posted October 7, 2009 Hi, kéne egy kis segítség. Nemrég kezdtem el tanulni programozni C-ben, nem igazán megy a dolog, nem is nagyon fordítottam rá sok idõt, meg igazából elég távol is áll tõlem ez... Szóval tudnátok segíteni háziban? :D A feladat tulajdonképpen egyszerû, 1-100-ig fel kell sorolni a számokat, egyesével, külön sorban. Próbáltam For- és While-ciklusban is, de valahogy mindig volt hiba a programban, szóval valaki esetleg letudná írni, hogy egészen a #include <stdio.h> sortól az utolsó }-ig hogy nézne ki ennek a programnak kódja Turbo C-ben? :) Nagyon megköszönném!
JimRaynor Posted October 7, 2009 Posted October 7, 2009 Hi, kéne egy kis segítség. Nemrég kezdtem el tanulni programozni C-ben, nem igazán megy a dolog, nem is nagyon fordítottam rá sok idõt, meg igazából elég távol is áll tõlem ez... Szóval tudnátok segíteni háziban? :D A feladat tulajdonképpen egyszerû, 1-100-ig fel kell sorolni a számokat, egyesével, külön sorban. Próbáltam For- és While-ciklusban is, de valahogy mindig volt hiba a programban, szóval valaki esetleg letudná írni, hogy egészen a #include <stdio.h> sortól az utolsó }-ig hogy nézne ki ennek a programnak kódja Turbo C-ben? :) Nagyon megköszönném! Szerintem írd le a kódot, hogy eddig mivel próbálkoztál, és akkor megmondom, hogy mi benne a hiba.
_DooM_ Posted October 7, 2009 Posted October 7, 2009 Hi, kéne egy kis segítség. Nemrég kezdtem el tanulni programozni C-ben, nem igazán megy a dolog, nem is nagyon fordítottam rá sok idõt, meg igazából elég távol is áll tõlem ez... Szóval tudnátok segíteni háziban? :D A feladat tulajdonképpen egyszerû, 1-100-ig fel kell sorolni a számokat, egyesével, külön sorban. Próbáltam For- és While-ciklusban is, de valahogy mindig volt hiba a programban, szóval valaki esetleg letudná írni, hogy egészen a #include <stdio.h> sortól az utolsó }-ig hogy nézne ki ennek a programnak kódja Turbo C-ben? :) Nagyon megköszönném! for (i = 1; i <= 100; i++){ printf("%d\n", i); }
Iam_The_Ghost Posted October 7, 2009 Posted October 7, 2009 for (i = 1; i <= 100; i++){ printf("%d\n", i); } Thx, de az "i"-vel gondom van, nem tudja értelmezni pontosan mi is az, gondolom az elején még egy "int" vagy egy #define paranccsal meg kell adni, de hogyan? :unsure: Nekem nem akar mûködni. Szerintem írd le a kódot, hogy eddig mivel próbálkoztál, és akkor megmondom, hogy mi benne a hiba. Már nincs meg, múlt hétre kellett volna igazából (erre a hétre meg valami másik feladat, de nem tudom mit... :P ), akkor próbálkoztam vele, a Doom áltatl megadott parancsokkal, de valamit rosszul csinálok, mert sehogysem fogadja el. Utoljára ezt írtam be: #include <stido.h> void main(void) { for (i=1; i<=100; i++); printf("%d\n", i); } Sry a noobságom miatt, de ehhez tényleg nem értek és nem értem mi a hiba.
JimRaynor Posted October 7, 2009 Posted October 7, 2009 Thx, de az "i"-vel gondom van, nem tudja értelmezni pontosan mi is az, gondolom az elején még egy "int" vagy egy #define paranccsal meg kell adni, de hogyan? :unsure: Nekem nem akar mûködni. A ciklus elõtt deklarálni kell az i változót, nyilván csak ezután lehet neki értéket adni: int i; A #define erre nem való. #include <stdio.h> void main(void) { int i; for (i=1; i<=100; i++) printf("%d\n",i); } De mennie kell így is: #include <stdio.h> void main(void) { for (int i=1; i<=100; i++) printf("%d\n",i); } Vagy egy másik megoldás while-lal: #include <stdio.h> void main(void) { int i=0; while(i++<100) printf("%d\n",i); } A for ciklus paraméterei után a zárójel bezárása után NE írj pontosvesszõt! for (x;y;z); // ez rossz, mert itt a ciklusmagban az van, ami a ) és a ; között van, tehát SEMMI. for (x;y;z) UTASÍTÁS; // ekkor a ciklusmagban egy utasítás van, ami többször végrehajtódhat for (x;y;z) { UTASÍTÁS1; UTASÍTÁS2; ...; } // ekkor a { } között lévõ bármennyi utasítás végrehajtódik, valahányszor lefut a ciklus
CrW Posted October 7, 2009 Posted October 7, 2009 Megjegyzem, hogy sima C-ben a: for (int i = ....) nem mûködik, csak ha a cikluson kívül deklarálod az i-t.
andrea0411 Posted October 8, 2009 Posted October 8, 2009 sziasztok! sürgõs segítségre lenne szükségem! most tanulom a php-t. készítettem egy primitív adatbáziskezelõ oldalt: http://www.andrea0411.atw.hu/Anteus/index.html nem mûködik a módosításnál a szelektálás. a listbox és a mellette levõ tex kezelésével van bajom. ez a kódom: if (isset($_POST['filt'])) { foreach($_POST as $name=>$value) { if (($name!="filter") and ($name!="filt")) { $listsor=$name; } //if ($name="filter") { //$car=$value; // } } if (!empty($_POST['filt'])) { include('config.php'); if (!mysql_connect($db_host, $db_user, $db_pass)){ die("Nem elerheto az adatbazis"); } else{ mysql_select_db($db_name); $person_lista = "Select * From person WHERE '.$listsor.' LIKE '%".$_POST['filt']."%' "; $sikerult = mysql_query($person_lista); if($sikerult){ print ('<p>A névre kattintva elvégezheti a nódosítást!</p>'); while($sorok = mysql_fetch_array($sikerult)){ print('<p><imput type="hidden" name="id" value="'.$sorok[0].'"/><a href="update.php">'.$sorok[1].'</a>'.$sorok[2].';'.$sorok[3].';'.$sorok[4].';'.$sorok[5].';'.$sorok[6].';'.$sorok[7].';'.$sorok[8].';'.$sorok[9].'</p>'); } print('<p><a href="updateform.php"><strong>Vissza</strong></a></p>'); } else{ print(mysql_error()); } } } else { include ('updateform.php'); } } mi a baj vele? KÖSZÖNÖM!!!
_DooM_ Posted October 10, 2009 Posted October 10, 2009 Thx, de az "i"-vel gondom van, nem tudja értelmezni pontosan mi is az, gondolom az elején még egy "int" vagy egy #define paranccsal meg kell adni, de hogyan? :unsure: Nekem nem akar mûködni. Már nincs meg, múlt hétre kellett volna igazából (erre a hétre meg valami másik feladat, de nem tudom mit... :P ), akkor próbálkoztam vele, a Doom áltatl megadott parancsokkal, de valamit rosszul csinálok, mert sehogysem fogadja el. Utoljára ezt írtam be: #include <stido.h> void main(void) { for (i=1; i<=100; i++); printf("%d\n", i); } Sry a noobságom miatt, de ehhez tényleg nem értek és nem értem mi a hiba. Elõtte deklarálni kell a változót, ahogy a kolega is írta.
_DooM_ Posted October 10, 2009 Posted October 10, 2009 A ciklus elõtt deklarálni kell az i változót, nyilván csak ezután lehet neki értéket adni: int i; ... A for ciklus paraméterei után a zárójel bezárása után NE írj pontosvesszõt! for (x;y;z); // ez rossz, mert itt a ciklusmagban az van, ami a ) és a; között van, tehát SEMMI. for (x;y;z) UTASÍTÁS; // ekkor a ciklusmagban egy utasítás van, ami többször végrehajtódhat for (x;y;z) { UTASÍTÁS1; UTASÍTÁS2; ...; } // ekkor a { } között lévõ bármennyi utasítás végrehajtódik, valahányszor lefut a ciklus A hasonló hibák elkerülése végett szerintem érdemes mindig kiírni a { } jeleket. Így átláthatóbb is a kód (gyakorlatlan szemeknek fõleg), hogy mi mihez tartozik. A fentieket annyival egészíteném ki, hogy az x és a z az többnyire értékedás vagy függvényhívás, az y meg valamilyen relációs kifejezés. Általában az x a ciklus "kezdõértéke", a z a "lépésköz", az y pedig a "kilépési feltétel", azaz hogy meddig menjen a ciklus. A három kifejezés (x, y, és z) bármelyike elhagyható, de a ;-knek meg kell maradniuk! Ha az x vagy a z marad ki, akkor elmarad a ; a kifejtésbõl. Ha pedig az y marad ki, akkor állandóan igaznak értékelõdik ki a feltétel, azaz végtelen ciklus lesz.
Stauffenberg Posted October 11, 2009 Posted October 11, 2009 Nekem is kb. ez a gondom, hogy nagyon nem vagyok otthon C-ben, nekem már önmagában az okoz gondot, hogy mit írjak bele a kódba. Tudom mire jó egy FOR vagy DO WHILE ciklus, mivel a PHP egész jól megy, de a C-hez kuka vagyok... Nálunk úgy kezdte a tanár a félév elején, hogy megmondta milyen könyveket vegyenek a kezdõk, és azt pusziljuk be 3 nap alatt és akkor már érteni is fogjuk, hogy mirõl beszél... persze nálunk mindenki kezdõ, fõleg, hogy a szakunknak marhára nincs köze a programozáshoz... maximum a webszerkesztésnél egy kicsit beleszagoltunk a dologba, de hát az teljesen más mint egy C. Mindegy, van már segítségem, remélem menni fog majd... egy ZH-t már buktam, többet nem akarok. Ja és köszi mindenkinek aki eddig segített! :)
killermonkey Posted October 11, 2009 Posted October 11, 2009 Megint elõjöttem, megint most, de 1 új problémával! Szóval delhpiben ha én 1 radiogroup elsõ itemén akarom megvizsgálni hogy be van e jelölve azt hogy kell? Ezzel próbálkoztam if radiogroup1.itemindex(0).checked=true then ...... De ez nem működött. Illetve 1 halmaz elemeit hogy tudom kiiratni? Úgy próbáltam ahogy a tömbnél kellett tehát panel1.caption:=inttostr(h[1]) természetesen ez se működött
Iam_The_Ghost Posted October 14, 2009 Posted October 14, 2009 Sry, elfelejtettem megköszönni a segítségeteket, de most pótlom: köszi! :D De most megint help kellene és ez valószínûleg így lesz még egy ideig. :rolleyes: Szóval most az lenne a feladat, hogy 0-255-ig kikéne írni a számokat és melléjük az ahhoz tartozó kódot, ilyen formában: 0 : x 1 : y stb. Magyarán egy ASCII táblázatot kellene készíteni, de Nekem nincs nagyon ötletem hogyan kéne ezt. :unsure: (Csak annyit tudok, ha az adott számot ' ' jelek közé rakjuk, akkor az ahhoz tartozó kód jelenik meg.) Órán a tömböket vettük, de õszintén szólva nem sokat fogtam fel belõle, nem is igazán tudom, hogy ez kell-e a feladat megoldásához, mindenesetre jól jönne a segítség.
JimRaynor Posted October 14, 2009 Posted October 14, 2009 Sry, elfelejtettem megköszönni a segítségeteket, de most pótlom: köszi! :D De most megint help kellene és ez valószínûleg így lesz még egy ideig. :rolleyes: Szóval most az lenne a feladat, hogy 0-255-ig kikéne írni a számokat és melléjük az ahhoz tartozó kódot, ilyen formában: 0 : x 1 : y stb. Magyarán egy ASCII táblázatot kellene készíteni, de Nekem nincs nagyon ötletem hogyan kéne ezt. :unsure: (Csak annyit tudok, ha az adott számot ' ' jelek közé rakjuk, akkor az ahhoz tartozó kód jelenik meg.) Órán a tömböket vettük, de õszintén szólva nem sokat fogtam fel belõle, nem is igazán tudom, hogy ez kell-e a feladat megoldásához, mindenesetre jól jönne a segítség. #include <stdio.h> int main() { int i; for (i=0;i<=255;i++) printf("%d : %c\n",i, i); return 0; }
_DooM_ Posted October 26, 2009 Posted October 26, 2009 Van valakinek ötlete, hogy lehetne "modellezni" egy hinta mozgását OpenGL-ben (C nyelven)? A megjelenítéssel és a mozgással nincs gond, amit el szeretnék érni, de eddig nem sikerült: 1) El lehessen "engedni" a hintát. A nyílbillentyûk segítségével lehet manuálisan mozgatni (egy adott tengely körül forgatni), ez eddig oké. A lényeg az lenne, hogy egy adott pontból elengedve szép lassan megálljon. Teszem azt ha a függõlegeshez képest 20 fokban van elforgatva, akkor (ahogy egy igazi hinta tenné, nagyjából) lengjen át a másik oldalra, de csak 15 fokig, majd megint vissza 10, és így tovább. Van egy változó, ami az elforgatás szögét tárolja, 5-ösével lehet léptetni, -50 és 50 fok között. A fenti példában ez azt jelenti, hogy a következõ értékeket kell sorban felvennie: 20 -> 15 -> 10 -> 5 -> 0 -> -5 -> -10 -> -15 | -> -10 -> -5 -> 0 -> 5 -> 10 | -> 5 -> 0 -> -5 | -> 0 (A vonalak jelzik, ahog a mozgás iránya megfordul.) ITT VAN egy videó is, hogy érteni/láni is lehessen, hogy mit akarok. (Azért akadozik így, mert ugye manuálisan nyomkodtam a gombokat, többek között.) 2) (Ha az elsõ meglenne, ez nem lenne ügy, és fordítva) Magától lengjen ki a végpontokig. 3) Az maga lenne a tökély, ha a kilengés "végpontjaihoz" közeledve lassulna, távolodva pedig gyorsulna a mozgás, de ez nem elvárás, csak amolyan hab a tortán. Ui.: nem kötelezõ program (illetve igen, de annak a továbbgondolása), csak a magam szórakoztatására vágtam/nék bele.
_DooM_ Posted October 26, 2009 Posted October 26, 2009 A fenti példában ez azt jelenti, hogy a következõ értékeket kell sorban felvennie: 20 -> 15 -> 10 -> 5 -> 0 -> -5 -> -10 -> -15 | -> -10 -> -5 -> 0 -> 5 -> 10 | -> 5 -> 0 -> -5 | -> 0 (A vonalak jelzik, ahog a mozgás iránya megfordul.) ITT VAN egy videó is, hogy érteni/láni is lehessen, hogy mit akarok. (Azért akadozik így, mert ugye manuálisan nyomkodtam a gombokat, többek között.) Igazság szerint a fenti számsorozatnak az elõállítása lenne a lényeg (-50, illetve 50 lehet a kezdõérték), amit kicsit bonyolít az OpenGL.
Calypsol Posted October 29, 2009 Posted October 29, 2009 Van valakinek ötlete, hogy lehetne "modellezni" egy hinta mozgását OpenGL-ben (C nyelven)? A megjelenítéssel és a mozgással nincs gond, amit el szeretnék érni, de eddig nem sikerült: 1) El lehessen "engedni" a hintát. A nyílbillentyûk segítségével lehet manuálisan mozgatni (egy adott tengely körül forgatni), ez eddig oké. A lényeg az lenne, hogy egy adott pontból elengedve szép lassan megálljon. Teszem azt ha a függõlegeshez képest 20 fokban van elforgatva, akkor (ahogy egy igazi hinta tenné, nagyjából) lengjen át a másik oldalra, de csak 15 fokig, majd megint vissza 10, és így tovább. Van egy változó, ami az elforgatás szögét tárolja, 5-ösével lehet léptetni, -50 és 50 fok között. A fenti példában ez azt jelenti, hogy a következõ értékeket kell sorban felvennie: 20 -> 15 -> 10 -> 5 -> 0 -> -5 -> -10 -> -15 | -> -10 -> -5 -> 0 -> 5 -> 10 | -> 5 -> 0 -> -5 | -> 0 (A vonalak jelzik, ahog a mozgás iránya megfordul.) ITT VAN egy videó is, hogy érteni/láni is lehessen, hogy mit akarok. (Azért akadozik így, mert ugye manuálisan nyomkodtam a gombokat, többek között.) 2) (Ha az elsõ meglenne, ez nem lenne ügy, és fordítva) Magától lengjen ki a végpontokig. 3) Az maga lenne a tökély, ha a kilengés "végpontjaihoz" közeledve lassulna, távolodva pedig gyorsulna a mozgás, de ez nem elvárás, csak amolyan hab a tortán. Ui.: nem kötelezõ program (illetve igen, de annak a továbbgondolása), csak a magam szórakoztatására vágtam/nék bele. A legegyszerûbb az, ha a mozgatáson kívül valamelyik billentyûre rákötöd az "elengedést", ami átbillent egy változót (pl. leng), minek hatására a timerben lefut az ingamozgást megvalósító kódrész. Javaslom, hogy inkább vedd rövidebbre a timer intervallumot és kisebbre az egyszeri elmozdulást, mert szebb eredményt fogsz kapni. Kelleni fog egy irány változó, ami +1 vagy -1 attól függõen, merre mozdul az inga. Kelleni fog még egy változó, - mondjuk max amiben az aktuális végállapotot (az inga maximális kilengésének szögét) tárolod. Minden timer hívás esetén ellenõrzöd, hogy az inga aktuális szögének abszolútértéke nagyobb vagy egyenlõ, mint a max változó abszolútértéke, ha igen, megszorzod az irány változót -1-gyel, majd az irány * elmozdulást hozzáadni az inga aktuális dõlésszögéhez. Ha a max változó nulla, akkor a leng változót állítsd vissza. Ezután kézzel beállíthatod a dőlésszöget, ahogy eddig, csak a max változóról se feledkezz el, azt is változtatnod kell a dőlésszöggel együtt, kézi mozgatás esetén! Ha realisztikusan szeretnéd csinálni, akkor a [-max;max] intervallumot képezd le a [0;360]-ra, az aktuális dõlésszög ilyen képének a koszinuszának -1-szeresével szorozd be az irány * elmozdulást és úgy add hozzá az aktuális dõlésszöghöz.
Calypsol Posted October 29, 2009 Posted October 29, 2009 Az kimaradt, hogy a koszinusz -1-szeresét még transzponálni kéne a [0;1] intervallumba, különben elég érdekesen fog mozogni az inga...:D
JimRaynor Posted October 29, 2009 Posted October 29, 2009 Igazság szerint a fenti számsorozatnak az elõállítása lenne a lényeg (-50, illetve 50 lehet a kezdõérték), amit kicsit bonyolít az OpenGL. A hinta az egy másodrendû differenciálegyenlet! Legalábbis az analízis tanárom szerint. De ha elég ennek a számsorozatnak az elõállítása, akkor arra írtam egy kis programot. Az, hogy a lépésszám hogy jön ki, egy rekurzív függvény generátorfüggvényének levezetésével, vagy teljes indukcióval is belátható lenne, de azt inkább hagyjuk :D Ha mindenképpen szeretnél negatív kitéréssel is indítani, akkor vagy azt csinálod, hogy utólag minden tömbelemet ellentettjére változtatsz. Vagy pedig átírod úgy, hogy negatív K esetén az irany változó kezdeti értéke +1. Utólag olvastam, hogy negatívval is indítasz, azért maradt ez ki, de logikailag mindegy. Mûködés közben #include <stdio.h> #include <stdlib.h> int abs(int szam) { if (szam<0) return -szam; else return szam; }; int main(int argc, char* argv[]) { if (argc!=3) {printf("parameter hiba\n"); exit(1);} //program argumentumai a kezdeti kitérés és lépésköz, kötelezõ megadni int K=atoi(argv[1]); //kezdeti kitérés fokokban !nemnegatív legyen! if (K<0) {printf("logikailag rossz parameter\n"); exit(1);} const int LK=atoi(argv[2]); //lépésköz fokokban !véletlenül se legyen nulla és K%LK legyen nulla! if (LK==0 || K%LK!=0) {printf("logikailag rossz parameter\n"); exit(1);} int LSZ=K*K/LK/LK+1; //lépésszám int* lepesek; //lépéseket tartalmazó tömb lepesek=(int*)calloc(LSZ, sizeof(int) ); lepesek[0]=K; //nulladik lépés a kiindulópont int idx=1; //lepesek tömb indexe int irany=-1; //lengés aktuális iránya int lengesszamlalo=0; int lengesmax=(K-LK)/LK*2; while(idx<LSZ) { if (lengesszamlalo>lengesmax) { irany*=-1; lengesszamlalo=0; lengesmax=(abs(K)-LK)/LK*2; } K=K+irany*LK; lepesek[idx]=K; idx++; lengesszamlalo++; } for (idx=0; idx<LSZ; idx++) printf("%d\n", lepesek[idx]); return 0; } Ha kicsit életszerûbb mozgást szeretnél, akkor én úgy csinálnám, hogy a hinta pozícióját az idõ függvényében megadnám, és fix idõközönként rajzolnám ki a függvénynek megfelelõ értéket. Ehhez valami ilyesmi függvényt találtam ki: pillanatnyi kitérés fokokban=A*cos(x)-B*x/PI*cos(x) A : kezdeti kitérés, mondjuk pl 50 B : ennyivel csökken a kitérés minden kilengéskor a kapott értékeket persze kerekítened kell a legközelebbi kirajzolható diszkrét értékre, illetve valahogy figyelned kell, hogy mikor fogy el a lendület, mert utána megvadul a függvény: Így néz ki
_DooM_ Posted October 31, 2009 Posted October 31, 2009 Igazság szerint nem is a számsorozat elõállítása a probléma, hanem az, hogy ezeket az értékeket hogyan adjam át a az elforgatás mértékét tároló változónak? A mozgást megvalósító kódrészt nehezen lehetne a Timer függvényen belül megvalósítani, hisz az a program futása közben folyamatosan meghívódik (lényegében rekurzívan meghívja saját magát bizonyos idõközönként), azaz a kódrész állandóan lefut, miközben a paraméterek (hogy meddig lengjen ki, milyen irányban mozogjon) folyamatosan változnak. A kezdeti értékek eltárolásával (hogy milyen magasról - azaz hány fokról -, illetve milyen irányba mozduljon, ha egyáltalán szükséges) nincs probléma, az elsõ átbillenés sem gond, utána jön a probléma. Egyébként kösz mindkettõtöknek a segítséget. :) Ha lesz egy kis időm, akkor nekiülök majd.
Calypsol Posted October 31, 2009 Posted October 31, 2009 Igazság szerint nem is a számsorozat elõállítása a probléma, hanem az, hogy ezeket az értékeket hogyan adjam át a az elforgatás mértékét tároló változónak? Globális változóról hallottál már? :) A mozgást megvalósító kódrészt nehezen lehetne a Timer függvényen belül megvalósítani, hisz az a program futása közben folyamatosan meghívódik (lényegében rekurzívan meghívja saját magát bizonyos idõközönként), azaz a kódrész állandóan lefut, miközben a paraméterek (hogy meddig lengjen ki, milyen irányban mozogjon) folyamatosan változnak. Csókolom, a timernek pont ez a dolga. Callbacket meg ne keverjük már a rekurzióval, elég csúnya hiba.. Nem értem, mi a probléma. Változó paraméterekkel fut le a kód? Pont ez a lényeg! Mindig az aktuális adatokkal dolgozik és megváltoztatja azokat a következõ állapotnak megfelelõen, majd újrarajzol. A kezdeti értékek eltárolásával (hogy milyen magasról - azaz hány fokról -, illetve milyen irányba mozduljon, ha egyáltalán szükséges) nincs probléma, az elsõ átbillenés sem gond, utána jön a probléma. Egyébként kösz mindkettõtöknek a segítséget. :) Ha lesz egy kis idõm, akkor nekiülök majd. Akkor most értelmezgesd kicsit az elõzõ hsz-em, mindent leírtam benne, mit és hogy csinálj, éppen csak a kódot nem toltam az üleped alá... Szívesen. Ezt a rohadt quote-bugot meg nem lehetne kijavítani? Kb. 10 perces meló lenne...
_DooM_ Posted October 31, 2009 Posted October 31, 2009 1) Globális változóról hallottál már? :) 2) Csókolom, a timernek pont ez a dolga. Callbacket meg ne keverjük már a rekurzióval, elég csúnya hiba.. 3) Nem értem, mi a probléma. Változó paraméterekkel fut le a kód? Pont ez a lényeg! Mindig az aktuális adatokkal dolgozik és megváltoztatja azokat a következõ állapotnak megfelelõen, majd újrarajzol. Akkor most értelmezgesd kicsit az elõzõ hsz-em, mindent leírtam benne, mit és hogy csinálj, éppen csak a kódot nem toltam az üleped alá... Szívesen. Ezt a rohadt quote-bugot meg nem lehetne kijavítani? Kb. 10 perces meló lenne... 1) Nem. Mi az? :unsure: :lol: Nyílván globális változóban tárolom a forgatási szöget (legyen az egyszerûség kedvéért rot), máshogy nem is lehetne megoldani. 2) Nem keverem, csak lemaradt az idézõjel. Elnézést. 3) Igen, csak éppenséggel a kilengés (illetve a túllengés) maximális mértékét (max) és a forgatás irányát (irany, ami -1 és +1 lehet; azaz hogy növelni vagy csökkenteni kell-e épp a rot értékét) nem kell minden egyes lépésben megváltoztatni, csak amikor elértük a max-ot, ami mindig az elõzõ max abszolút értéke mínusz a lépésköz. És a végén amikor megállt a hinta, nem ártana a leng változót is beállítani, hogy ne akarjon a hinta többet lengeni. Ehez csak egy megfelelõen megírt else-if szerkezet kéne, de asszem' nem látom a fától az erdõt, még.
_DooM_ Posted October 31, 2009 Posted October 31, 2009 ...de asszem' nem látom a fától az erdõt, még. Jah, majd kibökte a szemem a megoldás. Az ötlet az eddig is megvolt (nagyjából az, amit Calypsol írt), a hiba a megvalósításba csúszott. Itt a kód, ami végülis a sikerhez vezetett: if (lok > 0 && (irany != 0)) { if (irany > 0) rot += 2; if (irany < 0) rot -= 2; if (rot == max) { irany *= -1; if (max > 0) max = -max + 2; else if (max < 0) max = -max - 2; else max = 0; } if ((max == 0) && (rot1 == 0)) lok *= -1; } Az irany és a max is változik a rot értékéhez viszonyítva, miközben a billentyûkkel mozgatom a hintát, a megfelelo gomb megnyomására a lok értéket vált (1 - ha mozognia kell a hintának és -1, ha nem), és ha lehet mozgatni, akkor elkezd mozogni. Kicsit idétlenül mozog a hinta (ugye a folyamatos sebesség miatt, fõleg), de úgy mozog ahogy kell, és frankón meg is áll.
Calypsol Posted October 31, 2009 Posted October 31, 2009 Jah, majd kibökte a szemem a megoldás. Az ötlet az eddig is megvolt (nagyjából az, amit Calypsol írt), a hiba a megvalósításba csúszott. Itt a kód, ami végülis a sikerhez vezetett: if (lok > 0 && (irany != 0)) { if (irany > 0) rot += 2; if (irany < 0) rot -= 2; if (rot == max) { irany *= -1; if (max > 0) max = -max + 2; else if (max < 0) max = -max - 2; else max = 0; } if ((max == 0) && (rot1 == 0)) lok *= -1; } Az irany és a max is változik a rot értékéhez viszonyítva, miközben a billentyûkkel mozgatom a hintát, a megfelelo gomb megnyomására a lok értéket vált (1 - ha mozognia kell a hintának és -1, ha nem), és ha lehet mozgatni, akkor elkezd mozogni. Kicsit idétlenül mozog a hinta (ugye a folyamatos sebesség miatt, fõleg), de úgy mozog ahogy kell, és frankón meg is áll. Nagyon jó. :) Akkor még csak kézzel megy, timer nélkül? A sebességfüggvényt próbáltad?
_DooM_ Posted November 1, 2009 Posted November 1, 2009 Nagyon jó. :) Akkor még csak kézzel megy, timer nélkül? A sebességfüggvényt próbáltad? Hát nem egy durva kód, de a lényeg, hogy hozza, amit elvártam. Kézzel beállítom, hogy honnan legyen a hinta "meglökve", onnantól a timer intéz mindent. Illetve bárhol meg is lehet állítani. Ez volt az elsõdleges cél. Ha sebességfüggvényen a koszinuszos "bohóckodást" érted, akkor nem, azt még nem próbáltam.
BajuszGG Posted November 1, 2009 Posted November 1, 2009 Írnom kellene egy szótár programot. Bár holnapra még csak a specifikáció kell, azért beleírnám, hogy miben tárolja a kifejezéseket. Szóval mit javasoltok...? Tömbök, fájl, más? :unsure: Nyilván olyan program kell, amihez a felhasználó tud adni új bejegyzést.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now