Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ignacio8550

#1
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;
}