void DeduccionDialog::on_aceptarPushButton_clicked()
{
    if (validarDatos())
    {
        codigo = ui->codigoLineEdit->text();
        cantidad = ui->cantidadSpinBox->value();
        accept();
    }
}
void EmpleadoWidget::on_accionPushButton_clicked()
{
    if (validarDatos())
    {
        if (state == State::agregar)
            agregarEmpleado();
        else if (state == State::modificar)
            modificarEmpleado();
    }
}
void AnticipoWidget::on_procesarPushButton_clicked()
{
    if (validarDatos())
    {
        if (InsertAnticipo())
        {
            this->close();
        }
    }

}
void ingresoDeDatos()
{
	/* Variables locales */
	int salir = 0;		/* Mientras sea 1, se mantiene en el bucle */
	int entrada = 1;	/* Variable donde se almacenan las entradas del teclado */

						/* Pide ingresar el nombre de la variable */
	setColor(WHITE);
	system("cls");
	printf("\n\t\t\tPrograma estadistico");
	printf("\n\nIngrese el nombre de la variable: ");
	gets(NombreVariable);
	printf("Variable \"%s\" registrada!\n\n", NombreVariable);
	Sleep(500);

	gotoxy(60, 1);
	setColor(CYAN);
	printf("Iniciando...", o);
	gotoxy(3, 10);
	setColor(YELLOW);
	printf("Cargando programa");
	puntitos(200, 5);
	printf("\n\n  Programa listo, presiona enter para continuar!");

	gotoxy(1, 20);
	setColor(RED);
	hidecursor();
	printf("si deseas cancelar, presiona: CONTROL+C");
	entrada = _getche();
	if (entrada == 3) { main(); }


	int indiceDato = 0;
	do
	{
		setColor(WHITE);
		char Dato_cadena[MAX_LENGHT] = { '\0' };
		system("cls");
		setColor(CYAN);
		printf("Variable: %s", NombreVariable);
		gotoxy(60, 1);
		setColor(GREEN);
		printf("En ejecuci%cn.", o);
		gotoxy(0, 0);
		setColor(WHITE);
		printf("\n\t\t\tPrograma estadistico\n\n");
		showcursor();
		printf("Ingresa el dato cuantitativo a registrar:");
		gets(Dato_cadena);

		if (validarDatos(Dato_cadena))
		{
			/* Convierte el Dato_cadena a entero*/
			Datos[indiceDato] = atoi(Dato_cadena);
			indiceDato++;

			/* Muestra los datos ingresados en pantalla */
			for (int i = 0; i < (int)sizeof(Datos) / (int)sizeof(Datos[0]); i++)
			{
				if (Datos[i] != 0)
				{
					printf(" %d, ", Datos[i]);
				}
			}
			gotoxy(4, 15);
			printf("ESCAPE para terminar");
			printf("\t\t\tENTER para continuar");
			/* Lee las 'teclas' del teclado */
			for (;;)
			{
				hidecursor();
				entrada = getkey();
				/*printf("%d\n", entrada);*/
				if (entrada == 0)				/* ESCAPE  0*/
				{
					salir = 0; break;
				}
				if (entrada == 1)				/* ENTER 1*/
				{
					salir = 1; break;
				}
			}
		}
		else
		{
			salir = 1;
		}
		showcursor();
	} while (salir == 1);
}
示例#5
0
文件: main.c 项目: fetux/simuladorSCP
/**
 * Función principal del programa.
 * @param argc Cantidad de argumentos recibidos en la ejecución
 * @param argv Arreglo con los argumentos recibidos en la ejecución
 * @return Devuelve 0 (cero) si el programa finaliza con éxito
 */
