Keresés

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

  • dvcs_

    újonc

    válasz Blaise7 #9178 üzenetére

    tomb deklaralasnal meg kellene adni a meretet is, nem?
    szal char str2[5];

    long shot, de beprobalom: az alga feladatgyujtemenyhez van valakinek leirasa? leginkabb az 1,3,(4) fejezetek nem mennek aszomptotikus, legjobb-legrosszabb-atlagos eset, rekurzio(ez csak kicsit)
    vagy esetleg tipp, hogy Berend Gabor melyikekbol szeret feladatot adni? :D

  • cocma

    újonc

    válasz Blaise7 #9178 üzenetére

    Egy lehetséges megoldás:

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

    void strtorles(char[]);

    int main()
    {
    char str[6] = "hello";

    printf("kezdo: %s \n", str);

    strtorles(str);

    printf("torolt: %s \n", str);

    return 0;
    }

    void strtorles(char str[])
    {
    int hossz = strlen(str);
    int ujhossz = (hossz / 2) + (hossz % 2);

    int i = 0;
    for(i; i < ujhossz; i++)
    {
    str[i] = str[2 * i];
    }

    str[i] = '\0';
    }

    Több probléma is van a kódoddal (forgatni nem is próbáltam, így nem tudom, hogy konkrtan mi a baja a fordítónak). Először is, ha mindenképp új tömbbe szeretnéd megkapni az eredményt (nem célszerű, lásd később) akkor annak (str2), ahogy előttem is írták helyet kell foglalnod. Mivel nem tudod előre fordítási időben, hogy milyen hosszú sztringről van szó, ezért mindneképp dinamikusan (malloc) kéne foglalnod, tehát ilyesmi szóba se jöhet: char str2[5];

    A getchar() stdinput-ról olvas, tehát akkor jöhetne szóba, ha pl. az lenne a feladat, hogy egy bill.-ről beolvasott sztringből töröld minden 2. karaktert. Itt viszont a függvény argumentumaként kapod. Tehát ahogy te gondolod, úgy nem fogod mekapni a sztring hosszát.

    Az utolsó hiba, hogy tömbnek nem adhatsz értékül tömböt, át kellene másolnod az elemeit egyesével. Mint korábban írtam, ezért is célszerű abban a tömbben dolgoznod amit argumentumként kapsz. Ezzel elkerülheted a másolgatást és még a tárigény is kisebb lesz. Ha nem tiszta a kód amit írtam, javaslom magyaráztasd el valakivel.

    (Ui.: Ha string.h-t nem használhatsz, akkor strlen helyett neked kell kézzel megnézned a sztring hosszát.)

    [ Szerkesztve ]

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