g.sempai
Becerro
- Desde
- 4 Ene 2009
- Mensajes
- 28
- Tema Autor
- #1
Hola pues empece a hacer un programa en c++ de partición de memoria (estatica y dinamica) y estoy en eso del primer ajuste ,peor ajuste y mejor ajuste pero no puedo arreglar el error en el codigo..AYUDENME POR FAVOR LO NECESITO PARA EL MARTES Y ESTOY ALGO FRUSTRADA U.U...
CODIGO
//hecho por carlos kante cruz del Instituto Tecnologico de Tuxtla Gutierrez
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void iniciar_graficos();
void bloques_memoria();
int total_memoria=0,mayor;
void imprime();
void primer_ajuste();
void peor_ajuste();
void mejor_ajuste();
void principal();
struct datos{
int memory,proceso,total_memoria,id;
};
struct datos memoria[9];
struct datos procesos_liberados[9],aux3[1];
char msg [15];
int op,s=0,j=0,l;
int posicion[10];
int memo_proceso[10];
int memo_max[6];
int menor[6];
int liberar_proceso[10];
//int procesos_liberados[10];
int aux2[20],aux[20];
void main(){
iniciar_graficos();
principal();
}
void principal()
{
int i=0,cantidad,j=0,insertar=0,op=0,insertarmemo=0;
printf("inserta procesos\n");
rectangle(249,0,351,641);
do
{
setfillstyle(1,random(14)+1);
scanf("%d",&aux);
memo_max=(memoria.memory =aux);
memoria.id=i;
bar(250,total_memoria,350,memoria.memory+total_memoria);
sprintf(msg,"%d kb",memoria.memory);outtextxy (355, total_memoria, msg);
sprintf(msg,"%d ",total_memoria);outtextxy (230, total_memoria, msg);
total_memoria+=aux;
aux2=total_memoria;
i++;
}while(total_memoria<=460);
gotoxy(10,215);printf("cantidad de procesos a liberar\n");
scanf("%d",&cantidad);
for(j;j<cantidad;j++)
{
printf("num de proceso\n");
scanf("%d",&liberar_proceso[j]);
setfillstyle(1,0);
bar(250,aux2[liberar_proceso[j]]-memo_max[liberar_proceso[j]],350,aux2[liberar_proceso[j]]);
procesos_liberados[j].memory=memo_max[liberar_proceso[j]];
procesos_liberados[j].id=memoria[liberar_proceso[j]].id;
}
printf("a.- peor ajuste \nb.- mejor ajuste \n c.- primer ajuste\n");
do{
op=getche();
switch(op)
{
case 'a':
{
printf("tamanio proceso: ");
scanf("%d",&memo_proceso);
peor_ajuste();
setfillstyle(1,random(14)+1);
bar(250,aux2[aux3[0].id-1],350,aux2[aux3[0].id-1]+memo_proceso[insertarmemo]);
aux2[aux3[0].id-1]=aux2[aux3[0].id-1]+memo_proceso[insertarmemo];
s++;
insertarmemo++;
//j=0;
getch();
break;
}
case 'b':
{
printf("tamanio proceso: ");
scanf("%d",&memo_proceso);
mejor_ajuste();
setfillstyle(1,random(14)+1);
bar(250,aux2[aux3[0].id-1],350,aux2[aux3[0].id-1]+memo_proceso[insertarmemo]);
aux2[aux3[0].id-1]=aux2[aux3[0].id-1]+memo_proceso[insertarmemo];
s++;
insertarmemo++;
//j=0;
getch();
break;
}
case 'c':
{
printf("tamanio proceso: ");
scanf("%d",&memo_proceso);
primer_ajuste();
setfillstyle(1,random(14)+1);
bar(250,aux2[aux3[0].id-1],350,aux2[aux3[0].id-1]+memo_proceso[insertarmemo]);
aux2[aux3[0].id-1]=aux2[aux3[0].id-1]+memo_proceso[insertarmemo];
s++;
insertarmemo++;
//j=0;
getch();
break;
}
}
insertar++;
}while(op!='s');
}
void peor_ajuste(){
mayor =procesos_liberados[0].memory;
for(int i=0; i<6; i++){
if (mayor<=procesos_liberados.memory){
aux3[0].memory=procesos_liberados.memory;
aux3[0].id=procesos_liberados.id;
mayor=procesos_liberados.memory;
posicion[j]=i+1;
j++;
}
}
for(int p=0;p<j;p++){
l = posicion[p];
}
if(procesos_liberados[l-1].memory>=memo_proceso){
procesos_liberados[l-1].memory = procesos_liberados[l-1].memory - memo_proceso;
}
else{
outtextxy(250,250,"<<Espacio>>");
outtextxy(250,300,"<<Insuficiente>>");
}
}
void mejor_ajuste(){
for(int i=0; i<6; i++){
if (procesos_liberados.memory>=memo_proceso)
{
menor=procesos_liberados.memory-memo_proceso;
}
else{
menor=100;
}
}
int min;
min = menor[0];
for(int a=0; a<6; a++){
if (min>=menor[a]){
min= menor[a];
posicion[j]=a+1;
j++;
}
}
for(int p=0;p<j;p++){
l = posicion[p];
}
if(procesos_liberados[l-1].memory>=memo_proceso);{
procesos_liberados[l-1].memory=procesos_liberados[l-1].memory-memo_proceso;
aux3[0].memory=procesos_liberados[l-1].memory;
aux3[0].id=procesos_liberados[l-1].id;
}
}
void primer_ajuste(){
for(int i=0;i<6;i++){
if(procesos_liberados.memory>=memo_proceso){
procesos_liberados.memory=procesos_liberados.memory - memo_proceso;
aux3[0].memory=procesos_liberados.memory;
aux3[0].id=procesos_liberados.id;
break;
}
}
}
void iniciar_graficos(){
int controlador = DETECT, modo;
initgraph(&controlador, &modo, "d:\\tc\\bgi");
}
ERRORES MARCADOS :
gracias de antemano
CODIGO
//hecho por carlos kante cruz del Instituto Tecnologico de Tuxtla Gutierrez
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void iniciar_graficos();
void bloques_memoria();
int total_memoria=0,mayor;
void imprime();
void primer_ajuste();
void peor_ajuste();
void mejor_ajuste();
void principal();
struct datos{
int memory,proceso,total_memoria,id;
};
struct datos memoria[9];
struct datos procesos_liberados[9],aux3[1];
char msg [15];
int op,s=0,j=0,l;
int posicion[10];
int memo_proceso[10];
int memo_max[6];
int menor[6];
int liberar_proceso[10];
//int procesos_liberados[10];
int aux2[20],aux[20];
void main(){
iniciar_graficos();
principal();
}
void principal()
{
int i=0,cantidad,j=0,insertar=0,op=0,insertarmemo=0;
printf("inserta procesos\n");
rectangle(249,0,351,641);
do
{
setfillstyle(1,random(14)+1);
scanf("%d",&aux);
memo_max=(memoria.memory =aux);
memoria.id=i;
bar(250,total_memoria,350,memoria.memory+total_memoria);
sprintf(msg,"%d kb",memoria.memory);outtextxy (355, total_memoria, msg);
sprintf(msg,"%d ",total_memoria);outtextxy (230, total_memoria, msg);
total_memoria+=aux;
aux2=total_memoria;
i++;
}while(total_memoria<=460);
gotoxy(10,215);printf("cantidad de procesos a liberar\n");
scanf("%d",&cantidad);
for(j;j<cantidad;j++)
{
printf("num de proceso\n");
scanf("%d",&liberar_proceso[j]);
setfillstyle(1,0);
bar(250,aux2[liberar_proceso[j]]-memo_max[liberar_proceso[j]],350,aux2[liberar_proceso[j]]);
procesos_liberados[j].memory=memo_max[liberar_proceso[j]];
procesos_liberados[j].id=memoria[liberar_proceso[j]].id;
}
printf("a.- peor ajuste \nb.- mejor ajuste \n c.- primer ajuste\n");
do{
op=getche();
switch(op)
{
case 'a':
{
printf("tamanio proceso: ");
scanf("%d",&memo_proceso
peor_ajuste();
setfillstyle(1,random(14)+1);
bar(250,aux2[aux3[0].id-1],350,aux2[aux3[0].id-1]+memo_proceso[insertarmemo]);
aux2[aux3[0].id-1]=aux2[aux3[0].id-1]+memo_proceso[insertarmemo];
s++;
insertarmemo++;
//j=0;
getch();
break;
}
case 'b':
{
printf("tamanio proceso: ");
scanf("%d",&memo_proceso
mejor_ajuste();
setfillstyle(1,random(14)+1);
bar(250,aux2[aux3[0].id-1],350,aux2[aux3[0].id-1]+memo_proceso[insertarmemo]);
aux2[aux3[0].id-1]=aux2[aux3[0].id-1]+memo_proceso[insertarmemo];
s++;
insertarmemo++;
//j=0;
getch();
break;
}
case 'c':
{
printf("tamanio proceso: ");
scanf("%d",&memo_proceso
primer_ajuste();
setfillstyle(1,random(14)+1);
bar(250,aux2[aux3[0].id-1],350,aux2[aux3[0].id-1]+memo_proceso[insertarmemo]);
aux2[aux3[0].id-1]=aux2[aux3[0].id-1]+memo_proceso[insertarmemo];
s++;
insertarmemo++;
//j=0;
getch();
break;
}
}
insertar++;
}while(op!='s');
}
void peor_ajuste(){
mayor =procesos_liberados[0].memory;
for(int i=0; i<6; i++){
if (mayor<=procesos_liberados.memory){
aux3[0].memory=procesos_liberados.memory;
aux3[0].id=procesos_liberados.id;
mayor=procesos_liberados.memory;
posicion[j]=i+1;
j++;
}
}
for(int p=0;p<j;p++){
l = posicion[p];
}
if(procesos_liberados[l-1].memory>=memo_proceso
procesos_liberados[l-1].memory = procesos_liberados[l-1].memory - memo_proceso
}
else{
outtextxy(250,250,"<<Espacio>>");
outtextxy(250,300,"<<Insuficiente>>");
}
}
void mejor_ajuste(){
for(int i=0; i<6; i++){
if (procesos_liberados.memory>=memo_proceso
{
menor=procesos_liberados.memory-memo_proceso
}
else{
menor=100;
}
}
int min;
min = menor[0];
for(int a=0; a<6; a++){
if (min>=menor[a]){
min= menor[a];
posicion[j]=a+1;
j++;
}
}
for(int p=0;p<j;p++){
l = posicion[p];
}
if(procesos_liberados[l-1].memory>=memo_proceso
procesos_liberados[l-1].memory=procesos_liberados[l-1].memory-memo_proceso
aux3[0].memory=procesos_liberados[l-1].memory;
aux3[0].id=procesos_liberados[l-1].id;
}
}
void primer_ajuste(){
for(int i=0;i<6;i++){
if(procesos_liberados.memory>=memo_proceso
procesos_liberados.memory=procesos_liberados.memory - memo_proceso
aux3[0].memory=procesos_liberados.memory;
aux3[0].id=procesos_liberados.id;
break;
}
}
}
void iniciar_graficos(){
int controlador = DETECT, modo;
initgraph(&controlador, &modo, "d:\\tc\\bgi");
}
ERRORES MARCADOS :
gracias de antemano
