Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdbool.h>
- char szamok[37]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
- int nyilkeres(char* str){
- int i;
- for (i = 0; i < strlen(str); i++)
- {
- if (str[i]=='-')
- {
- if (str[i-1]=='<' && i!=0)
- {
- return 2;
- }
- else if (str[i+1]=='>')
- {
- return 1;
- }
- }
- }
- return 0;
- }
- long long int poww(long long int a, long long int b)
- {
- long long int ret=1;
- int i;
- for (i = 0; i != b; i++)
- {
- ret*=a;
- }
- return ret;
- };
- bool szrbeli_e(long long int bol, long long int ba, char szam[]){
- int i,j,ok=0;
- if (!((bol >=2 && bol <= 36 && ba==10) || (ba >=2 && ba <= 36 && bol==10)))
- {
- return false;
- }
- for (i = 0; szam[i]; i++)
- {
- for (j = 0; j < bol; j++)
- {
- if (szam[i]==szamok[j] ||szam[i]== tolower(szamok[j]))
- {
- ok++;
- break;
- }
- }
- }
- return (ok==i);
- }
- int char_to_num(char c){
- int i;
- for (i = 0; szamok[i]; i++)
- {
- if (c==tolower(szamok[i]) || c==toupper(szamok[i]))
- {
- return i;
- }
- }
- return -1;
- }
- long long int conv_to_10(long long int bol, char szam[]){
- int i;
- long long int ret=0;
- for (i = 0; szam[i]; i++)
- {
- ret+=(char_to_num(szam[i]))*poww(bol, strlen(szam)-i-1);
- }
- return ret;
- }
- char* conv_from_10(long long int ba, long long int forras){
- char* rev;
- rev = (char*)malloc(65*sizeof(char));
- int i=0;
- while (forras / ba > 0)
- {
- rev[i++]=tolower(szamok[forras%ba]);
- forras/=ba;
- }
- rev[i++]=tolower(szamok[forras]);
- rev[i]=0;
- char* ret;
- ret = (char*)malloc(65*sizeof(char));
- for (i = 0; i<strlen(rev); i++)
- {
- ret[i]=rev[strlen(rev)-i-1];
- }
- return ret;
- }
- int main(int argc, char **argv)
- {
- FILE* fbe;
- FILE* fki;
- fki = fopen("ki.txt", "w");
- long long int bol, ba;
- char szam[65];
- if (!(fbe = fopen("be.txt", "r")))
- {
- fprintf(fki, "HIBA\n");
- fclose(fki);
- return 0;
- }
- char str[65];
- fscanf(fbe, "%s", str);
- fclose(fbe);
- fbe = fopen("be.txt", "r");
- switch (nyilkeres(str))
- {
- //1ből
- case 1:
- fscanf(fbe, "%lld->%lld %s", &bol, &ba, szam);
- break;
- //2ból
- case 2:
- fscanf(fbe, "%lld<-%lld %s", &ba, &bol, szam);
- break;
- case 0:
- default:
- fprintf(fki, "HIBA\n");
- fclose(fki);
- return 0;
- }
- if (szrbeli_e(bol, ba, szam))
- {
- fprintf(fki, "%s\n", conv_from_10(ba, conv_to_10(bol, szam)));
- fclose(fki);
- }
- else
- {
- fprintf(fki, "HIBA\n");
- fclose(fki);
- }
- fclose(fbe);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement