szamrendszer

From Straton, 7 Years ago, written in C, viewed 745 times.
URL https://paste.godclan.hu/view/H_2gCttK Embed
Download Paste or View Raw
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <string.h>
  5.  
  6.  
  7. int atalakitasEsEllenorzes(char *t1,int szamrendszer){
  8.     char t2[160];
  9.     int i,j;
  10.     for(i = 0, j = 0; t1[i] != '\0'; i++, j++){
  11.         if(t1[i] >= '0' && t1[i] <= '9'){
  12.             t2[j] = t1[i];
  13.             continue;
  14.         }
  15.         int a = t1[i] - 55;
  16.         t2[j] = (a / 10) + '0';
  17.         j++;
  18.         t2[j] = (a % 10) + '0';
  19.        
  20.     }
  21.    
  22.     for(i = 0; t2[i] != '\0'; i++){
  23.         if(!((t2[i] - '0') < szamrendszer))
  24.             return -1;
  25.     }
  26.    
  27.     return atoi(t2);
  28. }
  29. bool beolvasasEsHibakereses(int *mibol, int *mibe, char *tomb){
  30.     FILE *f;
  31.     f = fopen("be.txt","r");
  32.     if(f == NULL)
  33.         return false;
  34.     if(fscanf(f,"%d %d %s\n",mibol,mibe,tomb)){
  35.         fclose(f);
  36.         int i;
  37.         if(!(2 <= *mibol && *mibol <= 36 && 2 <= *mibe && *mibe <= 36)){
  38.             return false;
  39.         }
  40.         for(i = 0; tomb[i] != '\0'; i++){
  41.             if(('0' <= tomb[i] && tomb[i] <= '9') || ('A' <= tomb[i] && tomb[i] <= 'Z'))
  42.                 continue;
  43.             return false;
  44.         }
  45.     }
  46.     if(atalakitasEsEllenorzes(tomb,*mibol) == -1){
  47.        
  48.         return false;
  49.     }
  50.     return true;
  51. }
  52. char dec_to_hex_kiir(int _dec){
  53.     char c;
  54.     if(_dec < 10)
  55.         c = _dec + '0';
  56.     else
  57.         c = (55 + _dec);
  58.     return c;
  59. }
  60. void eredmenyToFile(char *_eredmeny){
  61.     FILE *wr;
  62.     wr = fopen("ki.txt","w");
  63.     if(wr != NULL){
  64.         fprintf(wr,"%s\n",_eredmeny);
  65.         fclose(wr);
  66.     }
  67. }
  68. void atvaltas(int _mibol, int _mibe, unsigned int _szam, char *eredmeny){
  69.     unsigned long long int temp = _szam;
  70.     unsigned long long int digits[16], tizes_szamrendszer = 0;
  71.     int j, i = -1;
  72.     while(temp){
  73.         digits[++i] = temp % 10;
  74.         temp /= 10;
  75.     }
  76.     if(_mibol != 10){
  77.         for(j = 0; j <= i; j++){
  78.             int szorzas = 1,k;
  79.             for(k = 1; k <= j; k++){
  80.                 szorzas *= _mibol;
  81.             }
  82.             tizes_szamrendszer += digits[j] * (szorzas);
  83.         }
  84.     }
  85.         else{
  86.                 tizes_szamrendszer = _szam;
  87.         }
  88.     for(j = 0, i = 0; j != 1; i++){
  89.         eredmeny[i] = dec_to_hex_kiir(tizes_szamrendszer % _mibe);
  90.         tizes_szamrendszer /= _mibe;
  91.         if(tizes_szamrendszer == 0){
  92.             j++;
  93.         }
  94.     }
  95.     i = 0;
  96.     j = strlen(eredmeny) - 1;
  97.     char temp2;
  98.     while (i < j) {
  99.       temp2 = eredmeny[i];
  100.       eredmeny[i] = eredmeny[j];
  101.       eredmeny[j] = temp2;
  102.       i++;
  103.       j--;
  104.    }
  105. }
  106.  
  107. int main()
  108. {
  109.     char tomb[160];
  110.     int mibol, mibe;
  111.     unsigned long long int szam;
  112.     char eredmeny[16] = "";
  113.     if(!beolvasasEsHibakereses(&mibol,&mibe,tomb)){
  114.         strcpy(eredmeny,"HIBA");
  115.     }
  116.     else{
  117.         szam = atalakitasEsEllenorzes(tomb,mibol);
  118.         atvaltas(mibol,mibe,szam,eredmeny);
  119.     }
  120.     eredmenyToFile(eredmeny);
  121.    
  122.     return 0;
  123. }
  124.  
  125.  

Reply to "szamrendszer"

Here you can reply to the paste above