Keresés

Részletes keresés

thuram Creative Commons License 2005.02.14 0 0 265
A levelet megkaptam:). Csak van a thuram@freemail.hu s cimem amire már nem tudok belépni kb 2-3 éve:), de onnan forwardolja a levelemet ahova már beis tudok lépni:)
Előzmény: KoporShow (264)
KoporShow Creative Commons License 2005.02.14 0 0 264
Egyebkent betelt a postafiokod. Most kaptam ertesitest, hogy a level nem volt kezbesithato.
Előzmény: KoporShow (262)
thuram Creative Commons License 2005.02.14 0 0 263
Köszönöm a fáradozást.

Nem akarom csufítani a gdb s topikját NevemTeve-nek (eddig olyan szép:) úgyhogy inkább itt tenném fel a primitiv kérdésemet. A lent közölt kódon probáltam használni és valahogy a set -tel nem tudtam beállítani a getchar által kreált s értéket : probáltam set s='x' ill set s=x et de nem fogadta el, meg persze probáltam ; mögéjük rakni:) de nem lett jó sehogy az uhu linux manjában meg nincs róla semmi:(
Előzmény: KoporShow (262)
KoporShow Creative Commons License 2005.02.14 0 0 262
Mail ment.

Elkuldtem mailben, hogy en kb. hogy csinalnam.
Előzmény: thuram (260)
NevemTeve Creative Commons License 2005.02.14 0 0 261
Off (Hallottam olyan cégtől, ahol nagyon féltek a hard-kódolástól, inkább felvettek egy
#define LT_ONE 1
definíciót, nyilván arra az esetre, ha a következő verzióban a "LT_ONE" azt kellene jelentse hogy "2", akkor könnyű legyen a módosítás)
Előzmény: KoporShow (255)
thuram Creative Commons License 2005.02.14 0 0 260
Végül is favágó módszerrel kiküszöbölhető pl beteszem a while ba hogy i<10:). Persze így már igazán ronda lesz a kód..
Előzmény: KoporShow (258)
thuram Creative Commons License 2005.02.14 0 0 259
Tanácsaidat megprobálom megfogadni, már amennyit megértettem belőle..

Természetesen olvastam, hogy Te ezeket a függvényeket javasolod, de sajnos nem tudtam használni őket:(

A kódot feltettem ide http://www.cs.elte.hu/~iscsi/C/ .

Esetleg ha nagyon sok időd van:), megtudnád mutatni hogy használjam ezeket, pl ezen a kódon?
Előzmény: KoporShow (256)
KoporShow Creative Commons License 2005.02.14 0 0 258
Az 'a' betu alatti codja: (int)('a'-1).

Egyebkent a programod jol elszallhat, ha a felhasznalo egy tiz betunel hosszabb sztringet ad meg.
Előzmény: thuram (257)
thuram Creative Commons License 2005.02.14 0 0 257
Egyébként a program müködik és azt csinálja amit szeretnék a t tömb felvan töltve csak a kód nem ment át sztem:(..

Az Ascii kódokat nem tudom fejből, és azért használom azt mert azt kellene eldöntenem ott hogy 'a1d4' alakú karaktersorozat jöne be.. És mivel fogalmam sincs mi van az a betű elött ezért Ascii kódot adtam meg..

Szóval ez a programrész egyenlőre jól eltudja dönteni hogy l,load stb ill 'xyxy' beírás történte ahol x a-h ig ill y 1-8 ig megy..
Előzmény: KoporShow (255)
KoporShow Creative Commons License 2005.02.14 0 0 256
Meg egy ket tanacs:

1) az elso while cikuls lenyegesen tobb karaktert tud olvashat be mint a t tombod hossza, ez tulcsordulashoz vezthet.

2) Sose programozzuk azt ujra, amire letezik standard fuggveny. Peldaul az fgets hasznalata ebben az esetben adja magat. Alapvetoen tanacsos megadni a belolvasando karakterek max. szamat. A karakterosztalyok klasszifikalasara is vannak fugvenyek. Feldolgozashoz jo otlet az sscanf illetve a regularis kifejezesek hasznalata.

Előzmény: thuram (254)
KoporShow Creative Commons License 2005.02.14 0 0 255
Szerintem eloszor magadnak kene megfogalmaznod, hogy pontosan mit is akarsz, mert szerintem itt kezdodnek a problemaid. Peldaul a t tombot fel sem toltotted, stb. Mindez abbol fakad, hogy nem gondoltad at, hogy pontosan mit es miert csinalsz. Ha mashogy nem megy, ird fel a strategiadat emberi szavakkal egy papirra, es csak ha teljesen biztos vagy a dolgokban, akkor kezdj neki a kodolasnak.

