Programar em C/Algoritmo de alocação

1. Programar em C/Algoritmo de alocação

Lucas dos Santos Antunes
lucasantunes

(usa Ubuntu)

Enviado em 24/04/2019 - 16:46h

Boa tarde, estou criando um Programar em C para Algoritmo de alocação best fit, e me parece que não está percorrendo corretamente o array, se puderem dar uma olhada, obrigado desde já.
#include <stdio.h>
#include <windows.h>
#include <stdbool.h>


int main(){
int p,m;
printf("Entre o numero de processos:");
scanf("%d",&p);
printf("Entre o numero de blocos de memoria:");
scanf("%d",&m);

int parr[p];
struct memoria{
int id; // identificador
int tamanho;
}marr[m];

int i;

for(i=0;i<p;i++)
{
printf("Entre o tamanho do processo %d:",i+1);
scanf("%d",&parr[i]);
}
for(i=0;i<m;i++)
{
printf("Entre o tamanho do bloco de memoria %d:",i+1);
scanf("%d",&marr[i].tamanho);
marr[i].id=i+1;
}
int j;
int tamanho = 0;

for(i=1; tamanho <= marr[i].tamanho; i++ )
tamanho = marr[i].tamanho;
int tamanho_velho = tamanho ;
int im ;
bool marcador = false ;

for(i=0;i<p;i++){
for(j=0;j<m;j++){
if((marr[j].tamanho>=parr[i]) && (marr[j].tamanho < tamanho) ){

im = j;
tamanho = marr[j].tamanho;
marcador = true ;

}

}

if(marcador){
marcador = false ;
marr[im].tamanho-=parr[i];
tamanho = tamanho_velho ;
printf("\n\nAloca o processo %d no bloco memoria %d\n Tamanho restante apos alocar %d\n",i+1,marr[im].id,marr[im].tamanho);

}else {printf("Memoria insuficiente para o processo %d",i);break;}


}
system ("pause");

return 0;
}




  


2. Re: Programar em C/Algoritmo de alocação

Paulo
paulo1205

(usa Ubuntu)

Enviado em 24/04/2019 - 17:20h

lucasantunes escreveu:

Boa tarde, estou criando um Programar em C para Algoritmo de alocação best fit, e me parece que não está percorrendo corretamente o array, se puderem dar uma olhada, obrigado desde já.
#include <stdio.h>
#include <windows.h>
#include <stdbool.h>


int main(){
int p,m;
printf("Entre o numero de processos:");
scanf("%d",&p);
printf("Entre o numero de blocos de memoria:");
scanf("%d",&m);

int parr[p];
struct memoria{
int id; // identificador
int tamanho;
}marr[m];

int i;

for(i=0;i<p;i++)
{
printf("Entre o tamanho do processo %d:",i+1);
scanf("%d",&parr[i]);
}
for(i=0;i<m;i++)
{
printf("Entre o tamanho do bloco de memoria %d:",i+1);
scanf("%d",&marr[i].tamanho);
marr[i].id=i+1;
}
int j;
int tamanho = 0;

for(i=1; tamanho <= marr[i].tamanho; i++ )


Não entrei em detalhes nem tentei entender seu algoritmo, mas acho que o erro pode estar aqui. Por que ‘i’ começa em 1, em vez de 0? Você reparou que não existe nada que impeça que ’i’ exceda a dimensão máxima de ‘marr’?

Será que você não quis dizer o seguinte?
    for(i=0; i<m && tamanho<=marr[i].tamanho; i++) 


           tamanho = marr[i].tamanho;
int tamanho_velho = tamanho ;
int im ;
bool marcador = false ;

for(i=0;i<p;i++){
for(j=0;j<m;j++){
if((marr[j].tamanho>=parr[i]) && (marr[j].tamanho < tamanho) ){

im = j;
tamanho = marr[j].tamanho;
marcador = true ;

}

}

if(marcador){
marcador = false ;
marr[im].tamanho-=parr[i];
tamanho = tamanho_velho ;
printf("\n\nAloca o processo %d no bloco memoria %d\n Tamanho restante apos alocar %d\n",i+1,marr[im].id,marr[im].tamanho);

}else {printf("Memoria insuficiente para o processo %d",i);break;}


}
system ("pause");

return 0;
}





... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: Programar em C/Algoritmo de alocação

error 404
error_404

(usa Debian)

Enviado em 24/04/2019 - 17:36h

que isso mano, tem ubuntu ai e ta programando no windows?
porque?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts