Задача:
Главный вождь племени Абба не умеет считать. В обмен на одну из его земель вождь другого племени предложил ему выбрать одну из трех куч с золотыми монетами. Но вождю племени Абба хочется получить наибольшее количество золотых монет. Помогите вождю сделать правильный выбор!
INPUT.TXT
В первой строке входного файла INPUT.TXT записаны три натуральных числа через пробел. Каждое из чисел не превышает 10100. Числа записаны без ведущих нулей.
OUTPUT.TXT
В выходной файл OUTPUT.TXT нужно вывести одно целое число — максимальное количество монет, которые может взять вождь.
#include <stdio.h>
#define N 103
char* maxNum(char *n1, char *n2);
int length(char s[]);
int main()
{
FILE *in;
FILE *out;
int i,j;
char c;
char num1[N];
char num2[N];
char num3[N];
char *nums[3] = {num1,num2,num3};
in = fopen("input.txt","r");
for (i=0;i<3; ++i){
j = 0;
while(c=fgetc(in)){
if ( c == '\n' || c == ' ' ){
(*(nums+i))[j] = '\0';
break;
}
(*(nums+i))[j] = c;
j++;
}
}
fclose(in);
out = fopen("output.txt","w");
fprintf(out, "%s",maxNum(*nums, maxNum(*(nums+1),*(nums+2))));
fclose(out);
//printf("%s", maxNum(*nums, maxNum(*(nums+1),*(nums+2))));
return 0;
}
int length(char s[]){
int i;
for(i=0; i<N,s[i]!='\0';i++)
;
return i;
}
char* maxNum(char *n1, char *n2)
{
int i;
if (length(n1)>length(n2))
return n1;
if (length(n2)>length(n1))
return n2;
for (i=0; i<N;i++){
if (n1[i]>n2[i])
return n1;
if (n2[i]>n1[i])
return n2;
}
}
Теперь вопрос: как сделать код меньше, "красивше". Может я где-то не те типы данных использовал. Подскажите, пожалуйста.