Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/03/2007, 14:04
endsamsara
 
Fecha de Ingreso: febrero-2007
Mensajes: 6
Antigüedad: 17 años, 3 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();
///////////
}