Se que no hacen "trabajos ni tareas" pero estoy atorado con un ejercicio, y la verdad es que se que es un detalle, uno con el que no puedo dar, por favor, denme una mano.
Se trata sobre un código con arreglos en el que debo entregar unos cuadros al usuario en donde se reasignen las tareas y se entregen las particiones con una fragmentación de memoria más alta, comprobando el concepto de "Peor Ajuste" al código, en particiones fijas.
Les agradezco, esto es lo que he adelantado:
El principal
Código:
#include <iostream>
#include <stdio.h>
#include <D:\Camilo\Unilibre\Quinto Semestre\Sistemas Operativos\Ejercicios\Primer Corte\particionfija.h>
/*
MANUEL CAMILO CEPEDA MARTINEZ 066091006
ERIKA CALDAS CODIGO 066062003
PARTICION FIJA PEOR AJUSTE - VERSION 1.0
SISTEMAS OPERATIVOS
UNIVERSIDAD LIBRE DE COLOMBIA
*/
using namespace std;
int main(){
int opcion;
//MENU DE BIENVENIDA
printf("\t\t BIENVENIDO: ");
printf("OPCIONES \n\n");
printf("\t 1. PARTICION FIJA \n");
printf("\t 2. SALIDA \n\n");
printf("digite una de las opciones: ");
scanf( "%i", &opcion);
switch (opcion){
case 1:
printf("PARTICION FIJA \n\n");
printf("NO HAY RELOCALIZACION \n\n");
partFija();
break;
case 2:
printf("adios!!!! buen dia!!!");
getchar();
break;
default:
printf("ERROR DIGITANDO DATOS, EL PROGRAMA ESTALLARA!! ARRGHHH!!\n\n");
getchar();
break;
}
getchar();
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <D:\Camilo\Unilibre\Quinto Semestre\Sistemas Operativos\Ejercicios\Primer Corte\particionfija.h>
/*
MANUEL CAMILO CEPEDA MARTINEZ 066091006
ERIKA CALDAS CODIGO 066062003
PARTICION FIJA PEOR AJUSTE - VERSION 1.0
SISTEMAS OPERATIVOS
UNIVERSIDAD LIBRE DE COLOMBIA
*/
using namespace std;
int main(){
int opcion;
//MENU DE BIENVENIDA
printf("\t\t BIENVENIDO: ");
printf("OPCIONES \n\n");
printf("\t 1. PARTICION FIJA \n");
printf("\t 2. SALIDA \n\n");
printf("digite una de las opciones: ");
scanf( "%i", &opcion);
switch (opcion){
case 1:
printf("PARTICION FIJA \n\n");
printf("NO HAY RELOCALIZACION \n\n");
partFija();
break;
case 2:
printf("adios!!!! buen dia!!!");
getchar();
break;
default:
printf("ERROR DIGITANDO DATOS, EL PROGRAMA ESTALLARA!! ARRGHHH!!\n\n");
getchar();
break;
}
getchar();
return EXIT_SUCCESS;
}
La libreria de la particion fija que debe entregar el peor ajuste
Código:
void partFija();
void partFija(){
int t[5];
int p[5]={20,15,20,10,30};
int contador=30;
printf("HOLA!!\n\n");
//IMAGEN DE PARTICIONES
printf("\n\n");
printf("PARTICION FIJA MEDIDA LOCALIZACION\n");
printf("------------------- 0\n");
printf("| SO | \n");
printf("------------------- 30 %i\n", contador);
for(int i=0; i<5; i++){
contador += p[i];
printf("| p%i | \n", i+1);
printf("------------------- %i %i\n", p[i], contador);
}
//INGRESO DE TAREAS
printf("5 TAREAS MAXIMO \n\n");
for(int i=0; i<5; i++){
printf("TAREA %i: ", i+1); scanf( "%i", &t[i]);
}
//INGRESO DE TAREAS EN PARTICIONES
contador=30;
printf("\n\n");
printf("PARTICION FIJA MEDIDA LOCALIZACION\n");
printf("------------------- 0\n");
printf("| SO | \n");
printf("------------------- 30 %i\n", contador);
for(int i=0; i<5; i++){
if(t[i]==0){
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| LIBRE: %i | \n", p[i]);
printf("------------------- %i %i\n", p[i], contador);
}
else{
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| Frag: %i | \n", p[i]-t[i]);
printf("------------------- %i %i\n", p[i], contador);
}
}
//PEOR AJUSTE
do{
contador=30;
fflush(stdin);
printf("\n\nQUE TAREA DESEA ELIMINAR?? \n (Digite solo el numero de la tarea) ");
int borrar; scanf( "%i", &borrar);
if(borrar == 1)
t[0]=0;
else if(borrar == 2)
t[1]=0;
else if(borrar == 3)
t[2]=0;
else if(borrar == 4)
t[3]=0;
else if(borrar == 5)
t[4]=0;
printf("PARTICION FIJA MEDIDA LOCALIZACION\n");
printf("------------------- 0\n");
printf("| SO | \n");
printf("------------------- 30 %i\n", contador);
for(int i=0; i<5; i++){
//IMAGEN DE PARTICIONES FIJAS CON TAREA RETIRADA
if(t[i]==0){
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| LIBRE: %i | \n", p[i]);
printf("------------------- %i %i\n", p[i], contador);
}
else{
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| Frag: %i | \n", p[i]-t[i]);
printf("------------------- %i %i\n", p[i], contador);
}
}
//El programa pregunta si quiere continuar
char opc;
fflush(stdin);
printf("\n\n\nDESEA RETIRAR OTRA TAREA?? (S/N) ");
scanf("%c", &opc);
if(opc=='n' or opc=='N')
break;
}while(true);
getchar();
}
void partFija(){
int t[5];
int p[5]={20,15,20,10,30};
int contador=30;
printf("HOLA!!\n\n");
//IMAGEN DE PARTICIONES
printf("\n\n");
printf("PARTICION FIJA MEDIDA LOCALIZACION\n");
printf("------------------- 0\n");
printf("| SO | \n");
printf("------------------- 30 %i\n", contador);
for(int i=0; i<5; i++){
contador += p[i];
printf("| p%i | \n", i+1);
printf("------------------- %i %i\n", p[i], contador);
}
//INGRESO DE TAREAS
printf("5 TAREAS MAXIMO \n\n");
for(int i=0; i<5; i++){
printf("TAREA %i: ", i+1); scanf( "%i", &t[i]);
}
//INGRESO DE TAREAS EN PARTICIONES
contador=30;
printf("\n\n");
printf("PARTICION FIJA MEDIDA LOCALIZACION\n");
printf("------------------- 0\n");
printf("| SO | \n");
printf("------------------- 30 %i\n", contador);
for(int i=0; i<5; i++){
if(t[i]==0){
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| LIBRE: %i | \n", p[i]);
printf("------------------- %i %i\n", p[i], contador);
}
else{
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| Frag: %i | \n", p[i]-t[i]);
printf("------------------- %i %i\n", p[i], contador);
}
}
//PEOR AJUSTE
do{
contador=30;
fflush(stdin);
printf("\n\nQUE TAREA DESEA ELIMINAR?? \n (Digite solo el numero de la tarea) ");
int borrar; scanf( "%i", &borrar);
if(borrar == 1)
t[0]=0;
else if(borrar == 2)
t[1]=0;
else if(borrar == 3)
t[2]=0;
else if(borrar == 4)
t[3]=0;
else if(borrar == 5)
t[4]=0;
printf("PARTICION FIJA MEDIDA LOCALIZACION\n");
printf("------------------- 0\n");
printf("| SO | \n");
printf("------------------- 30 %i\n", contador);
for(int i=0; i<5; i++){
//IMAGEN DE PARTICIONES FIJAS CON TAREA RETIRADA
if(t[i]==0){
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| LIBRE: %i | \n", p[i]);
printf("------------------- %i %i\n", p[i], contador);
}
else{
contador += p[i];
printf("| p%i | \n", i+1);
printf("| *********** | \n");
printf("| Frag: %i | \n", p[i]-t[i]);
printf("------------------- %i %i\n", p[i], contador);
}
}
//El programa pregunta si quiere continuar
char opc;
fflush(stdin);
printf("\n\n\nDESEA RETIRAR OTRA TAREA?? (S/N) ");
scanf("%c", &opc);
if(opc=='n' or opc=='N')
break;
}while(true);
getchar();
}
La verdad es que no doy con el truco para reasignar las tareas de manera indicicada.