Hirdetés

Keresés

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

  • cucka
    addikt

    Az előbb linkeltem egy szabályos keverési algoritmust, szerintem nem kell annál jobban kókányolni :)

    Jogos, nem olvastam el rendesen a válaszokat a kérdésre.

  • cucka
    addikt

    szia! lényegében csak adatok tárolására majd random sorrendben történő kiíratására. elhatároztam -> láncolt lista viszonylag könnyen meg tudom csinálni és dinamikusan. másik: hogy lehetne a tartalmát random kiíratni úgy, hogy minden elem szerepeljen és csak egyszer (nincs ötlet).

    hogy lehetne a tartalmát random kiíratni úgy, hogy minden elem szerepeljen és csak egyszer (nincs ötlet).

    Például egy nagyon fapados megoldás: indexeled az elemeidet 0-tól n-ig. Egy iterációban veszel 2 random indexet és felcseréled a nekik megfelelő elemeket. Az iterációt elég sokszor megismétled. (Ha csak a kiírás kell random legyen, akkor a cserélgetéshez hozz létre egy, az indexeket tartalmazó tömböt és annak elemeit cserélgesd)

    Igazából ez egy nem túl jó megoldás, cserébe nagyon egyszerű átlátni és megvalósítani. (Pl. azért nem jó, mert az iterációk számának növelésétől nem lesz "rendezetlenebb" a tömböd). Továbbá érdemes arra odafigyelni, hogy ha listával dolgozol, akkor egy adott indexű elem elérése O(n) műveletigényű, míg tömböknél O(1), tehát a fent vázolt megoldás meglehetősen lassú.

  • cucka
    addikt

    szerintem ahhoz "nem kell tudni programozni", hogy 5 elem kozul ki tudd valasztani a legnagyobbat

    Dehogynem. Igazából az emberek jelentős része képtelen a legalapvetőbb színvonalon is megtanulni programozni. Az okokat nem tudom, nyilván bizonyos agyterületek fejlettségére lehet visszavezetni az egészet.
    Ezt nem negatív beszólásnak szánom, mert mindenki tud mondani olyan, nem tanulható készségeken alapuló területet, amelynek elsajátítására képtelen lenne (pl. művészetek, nyelvérzék, matematika, stb.)

    Két érdekes cikk (főleg az első vág témába, illetve az ott linkelt "kutatás"):
    [link]
    [link]

  • cucka
    addikt

    Úúú basszus, teljesen igazad van, az lemaradt, köszi, hogy szóltál. :R
    És igen, vagy (||) helyett és (&&) kellene... :W
    Látszik, hogy sietve írtam (eddig nem kapott választ a srác), bocsesz. :B

    zserrbo, a for ciklust javítanám, pl. ha van egy i és egy j változód, akkor pl. ilyesmi lenne:

    for(i=j=0; i<strlen(tomb1) && i<strlen(tomb2); i++){
    if(tomb2[i] != '\t' && tomb2[i] != ' '){
    tomb1[j]=tomb2[i];
    j++;
    }
    }

    Ahogy már korábban írták, a
    if(tomb2[i] != '\t' || tomb2[i] != ' '){
    feltétel nem lesz jó, || helyett && kell..

    mod. ok, közben te is észrevetted :)

  • cucka
    addikt

    "Ez a void atalakit(char[] nev) szignatúra meg üt."
    Nem is char[] nev, mert char nev[] :D Amúgy jobban mutatna char* nev formában, nem? Vagy még mire gondolsz? :)

    Mellesleg nem értem, ha az egész karaktersorozatot át kellene adni a függvénynek átalakítás céljából, akkor azt hogyan akarod megcsinálni anélkül, hogy el ne lenne tárolva? És ne tekintsünk el a +1-es alfeladattól, az is a specifikáció része... :U (Bár elég komolytalan specifikáció, az egész megfogalmazás valahogy elég bénácska számomra...)
    Pl. hogyan akarod kicserélni a catherine_zeta-jones formájú szöveget Zeta-Jones, Catherine formájúra, ha nem tárolod el a karaktersorozatokat? :U

    Elsősorban azért üt, mert ha egy függvényt úgy nevezel el, hogy "átalakít", akkor elvárod, hogy úgy működjön, hogy kap valamilyen bemenő adatot, átalakítja, majd az eredménnyel valahogy visszatér.

  • cucka
    addikt

    sziasztok
    valaki használja a sima c-t win7 alatt? nekem nem engedi kitenni teljes méretbe,ami még nem lenne olyan nagy probléma,de sok karakterpl.() máshol ismer fel mint ahol valójában van a billentyűzeten,de párat fel sem ismer pl.[]>< ez mitől lehet?

    Most akkor a c fordítót szeretnéd kitenni teljes méretbe? :D

  • cucka
    addikt

    Bsc kepzesben mar nincs formalis nyelvek ugye? ugy egyszerubb lenne ilyet lekodolni. Bar most sem nehez :)

    Elte prog. informatikus bsc-n van formális nyelvek, meglepően hasznos tantárgy.

  • cucka
    addikt

    Hali!
    Van egy program, amiben egy reguláris kifejezés helyes értelmezésével akadtak problémáim, leírom a feladatot (benne a regexpet), aztán ahogy értelmeztem, légyszi javítsatok ki, hogy jó-e... :B :R

    "Írjon C programot, amely a szabványos kimenetre kiír egy olyan 184 sor hosszú szöveget, amelyben pontosan 3 olyan egymástól különböző sor van, amelyre az alábbi reguláris kifejezés illeszkedik:

    ^[^#]_*(0x)*[0-9]+W6.*[a-z]+.+qqriq(A|a)

    (Az utolsó sor végén is legyen \n karakter!)"

    ^ : Sor elején fordul elő a minta
    [^#] : bármilyen karakter, ami nem #
    _* : alsóvonás karakter után tetszőleges számú, bármilyen karakter
    (0x) : :F
    * : utána tetszőleges számú, bármilyen karakter
    [0-9]+ : szám, mely legalább egyszer szerepel
    W6 : W6 ... :F
    . : egy db tetsz. kar.
    * : tetszőleges számú, bármilyen karakter
    [a-z]+ : a-z tartományból legalább egy betű
    .+ : tetsz. kar. legalább egyszer (van ennek értelme? :D)
    qqriq : qqriq...
    (A|a) : 'A' vagy 'a' betű szerepel utána

    Egy-két helyen nem ment az értelmezés.
    Ezenkívül azzal van a gondom, hogy most automatikusan hogyan generáljak egy ilyen szöveget? Mert manuálisan is bevihetnék egy ilyen szöveget, amire ez illeszkedik, de lehet, hogy nem az a feladat lényege (ez nem derül ki világosan számomra)... :F

    Előre is köszi a segítséget! :R

    _* : alsóvonás karakter után tetszőleges számú, bármilyen karakter
    A * azt jelenti, hogy az előtte álló karakter(ek)ből tetszőleges számú van a mintában, tehát itt tetszőleges számú _ karakterről van szó. A tetszőleges szám bármilyen természetes szám lehet, beleértve a nullát is. Ha majd olyanról beszélnek az iskolában, hogy lezárás, vagy egy halmaz lezártja, na ez az :) .

    (0x) :
    * : utána tetszőleges számú, bármilyen karakter

    Lásd az előbbi, tehát erre olyanok fognak illeszkedni, hogy epszilon, 0x, 0x0x, 0x0x0x, stb.

    . : egy db tetsz. kar.
    * : tetszőleges számú, bármilyen karakter

    A . bármilyen karakterre illeszkedik, a .* tehát tetszőleges számú tetszőleges karaktert jelent.

    .+ : tetsz. kar. legalább egyszer (van ennek értelme? )
    Van.

    Arra még figyelj oda, hogy a minta végén nincs ott a sorvége, tehát akkor is illeszkedni fog az adott sorra a minta, ha az illeszkedő rész után további karakterek is vannak a sorban.

  • cucka
    addikt

    Mindegyikben igazad van. :K Késő volt :B Köszi, hogy szóltál! :R
    A bemeneti adatok ellenőrizgetésével azért nem foglalkoztam, mert most csak a program megírására helyeztem a hangsúlyt, persze ettől függetlenül szükséges.
    Amúgy ahogy teszteltem, jól működik a progi, azt csinálja, amit kéne.

    "Egyébiránt pár oldallal korábban már volt itt ilyen kód :K"
    Most rákerestem, erre gondoltál? Akkor már nem tömörebb (persze nem tökéletes) az enyém? :D

    Akkor már nem tömörebb (persze nem tökéletes) az enyém?
    ..és még mindig nem eléggé tömör :D .

  • cucka
    addikt

    itt csak szapulni tudjátok az embert? Te pl mindegyik topikba ezt teszed az emberekkel. Jó neked,hogy ilyen kurva okos vagy!

    Ez nem szapulás. Senki nem született úgy, hogy tudott programozni, meg lehet ezt tanulni meg hasonlók. Viszont ha kezdő szintű kérdéseket teszel fel a php topikban és nem tudsz egyedül kitalálni egy decimális->római szám konvertáló algoritmust, akkor talán még nincs itt az ideje annak, hogy pénzért bármilyen programozói munkát vállalj.

  • cucka
    addikt

    Na, ha ezt mondtad volna először, mindjárt lenne a helyzet.

    Akkor meg tárold el a simán a karaktereket, és majd később sscanf-fel konvertáld őket számmá, ha számolni is kell velük. Nem jó így? Mi is lesz belőle a végén?

    Gondolom az a feladat lényege, hogy számjegyenként kell eltárolni a bekért számokat és így kell velük műveleteket végezni.
    (A fenti csak tipp, de az ilyen típusú feladatokat mindenhol el szokták játszani programozás órán :) )

  • cucka
    addikt

    Sziasztok!
    Lenne feléltek mint C és C++ nyelvhez értőkhöz egy óriási kérésem!
    Most kezdtem csak a C++ nyelvet tanulni és lenne egy feladatom amit megkell hogy csináljak, de fogalmam sincs hogyan álljak neki!
    Szóval a feladat a következő:
    Vezérlőprogram beírása:
    • Egy max. 10 lépésből (ellenőrzendő) álló vezérlőprogramot kell beolvasni. A vezérlő program
    minden utasítása az x, y, és z irányokba történő lépés hosszát (x, y, z ∈ [-127,+127]) tartalmazza.
    Ha a megadott lépéshossz nem megfelelő, az utasítást újra kéri a program.
    • Az utasításokat egy int típusú, 10 elemű tömbben kell tárolni, az alábbi felépítésben: x előjele,
    x6…x0, y előjele, y6…y0, y előjele, z6…z0 (minden byte egy koordináta előjele és hossza). A
    negatív előjel kódja 1, egyébként az előjel kódja zéró.
    • A program végét jelzi, ha a lépéshossz zérus
    Vezérlőprogram végrehajtása:
    • A program a vezérlést a (0,0,0) pozícióból indítja, és addig fut amíg a lépéshossz nem zérus
    minden irányban ill. max. 10. lépést hajt végre.
    • Minden egyes lépésben értelmezi a tárolt utasítást és kiszámítja következő pozíciót (aktuális
    pozíció+lépéshossz).
    • Minden lépésnél tabulálva kiírja az új pozíció x, y és z koordinátáját valamint a kezdőponttól
    való távolságot (double, sqrt(x2+y2+z2)).

    Ez a teljes feladat de nekem igazából az elejében kellene egy kis segítség hogy hogyan álljak neki??(dev c++ba programozunk)
    Előre is köszi mindenkinek!

    Üdv.:
    pszaby

    • Az utasításokat egy int típusú, 10 elemű tömbben kell tárolni, az alábbi felépítésben: x előjele,
    x6…x0, y előjele, y6…y0, y előjele, z6…z0 (minden byte egy koordináta előjele és hossza). A

    Nekem csak ezzel a résszel kapcsolatban lenne egy kérdésem egy nálam szakértőbb emberhez: itt ugye egy 4 byte-on ábrázolt int változóban tárolunk 3 darab 1 byte-os számot, a trükk, hogy ezeket kell kinyerni valahogy. A kérdés igazából annyi, hogy hogyan lehet megírni ezt a programot úgy, hogy akkor is működjön, ha az adott gépen az int nem 4 byte-os, hanem több vagy kevesebb? (Mondjuk ha több, akkor az nem gáz, de ha kevesebb, akkor baj van).
    Vagyis általánosan véve az a kérdés, hogy meg lehet-e mondani valahogy a fordítónak, hogy mi 4 byte-os inteket szeretnénk használni?

    Mod: Mondjuk a többiekkel ellentétben én nem kaptam meg ezt házi feladatnak, tehát a kérdés pusztán elméleti jellegű :D

    Mod2: Amúgy ritka balf*szul sikerült megfogalmazzák a feladatot, főleg az idézett részt nézegettem sokat, amíg rájöttem, mi a túrót szeretnének.

  • cucka
    addikt

    Komolyan mondom nem értem miért kell mindig külön könyörögni hogy megtudjuk mi okozza a problémát.

    Gondolom az, hogy nincs kedve megírni a házi feladatot, ezért reménykedik, hogy hátha itt valaki megírja helyette :D

  • cucka
    addikt

    A char típus egy darab karaktert jelent ugyan, de felfoghatod úgy is, mint egy előjel nélküli egész számot, mert tulajdonképpen az.

    Azért ezzel tessék vigyázni mert nagyon könnyen bajba kerülhet a gyanútlan programozó :K

    Valami példa a veszélyeiről? Nem igazán vagyok c szakértő, rámfér a tanulás :)

  • cucka
    addikt

    Nézegetem őket én is, van egy prog könyvem, de nem igazán taglalja a használatukat. :F
    Az strcmp függvény sem akar menni valamiért. Sokféleképp próbáltam már alakítgatni, de nem ment, most épp szegmens hibát ír. Ez azért ciki, mert az általad írt függvényeket is elvileg ugyanúgy kell majd használni a másik feladatomnál.

    Itt az strcmp-s progi, ami nem akar menni:
    (lényegében az a feladat, hogy meg kell adni a bástya és a gyalog pozícióját és el kell dönteni hogy üti-e a bástya a gyalogot? Én úgy gondoltam megvalósítani ezt, hogy mivel a bástya csak vagy vízszintesen vagy függőlegesen mozoghat, azt kell eldönteni, hogy a két bekért pozíció betűje egyezik-e a 2 bábunál, vagy a 2 számos tagja egyezik-e. Ezzel eldönthető, hogy ugyanabban az oszlopban van-e vagy ugyanabban a sorban. Ha a 2 közül legalább az egyik igen, akkor üti, ha nem akkor nem. Ehhez kellene a karakter összehasonlító függvény.)

    #include <stdio.h>
    #include <string.h>

    int strcmp (const char *s, const char *t)
    {
    if (*s == *t)
    return 0;
    else
    {
    printf("WTF? \n");
    }
    }

    void sakk ()
    {
    char bastya [3];
    char gyalog [3];

    printf("Kerem a bastya poziciojat: ");
    scanf("%c %c", &bastya[1], &bastya[2]);
    printf("Kerem a gyalog poziciojat: ");
    scanf("%c %c", &gyalog[1], &gyalog[2]);

    if ((strcmp(bastya[1], gyalog[1]) ==0) || (strcmp(bastya[2], gyalog[2]) ==0))
    printf("A bastya uti a gyalogot.\n");
    else
    {
    printf("A bastya nem uti a gyalogot.\n");
    }
    }

    int main ()
    {
    sakk();
    }

    El kéne olvasni, hogy az strcmp hogy működik:

    int strcmp(const char *s1, const char *s2);

    Tehát két darab char* típusú változót kér paraméternek, a te programodban pedig két char típusú változóval próbálod meghívni.
    Char típusú változókat pont úgy tudod összehasonlítani, mint ahogy sima int-eket hasonlítasz, tehát alapvetően ebben a programban semmi szükség az strcmp függvényre. A char típus egy darab karaktert jelent ugyan, de felfoghatod úgy is, mint egy előjel nélküli egész számot, mert tulajdonképpen az.

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

Hirdetés