elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Ayuda con programa en C [Funciona y aveces se cae] en: 30 Junio 2012, 08:53 am
Hola amigos estoy buscado el error al siguiente código que estoy haciendo, me funciona aveces pero en ocasiones se me cae y no le puedo encontrar el error, el programa recibe un txt cuyo contenido es:


4

10 30 4 10
80 90 110 1
0 40 50 60
70 85 200 35



#include<math.h>
#include<stdio.h>

#define TRUE 1
#define FALSE 0

void print_solution(int n,int x[])
{
      char c[n][n];
      int i,j;
      for(i=1;i<=n;i++)
     {
         for(j=1; j<=n; j++)
        {
            c[j]='-';
        }
     }

    for(i=1;i<=n;i++)
   {
         c[x]='Q';
    }

    for( i=1;i<=n;i++)
   {
         for(j=1;j<=n;j++)
        {
              printf("%c",c[j]);
         }
         printf("\n");
    }
}


int place(int x[],int k)
{   
    int i;
    for(i=1;i<k;i++)
   {
         if(x==x[k]||i-x==k-x[k]||i+x==k+x[k])
         {
             return FALSE;
          }
   }
    return TRUE;
}



int main()
{
     FILE *entrada;
     entrada = fopen("Entrada.txt","r");
     if (entrada == NULL){  
     printf("\nError de apertura del archivo. \n\n");
     }else{   
     if(!feof(entrada))
    {
         int n,i,j;
         fscanf(entrada,"%d",&n);fflush(stdin);
         printf("%d",n);
         for(i = 1; i <= n; i++)
         {
             printf("\n");
             for(j = 1; j<=n; j++)
            {
                 fscanf(entrada,"%d",&g[j]);fflush(stdin);
                 printf("%d ",g[j]);
             }
          }
           int g[n][n];
          
          for(i = 1; i <= n; i++)
         {
               for(j = 1; j<=n; j++)
               {
                   fscanf(entrada,"%d",&g[j]);fflush(stdin);
                   printf("%d ",g[j]);
                }
          }

           int x[n];
           int count=0;
           int k=1;
           int suma = 0;
           x[k]=0;
           i = 1;


          while(k!=0)
          {
               if(k == 1){suma = 0;}
               x[k]=x[k]+1;
              
               while((x[k]<=n)&&(!place(x,k)))
              {
                  x[k]=x[k]+1;
               }
               if(x[k]<=n)
              {
                  suma = suma + g[x[k]];
                  if(k==n)
                  {
                       printf("\n\n\n\t%d",suma);
                       count++;
                       printf("\n\nSolution %d  is : \n\n",count);
                       print_solution(n,x);
                   }
                   else
                  {
                       k++;     
                       i++;
                       x[k]=0;
                   }
                }
                else
                {
                     k--;
                     i--;
                     if(x[k]<=n)
                     {
                         suma = suma - g[x[k]];
                      }
                  }
            }
        }
    }
fclose(entrada);
return 0;
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines