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

  • Jester01

    veterán

    válasz CsodaPOK #275 üzenetére

    Több baj is van.
    1) Te tulajdonképpen stringeket olvasol be, feltehetőleg ascii kóddal. Tehát az ertek1 az 2 byte lesz, 49 és 50 tartalommal (az 1 és a 2 ascii kódja). A számjegyeket tehát konvertálni kell, szerencsére az ascii kód szépen sorban van így egyszerűen csak ki kell vonni 48-at (ami a 0 kódja).
    2) Ezután még mindig csak számjegyeid vannak, tehát a számítógép számára az nem 12 hanem 1 és 2. Ezeket vagy kézzel adod össze, vagy konvertálod tényleges számmá értelemszerűen a 10 * 1 + 2 képlettel.
    3) Nálad a di és a si az ertek1 ill. ertek2 címét tartalmazza, nem a tényleges számokat. Az add emiatt a címeket adja össze. Így aztán persze, hogy nem lesz értelmes eredmény.
    4) az int21,9 az $ jellel lezárt stringet vár, ez persze nem látszik a kódrészletből. (Lásd +1 pont, alább.) Ehhez a kapott eredményt vissza kell alakítani karaktersorozattá, az 1) és 2) pontok megfordításával.

    +1) mindig külön könyörögni kell, hogy teljes (kipróbálható) programot tegyetek fel? :(((

    C-ben ez ilyesmi lenne:

    #include <stdio.h>

    int main()
    {
    /* a beolvasott karakterek */
    char ertek1[2];
    char ertek2[2];
    /* a konvertalt szamok */
    int ertek1n;
    int ertek2n;
    /* az eredmeny szam */
    int eredmn;
    /* az eredmeny karakterek */
    char eredm[2];

    /* beolvasas */
    ertek1[0] = getchar();
    ertek1[1] = getchar();
    ertek2[0] = getchar();
    ertek2[1] = getchar();

    /* elso lepes, ascii konverzio */
    ertek1[0] -= '0';
    ertek1[1] -= '0';
    ertek2[0] -= '0';
    ertek2[1] -= '0';

    /* masodik lepes, decimalis konverzio */
    ertek1n = ertek1[0] * 10 + ertek1[1];
    ertek2n = ertek2[0] * 10 + ertek2[1];

    /* osszeadas */
    eredmn = ertek1n + ertek2n;

    /* visszaalakitas szamjegyekke */
    eredm[0] = eredmn / 10;
    eredm[1] = eredmn % 10;

    /* ascii konverzio */
    eredm[0] += '0';
    eredm[1] += '0';

    /* kiiras */
    putchar(eredm[0]);
    putchar(eredm[1]);
    putchar('\n');

    return 0;
    }

    Jester

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