Buscar

Lab Fila Finalizado

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM_FILA 3
#define TAM_NOME 50
typedef enum {false,true} bool;
// estrutura de um processo
typedef struct no
{
 float tamanho;
 char nome[TAM_NOME];
 int prioridade;
 struct no *prox;
} noProcesso;
//fila de processos a serem executados na CPU
noProcesso *filaDeProcessos[NUM_FILA];
//vetor que indica a existencia de pelo menos um processo dessa bool prioridade
bool prioridadesProcessos[10];
void inicializaFila()
{
 int i;
 for(i=0; i<3; i++)
 {
 filaDeProcessos[i] = NULL;
 }
}
void inicializaVetorPrioridades()
{
 int j = 0;
 for(j=0; j<10; j++)
 {
 prioridadesProcessos[j] = false;
 }
}
void insereFilainsereFila(float tam, char nome[TAM_NOME], int prio)
{
 noProcesso *atual = NULL;
 noProcesso *novo = (noProcesso *)malloc(sizeof(noProcesso));
 novo -> tamanho = tam;
 strcpy(novo -> nome, nome);
 novo -> prioridade = prio;
 if((prio<=3)&&(prio>=0))
{
 if(filaDeProcessos[0]=NULL)
 {
 filaDeProcessos[0] = novo;
 novo -> prox = NULL;
 return true;
 }
 else
 {
 while(atual -> prox != NULL)
 {
 atual = atual -> prox;
 }
 atual -> prox = novo;
 novo -> prox = NULL;
 return true;
 }
 }
 else
 {
 if((prio<=6)&&(prio>=4))
 {
 if(filaDeProcessos[1]==NULL)
 {
 filaDeProcessos[1]=novo;
 novo -> prox = NULL;
 return true;
 }
 else
 {
 if((prio=9)&&(prio>=7))
 {
 if(filaDeProcessos[2]=NULL)
 {
 filaDeProcessos[2]=novo;
 novo -> prox = NULL;
 return true;
 }
 else
 {
 atual = filaDeProcessos[2];
 while(atual -> prox!=NULL)
 {
 atual = atual -> prox;
 }
 atual -> prox = novo;
 novo -> prox = NULL;
 return true;
 }
 }
 }
 }
 }
 return false;
}
void imprimeDadoslistaDeProcessos()
{
 int i = 0;
 noProcesso *atual = NULL;
 for (i= 0 ; i <3; i++)
 {
 atual = filaDeProcessos[i];
 while(atual != NULL)
 {
 printf(">>> Numero:%d\n", i+1);
 printf(">>> Nome:%s\n", atual -> nome);
 printf(">>> Tamanho: %f\n", atual ->tamanho);
 printf(">>> Prioridade: %i\n",atual->prioridade);
 atual = atual->prox;
 i++;
 }
 }
}
bool removePrimeirodaFila(int indice)
{
 noProcesso *aux = NULL;
 if(filaDeProcessos[indice]== NULL)
 {
 printf(">>>Indice %d está vazio!", indice);
 }
 else
 {
 aux = filaDeProcessos[indice];
 filaDeProcessos[indice] = filaDeProcessos[indice] -> prox;
 free (aux);
 return true;
 }
 return false;
}
int main ()
{
 inicializaFila();
 inicializaVetorPrioridades();
 insereFilainsereFila(1, "BrOfficeCalc", 3);
 insereFilainsereFila(2.3, "CodeBlocks", 9);
 insereFilainsereFila(0.5, "Calculadora",1);
 insereFilainsereFila(6.4, "Firefox", 7);
 insereFilainsereFila(3.1, "PhpMyAdmin", 2);
 insereFilainsereFila(2.9, "Kile", 4);
 insereFilainsereFila(4.5, "Gimp", 9);
 insereFilainsereFila(5.5, "BrOfficeWriter",6);
 insereFilainsereFila(5.8, "GCC", 2);
 imprimeDadoslistaDeProcessos();
 removePrimeirodaFila(2);
 imprimeDadoslistaDeProcessos();
 return 0;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando

Outros materiais