Egy mellekes technikai tanacs: semmi ertelme nincs a programkodban ASCII-kodokkal mint szamokkal dolgozni. Ez csak foloslegesen gusztustalanna teszi a prgramodat, meg akkor is ha fejbol ismered az osszes kodot.

Egy alapveto filozofia, amit sokan kovetnek es jonak tartanak: Az egyetlen numerikus konstans, ami egy programkod belsejeben elfogadhato: a 0. Minden masra celra hasznaljunk konstansot valtozot, vagy define-t, egy nevven amely tukrozi a konstans jelenteset.
Előzmény: thuram (254)
thuram Creative Commons License 2005.02.14 0 0 254
Végülis ez a legjobb amit kitudtam hozni: megprobálom becopyzni..


#include <stdio.h>

main ( )
{
int s=0;
int t[10];
int i=0,j,k;

while (( s=getchar()) !='n'){
t=s;
i++;

}

if ((96<t[0]) && (t[0]< 105)){
j=0;
}
else j=t[0];
switch (j) {

case 'l': if (((i==4) && (t[1]='o') && (t[2]='a') && (t[3]='d')) || (i==1)) {
}
break;

case 's': if (((i==4) && (t[1]='a') && (t[2]='v') && (t[3]='e')) || (i==1)) {
}
break;

case 0 : if ((48<t[1]) && (t[1]< 57) && (96<t[2]) && (t[2]<105) && (48<t[3]) && (t[3]< 57)) {
k=((t[1]-49)*8+(t[0]-97))*64+(t[3]-49)*8+(t[2]-97) ;
break;
}


default: printf("Nem értem");

}

}


Előzmény: DonQuijote (253)
DonQuijote Creative Commons License 2005.02.13 0 0 253
Én nem értettem... Hát akkor mondjuk:

