120 likes | 233 Views
Programozás I. Horváth Ernő. Elérhetőségek. Bauer Péter http://www.sze.hu/~bauer/ Horváth Ernő http://www.sze.hu/~herno/ Tanszéki honlap http://it.sze.hu. Feladat.
E N D
Programozás I. Horváth Ernő
Elérhetőségek Bauer Péter http://www.sze.hu/~bauer/ Horváth Ernő http://www.sze.hu/~herno/ Tanszéki honlap http://it.sze.hu
Feladat • Készítsen int toi(char s[]) függvényt, mely tizenegynél kisebb alapú számrendszerbeli számjegyekből álló karakterláncból előállít egy egész számot! • A számrendszer alapja legyen fordítási időben változtatható!
Algoritmus • Billentyűzetről karakterlánc beolvasása -getline • Karakterlánc ellenőrzése – megnézzük, számot adott-e be a felhasználó – karakterek ‘0’ és ‘9’ közé esnek (csak 10es számrendszer) • Karakterlánc átalakítása számmá
toi inttoi(char s[]){ int i, eredmeny = 0; for(i=0; s[i]!=0; ++i) eredmeny = eredmeny * ALAP + s[i] - '0'; returneredmeny; }
toi • printf("%d", '0'); • ASCII • 48 = '0' • 49 = '1' • 50 = '2' • ... • 65 = 'A'
toi for(i=0; s[i]!=0; ++i) eredmeny = eredmeny * ALAP + s[i] - '0'; "1264" [0] >> 0 * 10 + 1 = 1 [1] >> 1 * 10 + 2 = 12 [2] >> 12* 10 + 6 = 126 [3] >> 126*10 + 4 = 1264
szame //"Az s karakterlanc ALAP alapuszam-e?" kerdesre ad logikai valaszt a fuggveny. intszame(char s[]){ int i; // Ha 10-es szamrendszert kellene vizsgálni isdigit() for(i=strlen(s)-1; i && s[i]>='0' && s[i]<ALAP+'0'; --i); if(s[i]>='0' && s[i]<ALAP+'0') return 1; else return 0; }
atoi // string --> decimalis intatoi(charst[]){ intdecimal = 0; int i = 0; charneg=0; while(st[i]==' ' || st[i]=='\t' || st[i]=='\n') ++i; if(st[i]=='-') ++neg; if(st[i]=='-' || st[i]=='+') ++i; for(;st[i];++i) decimal = decimal*10+st[i]-'0'; if(neg) decimal = -decimal; returndecimal; }
atoi charstring[]="-2147"; printf("Ez egy sima string: %s \n", string); printf("Ez decimalisszam : %d", atoi(string)); Ez egy sima string: -2147 Ez decimalisszam : -2147