Ú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;
}