gets( input );
if ( strlen( input ) > 1 ) {
/* ez egy lepes */
ertelmezzuk_sscanf_el();
} else {
switch ( input[ 0 ]) {
case 'd': display();
case 'l': load();
stb.
Előzmény: thuram (251)
Egoist Creative Commons License 2005.02.12 0 0 252

fgets és sscanf a legjobb megoldás asszem

Ami meg a switch-et illeti: igen, létrehozhatsz egy saját változót, amit az input alapján egy függvényében állítasz és a switch ez alapján ágazik el. De nem intet javasolok, hanem enum-ot. Olvashatóbb lesz tőle a kód.

Előzmény: thuram (247)
thuram Creative Commons License 2005.02.12 0 0 251
Melyik részt probáljam részletezni? Vagy probáljam az egészet jobban megfogalmazni?
Előzmény: DonQuijote (250)
DonQuijote Creative Commons License 2005.02.12 0 0 250
Kettőnk közül valaki nem érti az előző (247) hozzászólásodat.
Előzmény: thuram (249)
thuram Creative Commons License 2005.02.12 0 0 249
Igen de nekem nem csak egy karakterre van szükségem hanem pl d2-d4 et is megkellene érteni, vagy az mindegy?
Előzmény: DonQuijote (248)
DonQuijote Creative Commons License 2005.02.12 0 0 248
Karaktert is lehet switch-el vizsgálni, felesleges integer hozzá.
switch ( input ) {
case 'd': display();
case 'l': load();
stb.
Előzmény: thuram (247)
thuram Creative Commons License 2005.02.12 0 0 247
Szeretném tovább fejleszteni adatok beolvasását eddig csak egész számokat beirva tud egy két dolgot csinálni (ráadásul ha nem jót kap végtelen ciklus:), azonban szeretném ha egyenlőre a következőket tudná:

d vagy display -> display () /megjenités
n vagy new -> start () /új játék bár ez még kicsit erős:)
l vagy load -> egy elmentett lépéssorozat betöltése fájlból
s vagy save ...
q vagy quit -> kilépés
illetve a lépések bevitele d2-d4 stb

Na most ennek a beolvasását és megértését szeretném megirni.
Nem tudom mi a szokásos eljárás, 2 dolog között gondolkozok getchar ill scanf.
Amin még gondolkozok hogy például egy új egész bevezetésével elöször a beolvasás során az érzékelt karakterekhez hozzárdelnék egy egészt pl d vagy display => i=1; stb
majd erre már lehetne használni a switchet. Esetleg van valami jobb javaslat?(
thuram Creative Commons License 2005.02.11 0 0 246
Lenne néhány strukturális kérdésem, hogy mit hogy,hova szokás elhelyezni, illetve lehet hogy valamit feleslegesen használok stb . Felteném a honlapomra a 3 db c filet ha valakinek lenne türelme válaszolni a kérdéseimre..

Egyébként most kisebb gondom támadt a programirásban megint két irány közül kellene választanom, még gondolkodok rajta ha nem jutok dülöre akkor felteszem a kérdést.(az egyik megvalósitás gyorsabbnak tünik nekem, de viszont talán nehezebb ellenörizni a helyességét,szivem szerint ezt választanám..). Egyébként már sikerült használnom a gdb t és kiis javitottam vele egy hibát:))
DonQuijote Creative Commons License 2005.02.10 0 0 245
Erre találták ki a typedef-et.
Előzmény: NevemTeve (238)
KoporShow Creative Commons License 2005.02.10 0 0 244
Szerintem a lepest legeneralni gyorsabb (vagy ugyanolyan gyors), mert ez egy szimpla osszedas, mig a masik esetben a memoriabol kell olvasni, ami altalaban lassabb mint egy regiszteroperacio, meg akkor is, ha a cache-bol tortenik.
Előzmény: thuram (243)
thuram Creative Commons License 2005.02.10 0 0 243
Hát ugye egy mezőhöz átlagosan kb 5-6-7 huszár lépés tartozik és 64 el beszorozva ez 400 körül van. Na most akkor azt kérdem hogy
1: letárolom minden mezőhöz 8 biten melyek a legálisak hozzá, azaz ebben benne van pl balra2, fel 1 legális stb na most akkor minden lépésben megtalálom a huszárt megkeresem a hozzá tartozó 8 bitet és legenerálom a hozzá tartozó lépéseket (most már intben akarom ) azaz "d2-e4" ,"d2-f3" stb
Vagy!
2:Egyből olyan formában tárolom le amit az 1 pontban leirtam (a nagy bazi 400 elemű tömbről) és akkor már számolást nem igényel csak kikell szedni a tömbből

Melyik a gyorsabb? Azt figyelembe véve hogy ugye általában minden lépésben 4 huszárt találunk főleg az elején a táblán tehát az elején 4* hajtódnak végre a pontok ..
Előzmény: KoporShow (242)
KoporShow Creative Commons License 2005.02.10 0 0 242
Mire kell 400?

En szemely szerint csak azt tarolnam el, hogy a melyik lepes legalis, magat a lepest nem, mert azt gyorsabb legeneralni.
Előzmény: thuram (240)
thuram Creative Commons License 2005.02.10 0 0 241
valóban 8 bit kell minimum:)
Előzmény: thuram (240)
thuram Creative Commons License 2005.02.10 0 0 240
Szerintem elég lenne, mivel 8 helyre léphetsz..de most ezen ne vitatkozunk nem fontos.

Akkor csináljam az egyes módszert? azaz bazi nagy kb 400 elemű int tömb..
Előzmény: KoporShow (239)
KoporShow Creative Commons License 2005.02.10 0 0 239
Nem eleg 3 bit.

Nyugodtan hasznalhatsz int-eket, mivel ugyis minden bele fog ferni a cache-be ezert a sebessegen nem sokat modosithat.
Előzmény: thuram (235)
NevemTeve Creative Commons License 2005.02.10 0 0 238
Utólag ne javítgass semmit... előre kell kitalálni...
mondjuk van egy 0-1000 közötti értéked -> használj int-et, biztos belefér
vagy van egy 0-100000 közötti értéked -> használj long-ot, mert lehet olyan platformod, ahol nem fér el az int-ben
vagy 64 bit-re van szükséged -> használj long long-ot, de tudd, hogy van olyan platform, ahol nincs 'long long'... vagy használj helyette 'unsigned char [8]' tömböt, az mindenhol megy, de egy kicsit több programozói munkát igényel a kezelése
Előzmény: thuram (236)
thuram Creative Commons License 2005.02.10 0 0 237
Bár azon gondolkodom hogy a lépéseket pl a bástya futóhoz úgy generáltam le hogy int et ad vissza : 0"honnan" "hova" ez ugye 12 bit a végén az elején lévő 4 bitet majd másra kellene felhasználonom, amolyan különleges lépésekre mint pl lehet e még sáncolni a királlyal, mire változon át a gyalog etc . Szóval emiatt a huszárnál is inteket kellene generálnom.
Előzmény: KoporShow (232)
thuram Creative Commons License 2005.02.10 0 0 236
Tényleg akkor most még használjak nyugodtan inteket majd a végén kijvaitgatom, vagy hogy érdemes ezt?
Előzmény: NevemTeve (234)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!