Foros del Web » Programación para mayores de 30 ;) » C/C++ »

mostrar el resultado de una funcion dentro de un rectangulo

Estas en el tema de mostrar el resultado de una funcion dentro de un rectangulo en el foro de C/C++ en Foros del Web. Hola estoy haciendo un programa que contiene un menu y unos rectangulos, el programa funciona mas o menos asi: despues de oprimir la tecla F1 ...
  #1 (permalink)  
Antiguo 21/03/2007, 11:42
 
Fecha de Ingreso: febrero-2007
Mensajes: 6
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta mostrar el resultado de una funcion dentro de un rectangulo

Hola estoy haciendo un programa que contiene un menu y unos rectangulos,
el programa funciona mas o menos asi:

despues de oprimir la tecla F1 se manda a llamar la funcion inserta(); entonces el programa obtiene datos que el usuario le proporcionara.

despues esos mismos datos que se recolectaron seran mostrados dentro del rectangulo "esta es mi pregunta con que funcion muestro el resultado de una funcion dentro del rectangulo?????????????????

outtextxy(20,20, depliega(...)); ??????????????????????????


/////////////////////////////////////////////
int menu()
{
char opc;
clrscr();
printf("\n\n MENU:\n\n\n");
printf("<<F1>> Inserta un proceso \n");
printf("<<F2>> Aborta un proceso \n");
printf("<<ESC>> Salir \n");

opc=getch();
if ( (int) opc==0 )
opc=getch();
return( (int) opc);
}
////////////////////////////////////////////////////////////////////
///////////////////////funcion inicia grafica//////////////////////
void iniciar_grafica()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "C:\\TC\\BGI");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Error de grafica: %s\n", grapherrormsg(errorcode));
printf("presione una tecla para terminar:");
getch();
exit(1);
}
}
/////////////////////////////////////////////////////////////////////
void main()
{
//
iniciar_grafica();
//

rectangle(20,80,250,350);
rectangle(420,100,300,350);
rectangle(440,100,550,350);
outtextxy(10,20,"SIMULACION DE UN PROCESADOR");
outtextxy(290,80,"Procesos Activos");
outtextxy(440,80,"Procesos Inactivos");

printf("\n Inserta <<F1>>");
printf("\n Aborta <<F2>>");
printf("\n Salir <<ESC>>");
getch();
//
int accion=0;
while(accion!=ESC)
{
accion=menu();
clrscr();
switch(accion)
{
case F1: printf("\n\n Inserta un nuevo proceso\n\n");
inserta(...);
getch();
break;


case F2: printf("\n\n Aborta un proceso\n");
aborta(...);
getch();
break;

case ESC: printf("\n\n Usted va a salir");
getch();
break;
default: printf(" !!!!!!LA OPCION TECLEADA NO ES VALIDA?????\n\n");
printf("Presione cualquier tecla para continuar...");
getch();

}
getch();
}
closegraph();

}
//////////////////////////////////////////////////////////////////////
  #2 (permalink)  
Antiguo 21/03/2007, 13:33
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: mostrar el resultado de una funcion dentro de un rectangulo

Simplemete imprime el contenido de la variable en una posicion que este en el interior del rectangulo, para pasar todo a una cadena de caracteres puedes usar sprintf, y luego con la funcion outtextxy imprimes el texto donde quieras, si son varias lineas has los ajustes correspondientes.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 21/03/2007, 13:51
 
Fecha de Ingreso: febrero-2007
Mensajes: 6
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta Re: mostrar el resultado de una funcion dentro de un rectangulo

Simplemete imprime el contenido de la variable en una posicion que este en el interior del rectangulo, para pasar todo a una cadena de caracteres puedes usar sprintf, y luego con la funcion outtextxy imprimes el texto donde quieras, si son varias lineas has los ajustes correspondientes.


entonces una funcion que hice que se llama despliega y que muestra el contenido de los datos dados por el usuario quedaria asi?

sprintf(struct *Lista,"%s",despliega(...))??????????'
  #4 (permalink)  
Antiguo 21/03/2007, 13:58
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: mostrar el resultado de una funcion dentro de un rectangulo

No, que tipo de valor retorna la cunfion despliega?

¿que es Lista?
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 21/03/2007, 14:04
 
Fecha de Ingreso: febrero-2007
Mensajes: 6
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta Re: mostrar el resultado de una funcion dentro de un rectangulo

Bueno voy a poner todo el codigo q he estado haciendo
se supone que el usuario debe proporcionar:

nombre,montode memoria, tiempo.. etc.. como datos al presionar F1
"estos datos los estoy manejando como Lista"

a esos datos que proporciono el usuario los logro desplegar con una funcion
depliega(Lista) pero lo que quiero es que se despliegen dentro del rectangulo que hice

no encuentro como hacerlo

#include <graphics.h>
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define F1 59
#define F2 60
#define ESC 27

