Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
#include <stdio.h>
#define MaxNum 100
#define MaxDig 94
#define MaxLen 35
struct sTest {
char Src[MaxLen + 1];
char Des[MaxLen + 1];
char SrcSys[MaxDig + 1];
char DesSys[MaxDig + 1];
int Number;
};
bool Input (const char *, sTest *, int &);
bool Output (const char *, const sTest *, int);
void ConvertFrom (sTest &);
void ConvertTo (sTest &);
int main (int AN, char * Args []) {
sTest Test[MaxNum];
int Num;
if (AN < 3)
return 1;
if (!Input(Args[1], Test, Num))
return 1;
for (int I = 0; I < Num; I++) {
ConvertFrom(Test[I]);
ConvertTo(Test[I]);
}
Output(Args[2], Test, Num);
return 0;
}
bool Input (const char * FN, sTest * Test, int & Num) {
FILE * F = fopen(FN, "r");
if (F == NULL)
return false;
fscanf(F, "%d\n", &Num);
for (int I = 0; I < Num; I++)
fscanf(F, "%s %s %s\n", Test[I].Src, Test[I].SrcSys, Test[I].DesSys);
fclose(F);
return true;
}
bool Output (const char * FN, const sTest * Test, int Num) {
FILE * F = fopen(FN, "w");
if (F == NULL)
return false;
for (int I = 0; I < Num; I++)
fprintf(F, "Case #%d: %s\n", I + 1, Test[I].Des);
fclose(F);
return true;
}
void ConvertFrom (sTest & Test) {
int I, J, Sys;
Test.Number = 0;
for (Sys = 0; Test.SrcSys[Sys]; Sys++);
for (I = 0; Test.Src[I]; I++) {
for (J = 0; J < Sys; J++)
if (Test.SrcSys[J] == Test.Src[I])
break;
if (J < Sys) {
Test.Number *= Sys;
Test.Number += J;
}
}
}
void ConvertTo (sTest & Test) {
int I, Sys, N;
char Mirror[MaxLen + 1];
for (Sys = 0; Test.DesSys[Sys]; Sys++);
for (I = 0; Test.Number; I++) {
Mirror[I] = Test.DesSys[Test.Number % Sys];
Test.Number /= Sys;
}
N = I;
for (I = 0; I < N; I++)
Test.Des[I] = Mirror[N - I - 1];
Test.Des[N] = 0;
}