• Viernes 8 de Noviembre de 2024, 20:09

Autor Tema:  Ayuda Con Metodo Burbuja  (Leído 1077 veces)

sicaliptico89

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Ayuda Con Metodo Burbuja
« en: Domingo 22 de Abril de 2007, 07:04 »
0
Ya hace un tiempo acudi a ustedes y me pudieron ayudar!! espero q esta vez sea igual.
Tengo un proyecto q tiene q leer un archivo .in se tiene q llamar entrada.in y hay q ingresarles numeros en cada linea..
por lo menos

1234
444
0
123456789

luego el progrma los debe ordenar de mayor a menor y restarlos
4321 - 1234 = 3087

Luego el resultado volverlo a ordenar y restarlo
8730 - 378 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174

Y asi hasta que el resultado se repita consecutivamente.

Y luego guardarlo en un archivo salida.out

El problema es que con algunos numeros como el 100 no me hace bien la resta.. y por lo visto es por el metodo de ordenamiento que estoy usando.. q cambiarlo ha esta hora no seria conveniente, entonces me gustaria a ver si le dan un vistaso al codigo a ver q me dicen porq lo tengo q entregar el lunes.. MUCHAS GRACIAS DNUEVO.

Código: Text
  1.  
  2.  //---------------------------------------------------------------------------
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <string.h>
  6. #include <stdlib.h>
  7. #pragma hdrstop
  8.  
  9. //---------------------------------------------------------------------------
  10.  
  11. #pragma argsused
  12. void restar(int lon[10], int k,char asc[10],char des[10],char *res);
  13. void cabecera()
  14. {printf("\t\n");
  15. printf("\t .oPYo.                                     o           .oPYo.\n");
  16. printf("\t 8    8                                     8               `8\n");
  17. printf("\to8YooP' oPYo. .oPYo. o    o .oPYo. .oPYo.  o8P .oPYo.     .oP'\n");
  18. printf("\t 8      8  `' 8    8 8    8 8oooo8 8    '   8  8    8      `b.\n");
  19. printf("\t 8      8     8    8 8    8 8.     8    .   8  8    8       :8\n");
  20. printf("\t 8      8     `YooP' `YooP8 `Yooo' `YooP'   8  `YooP'   `YooP'\n");
  21. printf("\t:..:::::..:::::.....::....8 :.....::.....:::..::.....::::.....:\n");
  22. printf("\t:::::::::::::::::::::::ooP'.:::::::::::::::::::::::::::::::::::\n");
  23. printf("\t:::::::::::::::::::::::...:::::::::::::::::::::::::::::::::::::\n");
  24. }
  25. int menu(){
  26.         int opc;
  27.         printf("\n");
  28.         cabecera();
  29.         printf("\n\t   Menu");
  30.         printf("\n\t1. Realizar lectura del archivo entrada.in");
  31.         printf("\n\t2. Generar archivo salida.out");
  32.         printf("\n\t3. Salir ");
  33.         scanf("%d",&opc);
  34.         return opc;
  35. }
  36. void menu2(char *opc,int *opc2)
  37. {       printf("\n");
  38.         cabecera();
  39.         printf("\n\t   Menu");
  40.         printf("\n\t1. Realizar lectura del archivo entrada.in");
  41.         printf("\n\t2. Generar archivo salida.out");
  42.         printf("\n\t\ta. Crear en la misma carpeta");
  43.         printf("\n\t\tb. Crear en nuevo directorio");
  44.         printf("\n\t3. Salir ");
  45.         *opc=getch();
  46.         if(*opc!='a' || *opc!='b')
  47.         {       *opc2=*opc;
  48.         }
  49. }
  50. int main(int argc, char* argv[])
  51. {       int opc=0,i=0,cont=0,lon[10],j=0,k=0,contaux,opc2,encon=0,auxatoi;
  52.         char numeros[10][20];
  53.         char mayor,opcaux;
  54.         char directorio[100];
  55.         char asc[10],des[10],res[10]="\0",aux[10]="\0";
  56.         FILE *p;
  57.         do{     clrscr();
  58.                 opc=menu();
  59.                 switch(opc)
  60.                 {       case 1: clrscr();
  61.                                 p=fopen("entrada.in","r");
  62.                                 if(p==NULL)
  63.                                         printf("Error al abrir el archivo");
  64.                                 else
  65.                                 {       printf("Ya se encontro y leyo el archivo");
  66.                                         do{
  67.                                                 fscanf(p,"%s",numeros[i]);
  68.                                                 lon[i]=strlen(numeros[i]);
  69.                                                 i++;
  70.                                                 cont++;
  71.                                         }while(!feof(p));
  72.                                         encon=1;
  73.                                 }
  74.                                 /*for(i=0;i<cont;i++)
  75.                                 {
  76.                                      printf("\n%s",numeros[i]);
  77.                                 } */
  78.                                 printf("\n");
  79.                                 i=0;
  80.                                 fclose(p);
  81.                                 getch();
  82.                                 break;
  83.  
  84.                         case 2: clrscr();
  85.                                 menu2(&opcaux,&opc);
  86.                                 if(encon==0)
  87.                                 {       clrscr();
  88.                                         printf("Debe abrir primero el archivo");
  89.                                         getch();
  90.                                         break;
  91.  
  92.                                 }
  93.                                 if(opcaux=='a'){
  94.                                         clrscr();
  95.                                         k=0;
  96.                                         p=fopen("salida.out","a");
  97.                                         if(p!=NULL)
  98.                                                 printf("Ya se genero el archivo");
  99.                                         else
  100.                                                 printf("No se pudo crear el archivo");
  101.                                 }
  102.                                 if(opcaux=='b'){
  103.                                         clrscr();
  104.                                         k=0;
  105.                                         printf("Ingrese el directorio y el nombre con el que quiere guardar el archivo: ");
  106.                                         scanf("%s",directorio);
  107.                                         p=fopen(directorio,"a");
  108.                                         if(p!=NULL)
  109.                                                 printf("Ya se genero el archivo");
  110.                                 }
  111.                         for(k=0;k<cont;k++)
  112.                         {       int encon=0;
  113.                                 fprintf(p,"En numero original era %s",numeros[k]);
  114.                                 contaux=0;
  115.                                 strcpy(aux,"\0");
  116.                             //    auxatoi=atoi(numeros[k]);
  117.                               //  strcpy(numeros[k],itoa(auxatoi,numeros[k],10));
  118.                                 while(encon==0){
  119.                                         for(i=0;i<lon[k]-1;i++)
  120.                                         {       asc[i]=0;
  121.                                                 des[i]=0;
  122.                                         }
  123.  
  124.                                         if(strlen(numeros[k])>1)
  125.                                         {
  126.  
  127.                                         for(i=0;i<lon[k]-1;i++)
  128.                                         {
  129.                                           for(j=i+1;j<lon[k];j++)
  130.                                           {
  131.                                             if(numeros[k][i]>numeros[k][j])
  132.                                             {
  133.                                       mayor=numeros[k][i];
  134.                                       numeros[k][i]=numeros[k][j];
  135.                                       numeros[k][j]=mayor;
  136.                                                         }
  137.                                           }
  138.                                         }
  139.                                         strcpy(asc,numeros[k]);
  140.                                         for(i=0;i<=lon[k]-1;i++)
  141.                                         {
  142.                                           for(j=0;j<=lon[k]-1;j++)
  143.                                           {
  144.                                             if(numeros[k][j]<numeros[k][j+1])
  145.                                             {
  146.                                       mayor=numeros[k][j];
  147.                                       numeros[k][j]=numeros[k][j+1];
  148.                                       numeros[k][j+1]=mayor;
  149.                                                         }
  150.                                           }
  151.                                         }
  152.                                         strcpy(des,numeros[k]);
  153.                                         }
  154.                                         else
  155.                                         {       strcpy(des,numeros[k]);
  156.                                                 strcpy(asc,numeros[k]);
  157.  
  158.                                         }
  159.  
  160.                                         restar(lon,k,asc,des,res);
  161.                                         fprintf(p,"\n%d - %d = %s",atoi(des),atoi(asc),res);
  162.                                         if(strcmpi(aux,res)!=0)
  163.                                         {       strcpy(aux,res);
  164.                                         }
  165.                                         else
  166.                                         encon=1;
  167.                                         strncpy(numeros[k],res,10);
  168.                                         contaux++;
  169.  
  170.                                 }
  171.                                 fprintf(p,"\nTamaño de la cadena %d",contaux);
  172.                                 fprintf(p,"\n\n");
  173.                         }
  174.  
  175.                         getch();
  176.  
  177.  
  178.  
  179.  
  180.                 }
  181.  
  182.         }while(opc!=3&&opc!=51);
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.         return 0;
  190. }
  191. void restar(int lon[10], int k,char asc[10],char des[10],char res[10])
  192. {       int i;
  193.         int auxdes,auxasc,auxres;
  194.         char aux[10];
  195.         auxdes=atoi(des);
  196.         auxasc=atoi(asc);
  197.         auxres=auxdes-auxasc;
  198.         itoa(auxres,aux,10);
  199.         strcpy(res,aux);
  200.  
  201. }
  202.  
  203.  
  204.  

Esta elaborado en Builderc++