• Domingo 19 de Mayo de 2024, 05:38

Autor Tema:  Re: Ayuda de alguien por favor  (Leído 1310 veces)

ralehuy

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Ayuda de alguien por favor
« en: Jueves 11 de Julio de 2002, 21:08 »
0
Necesito ayuda de alguien que pueda transformar este programa a algo mas simple ya que no se funciones
#include<stdio.h>
#define MAX 100
FILE *dat, *out;
void mostrar(char [][16]);
void marcar(char [][16],int,int,int,int);
void limpiar(char [][16]);
char datos[MAX], pantalla[16][16];
main(){
int i, j, x, h, x_inicio, x_fin, y_inicio, y_fin;
if((dat=fopen("dibu.dat","r"))==NULL)
  printf("Error de apertura del archivo 'dibu.dat'");
  else{
      i=-1;
      while(!feof(dat)){
      i++;
      datos=fgetc(dat);
      if((datos==32) || (datos==10) || (datos==13))
        i--;
      }
      fclose(dat);
      }

for(j=0;j<i;j++)
   printf("%c,",datos[j]);
limpiar(pantalla);
mostrar(pantalla);
if(datos[0]=='1'){
  x_inicio=y_inicio=1;
  x_fin=y_fin=8;
  }
if(datos[0]=='2'){
  x_inicio=9;
  x_fin=16;
  y_inicio=1;
  y_fin=8;
  }
if(datos[0]=='3'){
  x_inicio=y_inicio=9;
  x_fin=y_fin=16;
  }
if(datos[0]=='4'){
  x_inicio=1;
  x_fin=8;
  y_inicio=9;
  y_fin=16;
  }
x=1;
while(x!=i){
     while(datos
  • !='x'){

     if(datos
  • =='1')

       x_fin=y_fin=(0.5*(x_fin+x_inicio-1));
     if(datos
  • =='2'){

       x_inicio=(0.5*(x_fin+x_inicio+1));
       y_fin=(0.5*(y_fin+y_inicio-1));
       }
     if(datos
  • =='3')

       x_inicio=y_fin=(0.5*(x_fin+x_inicio+1));
     if(datos
  • =='4'){

       x_fin=(0.5*(x_fin+x_inicio-1));
       y_inicio=(0.5*(y_fin+y_inicio+1));
       }
     x++;
     }
     marcar(pantalla,x_inicio,x_fin,y_inicio,y_fin);
     mostrar(pantalla);
     printf("ja0ja0a");
     }
printf("ja0ja0a");
mostrar(pantalla);
return 0;
}
void mostrar(char pantalla[][16]){
int i,j;
for(i=0;i<=16;i++){
   printf("n");
   for(j=0;j<=16;j++)
      printf("%c",pantalla[j]);
   }
}
void limpiar(char pantalla[][16]){
int i, j;
for(i=0;i<=16;i++)
   for(j=0;j<=16;j++)
      pantalla[j]='o';

}
void marcar(char pantalla[][16], int q, int w, int e, int r){
int t, y;
for(t=q;t<=w;t++)
   for(y=e;y<=r;y++)
      pantalla[t][y]='x';
}

bench

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Ayuda de alguien por favor
« Respuesta #1 en: Viernes 19 de Julio de 2002, 05:04 »
0
#include<stdio.h>
#define MAX 100
FILE *dat, *out;
void mostrar(char [][16]);
void marcar(char [][16],int,int,int,int);
void limpiar(char [][16]);
char datos[MAX], pantalla[16][16];
main()
{
  int i, j, x, h, x_inicio, x_fin, y_inicio, y_fin;
  if((dat=fopen("dibu.dat","r"))==NULL)
  printf("Error de apertura del archivo 'dibu.dat'");
  else
   {
     i = 0;
     while(!feof(dat))
       {
        /* i++; */
       /*******************
       Datos es Un Puntero a Un arreglo de  MAX caracteres y le estas asignando el
retorno de la función fgets que es un int o un char.
       *******************/
       datos = fget(dat); /*datos = fgetc(dat);*/
        if((datos == 32) || (datos == 10) ||   (datos == 13)) continue;
        i++;
       }
     fclose(dat);
    }
 for(j = 0; j < i; j++) printf("%c,",datos[j]);
 limpiar(pantalla);
 mostrar(pantalla);
 if(datos[0] == '1')
 {
  x_inicio = y_inicio = 1;
  x_fin = y_fin = 8;
 }
 if(datos[0] == '2')
 {
  x_inicio = 9;
  x_fin = 16;
  y_inicio = 1;
  y_fin = 8;
  }
 if(datos[0] == '3')
 {
  x_inicio = y_inicio = 9;
  x_fin=y_fin = 16;
  }
 if(datos[0] == '4')
  {
   x_inicio=1;
   x_fin=8;
   y_inicio=9;
   y_fin=16;
   }
  x = 1;
  while(x != i)
    {
     while(datos
  • != 'x')

       {
        if(datos
  • == '1')

        /*****
        Incorrecto Por Ser Variables Int
        Para Multiplicarlas Por 0.5 deben ser declaradas como float o como double
*******************************/
        x_fin = y_fin = (0.5*(x_fin+x_inicio-1));
if(datos
  • =='2'){

x_inicio=(0.5*(x_fin+x_inicio+1));
y_fin=(0.5*(y_fin+y_inicio-1));
}
/***
Desoues continuo.
*****/
if(datos
  • =='3')

x_inicio=y_fin=(0.5*(x_fin+x_inicio+1));
if(datos
  • =='4'){

x_fin=(0.5*(x_fin+x_inicio-1));
y_inicio=(0.5*(y_fin+y_inicio+1));
}
x++;
}
marcar(pantalla,x_inicio,x_fin,y_inicio,y_fin);
mostrar(pantalla);
printf("ja0ja0a");
}
printf("ja0ja0a");
mostrar(pantalla);
return 0;
}
void mostrar(char pantalla[][16]){
int i,j;
for(i=0;i<=16;i++){
printf("n");
for(j=0;j<=16;j++)
printf("%c",pantalla[j]);
}
}
void limpiar(char pantalla[][16]){
int i, j;
for(i=0;i<=16;i++)
for(j=0;j<=16;j++)
pantalla[j]='o';

}
void marcar(char pantalla[][16], int q, int w, int e, int r){
int t, y;
for(t=q;t<=w;t++)
for(y=e;y<=r;y++)
pantalla[t][y]='x';
}