#include #include #include #include int atalakitasEsEllenorzes(char *t1,int szamrendszer){ char t2[160]; int i,j; for(i = 0, j = 0; t1[i] != '\0'; i++, j++){ if(t1[i] >= '0' && t1[i] <= '9'){ t2[j] = t1[i]; continue; } int a = t1[i] - 55; t2[j] = (a / 10) + '0'; j++; t2[j] = (a % 10) + '0'; } for(i = 0; t2[i] != '\0'; i++){ if(!((t2[i] - '0') < szamrendszer)) return -1; } return atoi(t2); } bool beolvasasEsHibakereses(int *mibol, int *mibe, char *tomb){ FILE *f; f = fopen("be.txt","r"); if(f == NULL) return false; if(fscanf(f,"%d %d %s\n",mibol,mibe,tomb)){ fclose(f); int i; if(!(2 <= *mibol && *mibol <= 36 && 2 <= *mibe && *mibe <= 36)){ return false; } for(i = 0; tomb[i] != '\0'; i++){ if(('0' <= tomb[i] && tomb[i] <= '9') || ('A' <= tomb[i] && tomb[i] <= 'Z')) continue; return false; } } if(atalakitasEsEllenorzes(tomb,*mibol) == -1){ return false; } return true; } char dec_to_hex_kiir(int _dec){ char c; if(_dec < 10) c = _dec + '0'; else c = (55 + _dec); return c; } void eredmenyToFile(char *_eredmeny){ FILE *wr; wr = fopen("ki.txt","w"); if(wr != NULL){ fprintf(wr,"%s\n",_eredmeny); fclose(wr); } } void atvaltas(int _mibol, int _mibe, unsigned int _szam, char *eredmeny){ unsigned long long int temp = _szam; unsigned long long int digits[16], tizes_szamrendszer = 0; int j, i = -1; while(temp){ digits[++i] = temp % 10; temp /= 10; } if(_mibol != 10){ for(j = 0; j <= i; j++){ int szorzas = 1,k; for(k = 1; k <= j; k++){ szorzas *= _mibol; } tizes_szamrendszer += digits[j] * (szorzas); } } else{ tizes_szamrendszer = _szam; } for(j = 0, i = 0; j != 1; i++){ eredmeny[i] = dec_to_hex_kiir(tizes_szamrendszer % _mibe); tizes_szamrendszer /= _mibe; if(tizes_szamrendszer == 0){ j++; } } i = 0; j = strlen(eredmeny) - 1; char temp2; while (i < j) { temp2 = eredmeny[i]; eredmeny[i] = eredmeny[j]; eredmeny[j] = temp2; i++; j--; } } int main() { char tomb[160]; int mibol, mibe; unsigned long long int szam; char eredmeny[16] = ""; if(!beolvasasEsHibakereses(&mibol,&mibe,tomb)){ strcpy(eredmeny,"HIBA"); } else{ szam = atalakitasEsEllenorzes(tomb,mibol); atvaltas(mibol,mibe,szam,eredmeny); } eredmenyToFile(eredmeny); return 0; }