struct Informacion{
char nombre[50];
char montodememoria[100];
char tiempodecalculo[100];
char archivosabiertos[100];
};

struct Nodo{
struct Informacion info;
struct Nodo *sig;
};

/////////////////////////////////////////////////////////////////////////
///////////////////////////Crea Nodo////////////////////////////////////
struct Nodo *creanodo(struct Informacion data)
{
struct Nodo *aux;
aux=(struct Nodo *)malloc(sizeof(struct Nodo));
strcpy(aux->info.nombre,data.nombre);
strcpy(aux->info.montodememoria,data.montodememoria);
strcpy(aux->info.tiempodecalculo,data.tiempodecalculo);
strcpy(aux->info.archivosabiertos,data.archivosabiertos);
return(aux);
}
///////////////////////////////////////////////////////////////////////
///////////////////////funcion Inserta/////////////////////////////////
void inserta(struct Nodo **Lista, struct Informacion data, int pos)
{
struct Nodo *aux;
struct Nodo *aux2;

if ((pos==1) || (*Lista==NULL))
{
aux=creanodo(data);
aux->sig=*Lista;
*Lista=aux;
}
else{
int i=1;
aux=*Lista;
while (i!=pos-1 && aux!=NULL)
{
aux2=aux;
aux=aux->sig;
i=i+1;
}
if (aux==NULL)
aux2->sig=creanodo(data);
else{
aux2=creanodo(data);
aux2->sig=aux->sig;
aux->sig=aux2;
}
}
}
////////////////////////////////////////////////////////////////
/////////////////////Funcion Despliega//////////////////////////
void despliega(struct Nodo *Lista)
{
struct Nodo *aux;
aux=Lista;
while(aux!=NULL)
{
printf("\n\n%s", aux->info.nombre);
printf("\n\n%s", aux->info.montodememoria);
printf("\n%s", aux->info.tiempodecalculo);
printf("\n%s", aux->info.archivosabiertos);
aux=aux->sig;
}
}
/////////////////////////////////////////////////////////////////
int menu()
{
char opc;
clrscr();
printf("\n\n MENU:\n\n\n");
printf("<<F1>> Inserta un proceso \n");
printf("<<F2>> Aborta \n");
printf("<<ESC>> Salir \n");

opc=getch();
if ( (int) opc==0 )
opc=getch();
return( (int) opc);
}
////////////////////////////////////////////////////////////////////
///////////////////////funcion inicia grafica//////////////////////
void iniciar_grafica()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "C:\\TC\\BGI");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Error de grafica: %s\n", grapherrormsg(errorcode));
printf("presione una tecla para terminar:");
getch();
exit(1);
}
}
/////////////////////////////////////////////////////////////////////
void main()
{
struct Nodo *Lista=NULL;
struct Informacion data;
int pos;
//
iniciar_grafica();
//

rectangle(20,80,250,350);
rectangle(420,100,300,350); //(ESQUINA SUPERIOR IZQUIERDA, ESQUINA INFERIOR DERECH)
rectangle(440,100,550,350);
outtextxy(10,20,"SIMULACION DE UN PROCESADOR");
outtextxy(290,80,"Procesos Activos");
outtextxy(440,80,"Procesos Inactivos");

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n Inserta <<F1>>");
printf("\n Aborta <<F2>>");
printf("\n Salir <<ESC>>");
getch();
//
int accion=0;
while(accion!=ESC)
{
accion=menu();
clrscr();
switch(accion)
{
case F1: printf("\n\n Inserta un nuevo proceso\n\n");
printf("\Proporcione:\n");
printf("\nNombre del programa: ");
scanf("%s", &data.nombre);
printf("\nMonto de Memoria: ");
scanf("%s", &data.montodememoria);
printf("\nTiempo de Calculo: ");
scanf("%s", &data.tiempodecalculo);
printf("\nArchivos Abiertos: ");
scanf("%s", &data.archivosabiertos);
printf("\Posicion??: ");
scanf("%s", &pos);
inserta(&Lista, data, pos);
printf("\n***Proceso incluido!!! \n");
break;


case F2: printf("\n\n Aborta un proceso\n");
printf("\Proporcione el numero de registro que desea Abortar:\n");
// scanf("%d",&pos);
despliega(Lista);
// getch();
break;

case ESC: printf("\n\n Usted va a salir");
getch();
break;
default: printf(" !!!!!!LA OPCION TECLEADA NO ES VALIDA?????\n\n");
printf("Presione cualquier tecla para continuar...");
getch();
//

}
getch();
}
//////////////
closegraph();
///////////
}
  #6 (permalink)  
Antiguo 21/03/2007, 19:31
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: mostrar el resultado de una funcion dentro de un rectangulo

En todo caso lo que debes cambiar es el metodo despliega y hacer que en vez de mostrarte la info con el printf lo haga con outtextxy en el recuadro que quieres.

No puedes pasarle esta funcion como parametroa outtext.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:56.