//---------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
void restar(int lon[10], int k,char asc[10],char des[10],char *res);
void cabecera()
{printf("\t\n");
printf("\t .oPYo. o .oPYo.\n");
printf("\t 8 8 8 `8\n");
printf("\to8YooP' oPYo. .oPYo. o o .oPYo. .oPYo. o8P .oPYo. .oP'\n");
printf("\t 8 8 `' 8 8 8 8 8oooo8 8 ' 8 8 8 `b.\n");
printf("\t 8 8 8 8 8 8 8. 8 . 8 8 8 :8\n");
printf("\t 8 8 `YooP' `YooP8 `Yooo' `YooP' 8 `YooP' `YooP'\n");
printf("\t:..:::::..:::::.....::....8 :.....::.....:::..::.....::::.....:\n");
printf("\t:::::::::::::::::::::::ooP'.:::::::::::::::::::::::::::::::::::\n");
printf("\t:::::::::::::::::::::::...:::::::::::::::::::::::::::::::::::::\n");
}
int menu(){
int opc;
printf("\n");
cabecera();
printf("\n\t Menu");
printf("\n\t1. Realizar lectura del archivo entrada.in");
printf("\n\t2. Generar archivo salida.out");
printf("\n\t3. Salir ");
scanf("%d",&opc);
return opc;
}
void menu2(char *opc,int *opc2)
{ printf("\n");
cabecera();
printf("\n\t Menu");
printf("\n\t1. Realizar lectura del archivo entrada.in");
printf("\n\t2. Generar archivo salida.out");
printf("\n\t\ta. Crear en la misma carpeta");
printf("\n\t\tb. Crear en nuevo directorio");
printf("\n\t3. Salir ");
*opc=getch();
if(*opc!='a' || *opc!='b')
{ *opc2=*opc;
}
}
int main(int argc, char* argv[])
{ int opc=0,i=0,cont=0,lon[10],j=0,k=0,contaux,opc2,encon=0,auxatoi;
char numeros[10][20];
char mayor,opcaux;
char directorio[100];
char asc[10],des[10],res[10]="\0",aux[10]="\0";
FILE *p;
do{ clrscr();
opc=menu();
switch(opc)
{ case 1: clrscr();
p=fopen("entrada.in","r");
if(p==NULL)
printf("Error al abrir el archivo");
else
{ printf("Ya se encontro y leyo el archivo");
do{
fscanf(p,"%s",numeros[i]);
lon[i]=strlen(numeros[i]);
i++;
cont++;
}while(!feof(p));
encon=1;
}
/*for(i=0;i<cont;i++)
{
printf("\n%s",numeros[i]);
} */
printf("\n");
i=0;
fclose(p);
getch();
break;
case 2: clrscr();
menu2(&opcaux,&opc);
if(encon==0)
{ clrscr();
printf("Debe abrir primero el archivo");
getch();
break;
}
if(opcaux=='a'){
clrscr();
k=0;
p=fopen("salida.out","a");
if(p!=NULL)
printf("Ya se genero el archivo");
else
printf("No se pudo crear el archivo");
}
if(opcaux=='b'){
clrscr();
k=0;
printf("Ingrese el directorio y el nombre con el que quiere guardar el archivo: ");
scanf("%s",directorio);
p=fopen(directorio,"a");
if(p!=NULL)
printf("Ya se genero el archivo");
}
for(k=0;k<cont;k++)
{ int encon=0;
fprintf(p,"En numero original era %s",numeros[k]);
contaux=0;
strcpy(aux,"\0");
// auxatoi=atoi(numeros[k]);
// strcpy(numeros[k],itoa(auxatoi,numeros[k],10));
while(encon==0){
for(i=0;i<lon[k]-1;i++)
{ asc[i]=0;
des[i]=0;
}
if(strlen(numeros[k])>1)
{
for(i=0;i<lon[k]-1;i++)
{
for(j=i+1;j<lon[k];j++)
{
if(numeros[k][i]>numeros[k][j])
{
mayor=numeros[k][i];
numeros[k][i]=numeros[k][j];
numeros[k][j]=mayor;
}
}
}
strcpy(asc,numeros[k]);
for(i=0;i<=lon[k]-1;i++)
{
for(j=0;j<=lon[k]-1;j++)
{
if(numeros[k][j]<numeros[k][j+1])
{
mayor=numeros[k][j];
numeros[k][j]=numeros[k][j+1];
numeros[k][j+1]=mayor;
}
}
}
strcpy(des,numeros[k]);
}
else
{ strcpy(des,numeros[k]);
strcpy(asc,numeros[k]);
}
restar(lon,k,asc,des,res);
fprintf(p,"\n%d - %d = %s",atoi(des),atoi(asc),res);
if(strcmpi(aux,res)!=0)
{ strcpy(aux,res);
}
else
encon=1;
strncpy(numeros[k],res,10);
contaux++;
}
fprintf(p,"\nTamaño de la cadena %d",contaux);
fprintf(p,"\n\n");
}
getch();
}
}while(opc!=3&&opc!=51);
return 0;
}
void restar(int lon[10], int k,char asc[10],char des[10],char res[10])
{ int i;
int auxdes,auxasc,auxres;
char aux[10];
auxdes=atoi(des);
auxasc=atoi(asc);
auxres=auxdes-auxasc;
itoa(auxres,aux,10);
strcpy(res,aux);
}