Programación General > C/C++
Re: Ayuda de alguien por favor
(1/1)
ralehuy:
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]!='x'){
if(datos[x]=='1')
x_fin=y_fin=(0.5*(x_fin+x_inicio-1));
if(datos[x]=='2'){
x_inicio=(0.5*(x_fin+x_inicio+1));
y_fin=(0.5*(y_fin+y_inicio-1));
}
if(datos[x]=='3')
x_inicio=y_fin=(0.5*(x_fin+x_inicio+1));
if(datos[x]=='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:
#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] != 'x')
{
if(datos[x] == '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[x]=='2'){
x_inicio=(0.5*(x_fin+x_inicio+1));
y_fin=(0.5*(y_fin+y_inicio-1));
}
/***
Desoues continuo.
*****/
if(datos[x]=='3')
x_inicio=y_fin=(0.5*(x_fin+x_inicio+1));
if(datos[x]=='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';
}
Navegación
Ir a la versión completa