Keresés

Részletes keresés

KoporShow Creative Commons License 2005.02.15 0 0 274
Na, a forum megint lenyelte a backslash-eket. A sztringben mind a t, az r es az n elott egy backslashnek kell allnia.
Előzmény: KoporShow (273)
KoporShow Creative Commons License 2005.02.15 0 0 273
Az "strlen(t)==4"-re gondoltal.

Igazad van, ugyanis a newline-t is beleszamolja, tehat 5. A problema evvel meg az, hogy a Windows alatt meg lehet, hogy 6 lenne, mert ott ket karakterrlel zarul a sor. Ebbol kifolyolag en megtartanam a 4-et, de a kovetkezokepp tesztelnem:

if( strcspn(t," trn")==4 && ...

Igy a sorvegi space-ek es tabok sem kavarnanak be.
Előzmény: thuram (270)
NevemTeve Creative Commons License 2005.02.15 0 0 272
Hát a strlen(4) meg a strlen(5) eléggé gépfüggő módon müködne... ha egyáltalán lefordulna...

a gdb-ben a set-nél használd a precízebb

set var s='X'

formát
Előzmény: thuram (270)
DonQuijote Creative Commons License 2005.02.15 0 0 271
"a typedef illetve define al definiált tipus illetve állandokat minden .c ben külön irjam be ahol használom?"
Jajj.
Te, nem kéne elolvasnod mondjuk a "Tanuljuk meg a C nyelvet" könyvet először? Akkor már tudnád mi az az include fájl meg mit jelent az a sok hülye csillag...
Előzmény: thuram (270)
thuram Creative Commons License 2005.02.15 0 0 270
Találtam egy (kis) hibát a progi(d)ban, azt kijavitva már müködik:)

Legalábbis nálam strlen(4) helyett strlen(5) kell mert az fgets mőgé tesz még valami ''-t..

Akkor lenne még néhány primitiv kérdésem:)

a typedef illetve define al definiált tipus illetve állandokat minden .c ben külön irjam be ahol használom?
Azaz pl typedef xyxy int et használom 1.c ben de 2.c ben is ugyanezt szeretném..

Ha a függvények argumentumában char *valtozo szerepel akkor ez egy karakter tömböt vár? Nekem néhol még sok a * pl az eval függvényedben:) azzal nem tudok mit kezdeni egyenlőre:) a decode fv ed nagyon tetszik..
Előzmény: KoporShow (269)
KoporShow Creative Commons License 2005.02.14 0 0 269
"C parancsok" nincsenek. Vannak kulonbozo "fuggvenyek". Ez attol függ, hogy ilyen könyvtarakat hasznalsz. Van persze a standard könyvtar, amelyet mindne C forditoval együtt szallitanak, de ez csak a minimum.

Ha "C standard library"-ra rakeresel a Google-n, akkor az elsö talalat:

http://www.infosys.utas.edu.au/info/documentation/C/CStdLib.html

ami eleg jo referencianak tünik ;)
Előzmény: thuram (268)
thuram Creative Commons License 2005.02.14 0 0 268
Tehát ezt látom a gdb ben:

9 while (( s= getchar()) !='n') {

beirom hogy set s='X'

erre kapom Ambiguous set command "s='X'": .

set s=100

Ambiguous set command "s=100": .

Ezt még az általam generált kódon probáltam..

KoporShow: rájöttem, hogy lehet módosítani az email cimet szóval már kicseréltem egy jóra. Most fogom átnézni az általad küldött kódot, de első ránézésre a többi c flet is átfogom írni ennek hatására kicsit, hogy profibbnak látszodjon:). Van egy két sor elsőre amit nem értek még megprobálok utánanézni hátha rájövök, egyébként nem tudtok olyan oldalt ahol felvan sorolva az összes c parancs (gyorsan lehet keresni köztük) rövid leírással esetleg példával?
Előzmény: NevemTeve (267)
NevemTeve Creative Commons License 2005.02.14 0 0 267
kicsit pontosítsd a dolgot...
Nekem megy a

set x=100
set x=x+1
set x='C'

utasitasok mindegyike
Előzmény: thuram (263)
KoporShow Creative Commons License 2005.02.14 0 0 266
Szerintem az egyenlosegjel a bajod, de nem ismerem annyira a gdb-t.
Előzmény: thuram (263)
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)

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