elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Codigo de asignacion de memoria: Peor Ajuste
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Codigo de asignacion de memoria: Peor Ajuste  (Leído 12,547 veces)
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Codigo de asignacion de memoria: Peor Ajuste
« en: 15 Marzo 2011, 12:38 pm »

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:
#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;
}

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();
                
}

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



« Última modificación: 15 Marzo 2011, 13:02 pm por dato000 » En línea


Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Codigo de asignacion de memoria: Peor Ajuste
« Respuesta #1 en: 15 Marzo 2011, 14:03 pm »

Parece que falla más el hecho de entender lo que se te plantea que otra cosa. Quizá deberías revisar a fondo la asignación de memoria por peor ajuste. Recalco que lo que parece estar fallando es la algoritmia (planteamiento del problema).

Por otro lado, como pequeño consejo, puede que te sirva el utilizar alguna clase de conjunto de estructuras donde tengas, por ejemplo, donde empieza cada partición libre y cuantos bloques libres ocupa dicha partición.


En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Codigo de asignacion de memoria: Peor Ajuste
« Respuesta #2 en: 15 Marzo 2011, 14:12 pm »

Parece que falla más el hecho de entender lo que se te plantea que otra cosa. Quizá deberías revisar a fondo la asignación de memoria por peor ajuste. Recalco que lo que parece estar fallando es la algoritmia (planteamiento del problema).

Por otro lado, como pequeño consejo, puede que te sirva el utilizar alguna clase de conjunto de estructuras donde tengas, por ejemplo, donde empieza cada partición libre y cuantos bloques libres ocupa dicha partición.

ummm dejando a un lado los mensajes de salida y todos los adornos, todo se reduce a un problemas de arreglos??

ummm cuando mencionas lo de las estructuras, como seria?? no soy muy entendido en struct??

pero practicamente el cuento son con 5 posiciones de particiones, y 5 de tareas... no tienes algun tip de ordenamiento para el caso de peor ajuste??
En línea


Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Codigo de asignacion de memoria: Peor Ajuste
« Respuesta #3 en: 15 Marzo 2011, 14:38 pm »

Básicamente, si quitas lo dicho, "todo" se reduce a un problema de vectores, si.

Sobre lo de las estructuras... Puedes utilizas structs, o no, o las mil opciones que se te puedan ocurrir.

No voy a dar ejemplos porque si los doy, te resuelvo la tarea, y no es mi intención. Que discurras y la resuelvas tu, si.

Creo que el propio "peor ajuste" en su definición y descripción te da ya todos los "tips" para implementarlo. Por ello, te sigo diciendo, revísate la teoría de tu asignatura de Sistemas Operativos.
En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Codigo de asignacion de memoria: Peor Ajuste
« Respuesta #4 en: 15 Marzo 2011, 14:46 pm »

Básicamente, si quitas lo dicho, "todo" se reduce a un problema de vectores, si.

Sobre lo de las estructuras... Puedes utilizas structs, o no, o las mil opciones que se te puedan ocurrir.

No voy a dar ejemplos porque si los doy, te resuelvo la tarea, y no es mi intención. Que discurras y la resuelvas tu, si.

Creo que el propio "peor ajuste" en su definición y descripción te da ya todos los "tips" para implementarlo. Por ello, te sigo diciendo, revísate la teoría de tu asignatura de Sistemas Operativos.

sabia que lo tenias resuelto desde el princpio!!

vale listo, le seguire porque pues que más puedo (como he estado haciendo en estos días.

Una vez lo tenga vectores me puedes pasar el dato en struct, yo no es para la clase, sino por curisiosidad, ni idea de structs (por lo menos no una muy clara).
En línea


Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Codigo de asignacion de memoria: Peor Ajuste
« Respuesta #5 en: 15 Marzo 2011, 14:55 pm »

Una cosa es que tenga planteado como lo haría si lo tuviese que hacer y otra que lo tenga hecho. Viendo tu problema se me ocurren formas de resolverlo usando esto y aquello, o esto y no aquello, o aquello y no esto, o ni esto ni aquello. (Siendo "esto" y "aquello" cualquier clase de método, tipo de dato, etc etc etc)

Pero siempre desde un punto de vista genérico y no centrado en el lenguaje (Hacerlo al revés ya me ha llevado en muchas ocasiones a perder el tiempo en cosas minúsculas)

Implementarlo ya es otro tema. Es pasar lo que se me ocurre a un lenguaje concreto, C++ en este caso.

Sobre el tema de estructuras, utilicé ese término de forma genérica, un vector, o "arreglo" como lo llamas tu, es una estructura. Creo que miras demasiado como lo harías en C/C++ y no la forma genérica de resolverlo.

Si quieres mirar sobre structs, hay bastantes tutoriales por ahí, o enlaces a libros en este mismo foro. Pero ahora termina lo que estés haciendo y no te marees con cosas nuevas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda asignacion de memoria dinámica palabras en c « 1 2 3 »
Programación C/C++
newfag 24 13,878 Último mensaje 19 Mayo 2010, 20:42 pm
por Eternal Idol
Asignación de memoria en C
Programación C/C++
Akkon 3 4,144 Último mensaje 30 Abril 2011, 15:22 pm
por Akkon
Asignacion Dinamica Memoria
Programación C/C++
charmedever 5 3,781 Último mensaje 21 Octubre 2011, 05:25 am
por charmedever
Problema con asignación de memoria en puntero de caracteres.
Programación C/C++
1t4h1s4 9 5,288 Último mensaje 13 Febrero 2013, 02:58 am
por 1t4h1s4
Primer, Peor y Mejor ajuste en Java
Java
pablcruz 1 5,187 Último mensaje 29 Julio 2017, 14:26 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines