• Jueves 14 de Noviembre de 2024, 04:04

Autor Tema:  Codigo de asignacion de memoria: Peor Ajuste  (Leído 1846 veces)

radioactivo

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Codigo de asignacion de memoria: Peor Ajuste
« en: Martes 15 de Marzo de 2011, 13:02 »
0
Buenas las tengan.

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: Text
  1.  
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <D:CamiloUnilibreQuinto SemestreSistemas OperativosEjerciciosPrimer Corteparticionfija.h>
  5.  
  6. /*
  7.     MANUEL CAMILO CEPEDA MARTINEZ 066091006
  8.     ERIKA CALDAS CODIGO 066062003
  9.     PARTICION FIJA PEOR AJUSTE - VERSION 1.0
  10.     SISTEMAS OPERATIVOS
  11.     UNIVERSIDAD LIBRE DE COLOMBIA
  12. */
  13.  
  14. using namespace std;
  15.  
  16. int main(){
  17.     
  18.         int opcion;
  19.         
  20.             
  21.         //MENU DE BIENVENIDA  
  22.         printf("tt BIENVENIDO: ");    
  23.         printf("OPCIONES nn");
  24.         printf("t 1.    PARTICION FIJA  n");
  25.         printf("t 2.    SALIDA   nn");
  26.         printf("digite una de las opciones: ");
  27.         scanf( "%i", &opcion);
  28.         
  29.         switch (opcion){
  30.             
  31.             case 1:
  32.                 printf("PARTICION FIJA nn");
  33.                 printf("NO HAY RELOCALIZACION nn");
  34.                 partFija();
  35.                 break;
  36.             
  37.             case 2:
  38.                 printf("adios!!!! buen dia!!!");
  39.                 getchar();
  40.                 break;
  41.                 
  42.             default:
  43.                 printf("ERROR DIGITANDO DATOS, EL PROGRAMA ESTALLARA!! ARRGHHH!!nn");
  44.                 getchar();
  45.                 break;
  46.         }
  47.         
  48.         getchar();  
  49.         return EXIT_SUCCESS;
  50. }
  51.  
  52.  

La libreria de la particion fija que debe entregar el peor ajuste
Código: Text
  1.  
  2. void partFija();
  3.  
  4. void partFija(){
  5.  
  6.          int t[5];
  7.          int p[5]={20,15,20,10,30};
  8.          int contador=30;
  9.          printf("HOLA!!nn");
  10.         
  11.          //IMAGEN DE PARTICIONES
  12.          printf("nn");
  13.          printf("PARTICION FIJA      MEDIDA       LOCALIZACIONn");
  14.          printf("-------------------   0n");
  15.          printf("|        SO       | n");
  16.          printf("-------------------   30             %in", contador);
  17.          for(int i=0; i<5; i++){
  18.             contador += p[i];    
  19.             printf("|        p%i       | n", i+1);
  20.             printf("-------------------   %i             %in", p[i], contador);
  21.          }
  22.  
  23.         
  24.           //INGRESO DE TAREAS
  25.          printf("5 TAREAS MAXIMO nn");
  26.          for(int i=0; i<5; i++){
  27.             printf("TAREA %i:  ", i+1); scanf( "%i", &t[i]);
  28.          }
  29.         
  30.         
  31.          //INGRESO DE TAREAS EN PARTICIONES
  32.          contador=30;
  33.          printf("nn");
  34.          printf("PARTICION FIJA      MEDIDA       LOCALIZACIONn");
  35.          printf("-------------------   0n");
  36.          printf("|        SO       | n");
  37.          printf("-------------------   30             %in", contador);
  38.          for(int i=0; i<5; i++){  
  39.             if(t[i]==0){
  40.                 contador += p[i];
  41.                 printf("|        p%i       | n", i+1);
  42.                 printf("|   ***********   | n");
  43.                 printf("|     LIBRE: %i    | n", p[i]);
  44.                 printf("-------------------   %i             %in", p[i], contador);
  45.             }
  46.             else{
  47.                 contador += p[i];    
  48.                 printf("|        p%i       | n", i+1);
  49.                 printf("|   ***********   | n");
  50.                 printf("|     Frag: %i    | n", p[i]-t[i]);
  51.                 printf("-------------------   %i             %in", p[i], contador);
  52.             }
  53.          }
  54.         
  55.          //PEOR AJUSTE
  56.         
  57.         
  58.         
  59.         
  60.          do{
  61.                 contador=30;
  62.                 fflush(stdin);
  63.                 printf("nnQUE TAREA DESEA ELIMINAR??  n (Digite solo el numero de la tarea)  ");
  64.                 int borrar; scanf( "%i", &borrar);
  65.                 if(borrar == 1)
  66.                     t[0]=0;
  67.                 else if(borrar == 2)
  68.                     t[1]=0;
  69.                 else if(borrar == 3)
  70.                     t[2]=0;
  71.                 else if(borrar == 4)
  72.                     t[3]=0;
  73.                 else if(borrar == 5)
  74.                     t[4]=0;
  75.                     
  76.                 
  77.                 printf("PARTICION FIJA      MEDIDA       LOCALIZACIONn");                    
  78.                 printf("-------------------   0n");
  79.                 printf("|        SO       | n");
  80.                 printf("-------------------   30             %in", contador);
  81.                 
  82.                 for(int i=0; i<5; i++){
  83.                       
  84.                         //IMAGEN DE PARTICIONES FIJAS CON TAREA RETIRADA
  85.                         if(t[i]==0){
  86.                             contador += p[i];
  87.                             printf("|        p%i       | n", i+1);
  88.                             printf("|   ***********   | n");
  89.                             printf("|     LIBRE: %i    | n", p[i]);
  90.                             printf("-------------------   %i             %in", p[i], contador);
  91.                         }
  92.                         else{    
  93.                             contador += p[i];
  94.                             printf("|        p%i       | n", i+1);
  95.                             printf("|   ***********   | n");
  96.                             printf("|     Frag: %i    | n", p[i]-t[i]);
  97.                             printf("-------------------   %i             %in", p[i], contador);
  98.                         }
  99.                     
  100.                  }
  101.                 
  102.                  //El programa pregunta si quiere continuar
  103.                  char opc;
  104.                  fflush(stdin);
  105.                  printf("nnnDESEA RETIRAR OTRA TAREA?? (S/N) ");
  106.                  scanf("%c", &opc);
  107.                  if(opc=='n' or opc=='N')
  108.                     break;
  109.                 
  110.          }while(true);
  111.          getchar();
  112.                 
  113. }
  114.  
  115.  

La verdad es que no doy con el truco para reasignar las tareas de manera indicicada.