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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda [urgente] por favor, a corregir la llamada del proceso de mi menu..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda [urgente] por favor, a corregir la llamada del proceso de mi menu..  (Leído 1,798 veces)
sTaborracho

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Ayuda [urgente] por favor, a corregir la llamada del proceso de mi menu..
« en: 11 Diciembre 2011, 02:18 am »

Hola... disculpen quisiera saber si alguien me podria ayudar hee estado haciendo este programa pero no logro hacer que el menu funcione correctamente..

Despues de Memoria asignar:
Deberia aparecer las figuras que representan la memoria...
y un menu que diga:
1. Ingresar proceso
2. Borrar proceso
3. Compactar (desfragmentar)
4. Ingresar por el primer ajuste
5. Ingresar por el mejor ajuste
6. Ingresar por el peor ajuste
7. Salir

Pero no logro llamar a Ingreso por primer, mejor y peor ajuste... este es el codigo original... realice varios intentos pero solo logre revolverme mas... Gracias al que pueda ayudarme..

#Gracias por compartir su conocimiento#

Código:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define maxmem_no 100

int mem[maxmem_no], maxmem = maxmem_no;

void initmem()
{
int i = 0;
for(; i<maxmem; i++)
mem[i] = 0;
}

void comp()
{
int mem_temp[maxmem_no], i = 0, k;
for(; i<maxmem; i++)
mem_temp[i] = mem[i];
initmem();
for(i=0, k=0; i<maxmem; i++)
if(mem_temp[i] != 0)
{
mem[k] = mem_temp[i];
k++;

}
}

void removejob()
{
int jn, i=0;
printf("\nIngresa el Proceso a Borrar: "); scanf("%d", &jn);
if(jn<0)
{
printf("Error!");
getch();
return;
}
for (; i<maxmem; i++)
if (mem[i]== jn)
mem[i] =0;
}

void printmem()
{
int i =0;
for (printf("\n"); i<maxmem; i++)
{
(mem[i]==0)?printf("%c ", 157):printf("%c ", 200); //176,219 o 176,219 o 178,221|175,218|173,216|
}
printf("\n\n");
for (i=0; i<maxmem; i++)
{
if(mem[i]!=0)
printf("%d ", mem[i]);
else
printf("  ");
}
printf("\n\n");
}

void memalloc(int jn, int jm, int mem_srt)
{
int i = mem_srt;
for(; i<=mem_srt+jm-1; i++)
mem[i] = jn;
}

int memfreeFF(int memreq)
{
int i=0, start = -1, end = -1;
calc:
start=-1, end=-1;
for(; i<maxmem; i++)
{
if(mem[i] == 0)
{
start = i;
break;
}
}
for(; i<maxmem; i++)
{
if(mem[i]==0)
{
end = i;
}
else
{
break;
}
}
if ((end - start +1) >= memreq)
{
return start;
}
else if(i<maxmem)
{
goto calc;
}
return -1;
}

int memfreeBF(int memreq)
{
int i=0, start = -1, end = -1;
int start_temp = -1, tot_free = -1;
calc:
start=-1, end=-1;
for(; i<maxmem; i++)
{
if(mem[i] == 0)
{
start = i;
break;
}
}
for(; i<maxmem; i++)
{
if(mem[i]==0)
{
end = i;
}
else
{
break;
}
}
if ((end - start +1) >= memreq)
{
if (start_temp != -1)
{
if(tot_free <= (end - start + 1))
{
start = -1; end = -1;
}
else
{
start_temp = start;
tot_free = end - start + 1;
start = -1; end = -1;
}
}
else{
start_temp = start;
tot_free = end - start + 1;
start = -1; end = -1;
}
}
if(i<maxmem)
{
goto calc;
}
return start_temp;
}


int memfreeWF(int memreq)
{
int i=0, start = -1, end = -1;
int start_temp = -1, tot_free = -1;
calc:
start=-1, end=-1;
for(; i<maxmem; i++)
{
if(mem[i] == 0)
{
start = i;
break;
}
}
for(; i<maxmem; i++)
{
if(mem[i]==0)
{
end = i;
}
else
{
break;
}
}
if ((end - start +1) >= memreq)
{
if (start_temp != -1)
{
if(tot_free >= (end - start + 1))
{
start = -1; end = -1;
}
else
{
start_temp = start;
tot_free = end - start + 1;
start = -1; end = -1;
}
}
else{
start_temp = start;
tot_free = end - start + 1;
start = -1; end = -1;
}
}
if(i<maxmem)
{
goto calc;
}
return start_temp;
}

int checkname(int num)
{
int i;
for(i=0;i<maxmem;i++)
if(mem[i] == num)
return 1;
return 0;
}

void fit(int cho)
{
int ch, jn, jm, temp;
char fnam [5][25] = {"Primer Ajuste", "Mejor Ajuste", "Peor Ajuste"};
system("cls");

do{
system("cls");
printmem(); fflush(stdin);
printf("%s :\n\n1. Ingresar Proceso\n2. Borrar Proceso\n3. Compactar\n4. Regresar\nOpcion: ", fnam[cho-1]);
scanf("%d", &ch);
switch(ch)
{
case 1:
printf("\nNumero de proceso: "); scanf("%d", &jn);
if((jn<0) || (checkname(jn) == 1))
{
printf("Error, Please ingrese un numero valido!");
getch();
break;
}
printf("Ingrese memoria  requerida: "); scanf("%d", &jm);

switch(cho)
{
case 1:
temp = memfreeFF(jm); break;
case 2:
temp = memfreeBF(jm); break;
case 3:
temp = memfreeWF(jm); break;
}
if(temp == -1)
{
printf("\nMemoria no suficiente :O!\n");
getch();
}
else
memalloc(jn, jm, temp);
break;
case 2:
removejob();
break;
case 3:
comp();
break;
case 4:
return;
default:
printf("Opcion Equivocada");
getch();
break;
}
}while(ch !=4);
getch();
}

int main()
{
int ch=0;
initmem();

printf("Memoria a asignar: ");
scanf("%d", &maxmem);

do{
initmem();
fflush(stdin); system("color 03"); system("cls");
printf("                        Bienvenido a Memoria Virtual\n");
printf("                            ********************\n");
printf("                            *-------Menu-------*");
printf("\n                            * 1. Primer Ajuste *");
printf("\n                            * 2. Mejor Ajuste  *");
printf("\n                            * 3. Peor Ajuste   *");
printf("\n                            * 4.Salir          *");
printf("\n                            ********************\n");
printf("\n                            Opcion: ");
scanf("%d", &ch);
if ( (ch > 4) || (ch <1) )
printf("Error de opcion!\n Elija de nuevo : ");
else if (ch != 4)
fit(ch);
else
{
printf("                     Gracias por usar Memoria");
break;
}
}while(ch != 4);
getch();
}


« Última modificación: 11 Diciembre 2011, 02:22 am por sTaborracho » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda urgente por favor
Juegos y Consolas
vivastun 4 2,409 Último mensaje 3 Agosto 2004, 19:10 pm
por vivastun
Como corregir ...Popup menu se muestra en el form
Programación Visual Basic
byway 8 3,691 Último mensaje 13 Diciembre 2008, 18:17 pm
por byway
Urgente dudas crear un menu en cpp
Programación C/C++
root89 3 1,922 Último mensaje 21 Marzo 2016, 08:39 am
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines