Keresés

Új hozzászólás Aktív témák

  • bepken

    veterán

    sziasztok,

    még csak ismerkedek a C programozási nyelvvel (bár nem ez az első nekifutásom) - egyszer már elolvastam a Kernighan-Ritchie féle könyvet, most elölről kezdtem és a példákon is végig megyek.

    van (még egészen az elején) egy példakód, aminek egy "aprócska" része nem igazán világos számomra: 1.5.4. Szavak számlálása fejezet példakódjáról van szó.

    az egészből egész pontosan ezt a kódrészletet nem értem:
    if (c == ' ' || c == '\n' || c == '\t')
    allapot = KINT;
    else if (allapot == KINT) {
    allapot = BENN;
    ++nw;
    }

    egész konkrétan az else if ágat nem értem belőle. az megvan, hogy a két állapot (KINT/BENN) között kell váltogatni, de miért így van megírva az else if feltétele? ha jól értem, csak azért, hogy beugorjon abba az ágba, átváltson BENN értékre és növelje az nw változó értékét...jól értem? csak mert ülök már felette jónéhány perce :DDD

    egyébként mire leírtam mégis csak koppanni látszik...na de akkor annyit ha segítenétek, hogy miért nem lehet a helyén egy sima else ág? vagy az allapot == KINT feltétel helyén egy akármilyen igaz feltétel?

    köszi előre is a segítő szavakat :R (remélem, nem kérdezek nagy baromságot)

    üdv,
    bepken

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz kispx #5560 üzenetére

    azt hiszem, így már leesett, miért kaptam ezeket az értékeket (minden fehér karaktertől eltérőt összeszámoltam a bemenetről :) ) köszi szépen a gyors választ! :R

    még talán annyi, hogy ha az else if (allapot == KINT) helyett miért nem írható pl: else if (1) - ezt a részét még nem értem. mármint ha KINT állapotban vagyunk, akkor beugrik erre az ágra és átváltja az értéket BENT-re, majd a ciklus elején lehet újra KINT-re változik. na de miért épp ez a feltétel?

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    sziasztok,

    közel vagyok egy feladat megoldásához, de sajnos nem vagyok benne biztos, hogy jó úton indultam el....

    vizsgálni kell többek között, hogy az adott sor tartalmaz e nagybetűt és számot. na most ezt eddigi ismereteim szerint legegyszerűbben a <ctype.h> könyvtár függvényeivel tudom megoldani. viszont a feladatban van egy előre megadott main függvény, amiben ez a könyvtár nincs megadva.
    gondolom include csak elől szerepelhet, bár compiler nem szólt függvényen belül sem. de esetleg meg lehet ezt oldani az említett fv.könyvtár nélkül is? mármint...gondolom ezt várná a feladat.

    a másik problémám, amit viszont egyáltalán nem tudtam lekezelni: az a példabemenet 7. sorában lévő üres sor. ezt hogy a fenébe kellene lekezelni, hogy a függvény megfelelően működjön?

    ezeket leszámítva az általam írt megoldás minden bemenetre megfelelő értéket adott. egyelőre általánosságban kérdezősködök, de természetesen tudok mutatni kódot is.

    köszi előre is,
    bepken

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz dobragab #5563 üzenetére

    akkor ezek szerint a string.h is használható! ezzel meg is oldódott a problémám, egy strlen segítségével könnyedén meglett az a fránya üres sor is :) (másképp én nem tudtam megoldani)

    el is fogadta a kódot, úgyhogy köszi szépen :R :) (hamarosan jövök újabb kérdésekkel :DDD )

    ez a feladat nem kifejezetten verseny feladat, csak egy beugró. szerencsére/sajnos itt még alap dolgok vannak. minden esetre én egyelőre vizsgán szeretnék átmenni, úgyhogy az egyszerűsítésnek csak örülni tudok :P

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    sziasztok,

    egy újabb feladattal kapcsolatban lenne kérdésem hozzátok: [link]

    ez pedig a megoldásom: [link]

    ha lementem a példa kimenetet és összehasonlítom az én kimenetemmel, akkor ránézésre teljesen egyezik. feladat szerint pedig annyi az elvárás, hogy minden "hatos" egy sorral legyen elválasztva, de utolsó után már nem kell üres sor.

    szerintem (!) az enyém ennek megfelel - bár file compare szerint az én kimeneti fájlom "hosszabb"....valószínűleg ezért van az, hogy a progcont se fogadja el.

    mi lehet ennek az oka?

    köszi előre is,
    bepken

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz dabadab #5632 üzenetére

    ja....vizsga van ma, ilyenkor lelövik valamiért az egészet...

    feladat nagyjából: bemenet első sora a feldolgozandó esetek száma. minden sorra egy N•M méretű "hatost" kell kirajzolni '*' karakterekből. N páratlan, N >= 5, illetve M >= 3

    példa bemenet:

    2
    5 3
    7 4

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz axioma #5634 üzenetére

    közben elérhető ujra az oldal (egy ideig csak)
    tehát megnéztem és van egy ilyen rész a leírásban: "Mindegyik sorban közvetlenül soremelés követi a legutoljára kiírt csillag karaktert (azaz nem szerepelnek a sorok végén szóközök). A tesztesetekhez tartozó kimeneteket egy-egy üres sor választja el egymástól. Figyelem: az utolsó számjegyet nem követi üres sor!"

    példa kimenet:

    ***
    *
    ***
    * *
    ***

    ****
    *
    *
    ****
    * *
    * *
    ****

    ezt én sima '\n' megoldásnak értelmezem. öhm vagy miért jobb neki a \r :DDD

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz dabadab #5638 üzenetére

    csak bemásoltam, hogy hogyan is kell kinéznie, de sorra megyezik a két kimenet (utolsó sor után nincs új sor, ahogy kéri is a feladatban) - vagy legalábbis én értelmezésem szerint ezt kéri a feladat.

    és esküszöm nem értem, miért nem jó ez így, de file compare eredményt is tudok mutatni:

    E:\program\2\Új mappa>fc /n out.txt out2.txt
    Comparing files out.txt and OUT2.TXT
    ***** out.txt
    1: ***
    2: *
    3: ***
    4: * *
    5: ***
    6:
    ***** OUT2.TXT
    1: ***
    2: *
    3: ***
    4: * *
    5: ***
    6:
    *****

    ***** out.txt
    7: ****
    8: *
    9: *
    10: ****
    11: * *
    12: * *
    13: ****
    ***** OUT2.TXT
    7: ****
    8: *
    9: *
    10: ****
    *****

    ***** out.txt
    ***** OUT2.TXT
    11: * *
    12: * *
    13: ****
    *****

    __________________________________________________

    ez meg a két fájl egymás után:

    E:\program\2\Új mappa>more out.txt
    ***
    *
    ***
    * *
    ***

    ****
    *
    *
    ****
    * *
    * *
    ****

    E:\program\2\Új mappa>more out2.txt
    ***
    *
    ***
    * *
    ***

    ****
    *
    *
    ****
    * *
    * *
    ****

    E:\program\2\Új mappa>

    bocsi, ha értetlenkedek, de nagyon idegesít a dolog és szeretném megérteni a problémát. én kétszer ugyanazt a kimenetet látom :DDD

    szerk.: out.txt az enyém, OUT2.txt pedig a referencia

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz dabadab #5640 üzenetére

    hogyaza....korábban puts("\n"); -val próbálkoztam a legvégén putchar('\n'); helyett és olyankor dupla soremelést tett a végére (ami nyilván hibás) - viszont ha meg csak putchar-ral zártam a végét, akkor a két hatos közé nem tett üres sort. innentől meg csak forgattam magam, hogy végülis a feladat is ezt várja. ráadásul ahogy bemásoltam ide is, parancssorban kiíratva a kimenet is teljesen azonos volt (jól sejtem, hogy a cmd tesz be automatikusan egy üres sort, ha hiányzik a fájl végéről és úgy írja ki a fájl tartalmát? mert akkor ez kavart be)

    na lényeg, hogy végül ez volt a kínja. köszönöm szépen a segítséget! :R

    (tudom, hogy nagy hiba, de windows alatt tanulom a C-t, itt meg hirtelen csak ilyen compare cuccot találtam. mondjuk itt is van sokféle kapcsoló, lehet találnék olyat, ami pontosabban megtalálja a különbséget)

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    sziasztok,

    [link] - alábbi feladatot sikerült megoldanom, de mégsem tiszta néhány dolog, így inkább kérdezek :)

    az a verzió, ami működik:

    _______________________________________

    int amper( char *line)
    {
    char *tok, *amp;
    int szam, szorzo, eredmeny;

    tok=strtok(line, " ");
    szam=atoi(tok);
    amp=strtok(NULL, "\0");

    if((strcmp(amp, "A")) == 0){
    eredmeny = (szam);
    }
    if((strcmp(amp, "kA")) == 0){
    eredmeny = (szam*1000);
    }
    if((strcmp(amp, "mA")) == 0){
    eredmeny = (szam/1000);
    }
    return eredmeny;
    }

    az a verzió, ami valamiért nem:

    _______________________________________

    int amper( char *line)
    {
    char *amp;
    int szam, szorzo, eredmeny;

    sscanf(line, "%d %s", &szam, amp);

    // printf("szam: %d\tegyseg: %s\n", szam, amp);
    if((strcmp(amp, "A")) == 0){
    eredmeny = (szam);
    }
    if((strcmp(amp, "kA")) == 0){
    eredmeny = (szam*1000);
    }
    if((strcmp(amp, "mA")) == 0){
    eredmeny = (szam/1000);
    }
    return eredmeny;
    }

    gondoltam, csak gyorsabb volna egyetlen művelettel tárolni mindkét értéket. erre való az sscanf vagy tévedek? valamiért mégis kifagy a program ezzel a verzióval...

    tárgytalan, bocsi....az amp itt tömb, nem mutató.....

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

Új hozzászólás Aktív témák