int main(int argc, char *argv[])
{


	PROCESOS rp=NULL;
	EVENTOS re=NULL;
	SYSIND rs; // No lo inicializo porque es solo un struct

	/*
	 *
	 * Verificación de los parámetros de entrada
	 *
	 */
	printf("Verificando parámetros...\n");
	if (!comprobarParametros(argc,argv)) return 1;


	/*
	 *
	 * Carga de los archivos de entrada del programa.
	 *
	 */


	// Variables para almacenar las posiciones de los archivos de entrada
	int ap=0,aio=0,aprec=0;

	PROCESOSIN procesosIN=NULL;
	IOSIN iosIN=NULL;
	PRECSIN precsIN=NULL;


	printf("Cargando archivos de entrada...\n");
	//Busco las posiciones de los parámetros donde estan los archivos de entrada.
	int i;	
	for (i=1; i<argc; i+=2)
	{
		if (!strcmp(argv[i],"-p")) ap=i+1;
		else
			if (!strcmp(argv[i],"-io")) aio=i+1;
			else
				if (!strcmp(argv[i],"-prec")) aprec=i+1;
	}

	//printf("Parámetros de entrada: %d - %d - %d\n",ap,aio,aprec);

	// Verifico todas las combinaciones de opciones de parámetros de entrada disponibles
	// en base a si un parámetro de entrada esta o no.
	if (ap == 0 && aio == 0 && aprec == 0)
	{
		if (!cargarArchivos("procesos.txt","io.txt","precedencia.txt",&procesosIN,&iosIN,&precsIN)) return 1;
	}
	else
	{
		if (ap == 0 && aio == 0 && aprec != 0)
		{
			if (!cargarArchivos("procesos.txt","io.txt",argv[aprec],&procesosIN,&iosIN,&precsIN)) return 1;
		}
		else
		{
			if (ap == 0 && aio !=0 && aprec == 0)
			{
				if (!cargarArchivos("procesos.txt",argv[aio],"precedencia.txt",&procesosIN,&iosIN,&precsIN)) return 1;
			}
			else
			{
				if (ap == 0 && aio != 0 && aprec != 0)
				{
					if (!cargarArchivos("procesos.txt",argv[aio],argv[aprec],&procesosIN,&iosIN,&precsIN)) return 1;
				}
				else
				{
					if (ap != 0 && aio == 0 && aprec == 0)
					{
						if (!cargarArchivos(argv[ap],"io.txt","precedencia.txt",&procesosIN,&iosIN,&precsIN)) return 1;
					}
					else
					{
						if (ap != 0 && aio == 0 && aprec != 0)
						{
							if (!cargarArchivos(argv[ap],"io.txt",argv[aprec],&procesosIN,&iosIN,&precsIN)) return 1;
						}
						else
						{
							if (ap != 0 && aio != 0 && aprec == 0)
							{
								if (!cargarArchivos(argv[ap],argv[aio],"precedencia.txt",&procesosIN,&iosIN,&precsIN)) return 1;
							}
							else
							{
								if (ap != 0 && aio != 0 && aprec != 0)
								{
									if (!cargarArchivos(argv[ap],argv[aio],argv[aprec],&procesosIN,&iosIN,&precsIN)) return 1;
								}
							}
						}
					}
				}
			}
		}
	}


	/*
	 * Validación de los datos
	 */

	printf("Validando los datos de entrada...\n");
	if (!validarDatos(procesosIN,iosIN,precsIN))
	{
		printf("Los datos de entrada son inválidos!\n");
		return 1;
	}
	else
	{
		printf("Los datos fueron validados con éxito!\n");
	}

	/*
	 * Comprobación de las listas de entrada (solo en desarrollo - comentar para publicación)
	 */
	PROCESOSIN pin=procesosIN;
	IOSIN iosin=iosIN;
	PRECSIN precsin=precsIN;

	while(pin != NULL)
	{
		printf("PROCESO\n");
		printf("PID %d\n",pin->pid);
		printf("ARRIBO %d\n",pin->arribo);
		printf("T CPU %d\n",pin->Tcpu);
		printf("\n");
		pin = pin->sig;
	}

	while(iosin != NULL)
	{
		printf("I/O\n");
		printf("PID %d\n",iosin->pid);
		printf("INSTANTE %d\n",iosin->instante);
		printf("T RES %d\n",iosin->tiempo);
		printf("\n");
		iosin = iosin->sig;
	}

	while(precsin != NULL)
	{
		printf("PRECEDENCIA\n");
		printf("PRECEDENTE %d\n",precsin->precedente);
		printf("PRECEDIDO %d\n",precsin->precedido);
		printf("\n");
		precsin = precsin->sig;
	}

	/*
	 *
	 * Inicializar los procesos que se van a simular
	 *
	 */

	pin = procesosIN;
	PROCESOS procesos=NULL,ultimo;

	while(pin != NULL)
	{
		if (procesos == NULL)
		{
			procesos = (PROCESOS)malloc(sizeof(PROCESO));
			procesos->pid = pin->pid;
			procesos->tcpu = pin->Tcpu;
			procesos->necesidad = pin->Tcpu;
			procesos->arribo = pin->arribo;
			procesos->turnAround = 0;
			procesos->tResp = 0;
			procesos->tEListos = 0;
			procesos->tESync = 0;
			procesos->tETotal = 0;
			procesos->tEDisp = 0;
			procesos->semaforos = cargarSemaforos(precsIN,pin->pid);
			procesos->sig = NULL;
			ultimo = procesos;
		}
		else
		{
			ultimo->sig = (PROCESOS)malloc(sizeof(PROCESO));
			ultimo = ultimo->sig;
			ultimo->pid = pin->pid;
			ultimo->tcpu = pin->Tcpu;
			ultimo->necesidad = pin->Tcpu;
			ultimo->arribo = pin->arribo;
			ultimo->turnAround = 0;
			ultimo->tResp = 0;
			ultimo->tEListos = 0;
			ultimo->tESync = 0;
			ultimo->tETotal = 0;
			ultimo->tEDisp = 0;
			ultimo->semaforos = cargarSemaforos(precsIN,pin->pid);
			ultimo->sig = NULL;
		}
		pin = pin->sig;
	}

	SEMAFOROS s;
	ultimo = procesos;
	while(ultimo!=NULL)
	{
		printf("PROCESO\n");
		printf("PID: %d\n",ultimo->pid);
		printf("NEC: %d\n",ultimo->necesidad);
		printf("Semaforos\n");
		s = ultimo->semaforos;
		while (s!=NULL)
		{
			printf("Tipo: %c\n",s->tipo);
			printf("Nombre: %c\n",s->nombre);
			printf("Estado: %d\n\n",s->valor);
			s = s->sig;
		}

		ultimo = ultimo->sig;
	}

	/*
	 *
	 * Creación de la lista de System Calls
	 *
	 */


	SCALLS systemcalls,actSC;
	EVENTOS eventos;


	systemcalls = systemCalls(procesos,iosIN);
	actSC = systemcalls;

	/* Comprobación de la lista de system calls * --- SOLO EN DESARROLLO - COMENTAR PARA PUBLICACIÓN */
	printf("\nTABLA DE SYSTEM CALLS\n");
	printf("----------------------\n");
	printf("PID\t\tINSTATNTE\tRESOL\t\tTIPO\t\tSEMAFORO\n");
	while (actSC != NULL)
	{
		printf("%d\t\t%d\t\t%d\t\t%s\t\t%c\n",actSC->pid,actSC->instante,actSC->resolucion,actSC->tipo,actSC->semaforo);
		actSC = actSC->sig;
	}


	/*
	 *
	 * Inicializar la lista de eventos con los arribos de los procesos
	 *
	 */
	EVENTOS ant=NULL,act,nuevo;
	eventos = NULL;
	pin=procesosIN;
	while(pin != NULL)
	{
		act = eventos;
		while(act != NULL && act->instante <= pin->arribo)
		{
			ant = act;
			act = act->sig;
		}
		if (eventos == NULL)
		{
			eventos = (EVENTOS) malloc(sizeof(EVENTO));
			eventos->pid=pin->pid;
			eventos->instante=pin->arribo;
			strcpy(eventos->codigo,"ANP");
			eventos->semaforo = '-';
			eventos->sig=NULL;
			//ultEvento = eventos;
		}
		else
		{
			nuevo = (EVENTOS) malloc(sizeof(EVENTO));
			//ultEvento = ultEvento->sig;
			nuevo->pid=pin->pid;
			nuevo->instante=pin->arribo;
			strcpy(nuevo->codigo,"ANP");
			nuevo->semaforo = '-';
			nuevo->sig=act;
			ant->sig = nuevo;
		}

		pin = pin->sig;
	}


	//Muestro la tabla inicial de eventos

	act = eventos;
	printf("TABLA DE EVENTOS INICIAL\n");
	printf("------------------------\n");
	while (act!=NULL)
	{
		printf("%d\t\t%d\t\t%s\t\t%c\n",act->pid,act->instante,act->codigo,act->semaforo);
		act = act->sig;
	}







	/*
	 *
	 * Menú de opciones del programa.
	 *
	 * */

	int opcion;
	int arp=0,are=0,ars=0;

	do
	{
		printf("Presione una tecla para volver al menú\n");
		getchar();getchar();
		system("clear");
		printf("******************************************************************\n");
		printf("           SIMULACIÓN DE PLANEAMIENTO A CORTO PLAZO\n");
		printf("******************************************************************\n");
		printf("\n");
		printf("\n");
		printf("Menu\n");
		printf("----\n\n\n");
		printf("1) Simulación paso a paso.\n");
		printf("2) Generar directamente resultados de la simulación\n");
		printf("3) Salir inmediatamente!\n");
		printf("\n");
		printf("\n");
		do
		{
			printf("Seleccione una opcion: ");
			scanf("%d",&opcion);
		}
		while (opcion != 1 && opcion != 2 && opcion != 3);
		switch (opcion)
		{
			case 1:
				system("clear");
				printf("Iniciando simulación paso a paso...\n");
				simular(procesos,systemcalls,eventos,1,&rp,&re,&rs);
				printf("Simulación paso a paso finalizada.\n");
				break;

			case 2:
				system("clear");
				printf("Iniciando simulación...\n");
				simular(procesos,systemcalls,eventos,0,&rp,&re,&rs);
				printf("Simulación finalizada.\n");
				break;
		}
		if (opcion != 3)
		{
			printf("Generando resultados...\n");
			//Busco las posiciones de los parámetros donde estan los archivos de entrada.
			for (i=1; i<argc; i+=2)
			{
				if (!strcmp(argv[i],"-rp")) arp=i+1;
				else
					if (!strcmp(argv[i],"-rs")) ars=i+1;
					else
						if (!strcmp(argv[i],"-ev")) are=i+1;
			}

			// Verifico todas las combinaciones de opciones de parámetros de salida disponibles
			// en base a si un parámetro de entrada esta o no.
			if (arp == 0 && ars == 0 && are == 0)
			{
				if (!escribirResultados("proc-ind.txt","sys-ind.txt","trace.txt",rp,rs,re)) return 1;
			}
			else
			{
				if (arp == 0 && ars == 0 && are != 0)
				{
					if (!escribirResultados("proc-ind.txt","sys-ind.txt",argv[are],rp,rs,re)) return 1;
				}
				else
				{
					if (arp == 0 && ars !=0 && are == 0)
					{
						if (!escribirResultados("proc-ind.txt",argv[ars],"trace.txt",rp,rs,re)) return 1;
					}
					else
					{
						if (arp == 0 && ars != 0 && are != 0)
						{
							if (!escribirResultados("proc-ind.txt",argv[ars],argv[are],rp,rs,re)) return 1;
						}
						else
						{
							if (arp != 0 && ars == 0 && are == 0)
							{
								if (!escribirResultados(argv[arp],"sys-ind.txt","trace.txt",rp,rs,re)) return 1;
							}
							else
							{
								if (arp != 0 && ars == 0 && are != 0)
								{
									if (!escribirResultados(argv[arp],"sys-ind.txt",argv[are],rp,rs,re)) return 1;
								}
								else
								{
									if (arp != 0 && ars != 0 && are == 0)
									{
										if (!escribirResultados(argv[arp],argv[ars],"trace.txt",rp,rs,re)) return 1;
									}
									else
									{
										if (arp != 0 && ars != 0 && are != 0)
										{
											if (!escribirResultados(argv[arp],argv[ars],argv[are],rp,rs,re)) return 1;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	while (opcion != 3);
	printf("Saliendo del progrma...\n");
	return 0;
}