Hirdetés

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

  • EQMontoya
    veterán

    char str1[]="AEBCD", str2[37]= {0};

    Ebből a sorból derül ki ez, nem? Tehát van egyszer AE, valamint BCD és a lezáró nulla. Ezeket kell bedobálni a második stringbe, ami 37 elemű, tehát str2[0]...str2[36]. A nulladik hely gondolom párosnak számít, bár most nekem az nem világos, hogy ha végig nézi az első stringet, abban van 5 darab betű. Ezeket beírja az str2 megfelelő helyeire:
    str2[0] → B
    str2[1] → A
    str2[2] → C
    str2[3] → E
    str2[4] → D
    str2[5] → \0

    akkor a második string miért nem csak 6 elemű? Vagy most a "while(*p1)" az nem csak az első string végéig fut? És a lezáró nullával mi lesz?

    Ja most látom, hogy a kérdés éppen erre irányul, hogy hogyan töltse fel végig a stringet. Akkor a feladat adott: van 5 karaktered és a lezáró nulla, az első 36 helyre írd be a megfelelő magánhangzót vagy mássalhangzót attól függően, hogy páros vagy páratlan indexen állsz-e, majd végül a 37. helyre dobd be a lezáró nullát.

    Írjsz egy függvényt, ami megmondja egy char-ról, hogy magánhangzó-e:

    #include <ctype.h>
    #include <stdio.h>
    static char * maganhangzok = "aeiou";
    int maganhangzo(char c)
    {
    int i = 0;
    for(; i < strlen(maganhangzok); ++i)
    {
    if(maganhangzok[i] == tolower(c)) return 1;
    }
    return 0;
    }

    Ha ez megvan, akkor az eredeti tömbbön végigfutsz ezzel, és megnézed, hogy mennyi magánhangzód van.
    Ezt követően azt szétszeded két tömbre, amit aztán használsz.
    Utána pedig a feltöltésnél karbantartasz két indexet, és azokat lépteted annak függvényében, hogy a ciklusváltozód páros vagy páratlan.

    int i=0;
    int msh_idx = 0;
    int mgh_idx = 0;
    for(;i<celtomb_hossza -1 ; ++i)
    {
    if(i%2 == 0)
    {
    celtomb[i] = msh_tomb[msh_idx];
    msh_idx = (msh_idx + 1) % msh_tomb_hossza; //strlen?
    }
    else
    {
    celtomb[i] = mgh_tomb[mgh_idx];
    mgh_idx = (mgh_idx + 1) % mgh_tomb_hossza; //strlen?
    }

    }
    //lezaro nulla ne maradjon le! :)

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