Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
//Nome: Marina Baeta de Oliveira //Matricula: 2020020917 #include <stdio.h> #include <stdlib.h> #include <string.h> #define NUM_FILAS 3 #define TAM_NOME 50 typedef enum {false, true} bool; typedef struct no{ float tamanho; char nome[TAM_NOME]; int prioridade; struct no *prox; }noProcesso; noProcesso *filaDeProcessos[NUM_FILAS]; noProcesso *ult[NUM_FILAS]; bool prioridadesProcessos[10]; void inicializaFila(){ int i; for(i=0; i<NUM_FILAS; i++){ filaDeProcessos[i] = NULL; ult[i] = NULL; } } void insereFila(float tam, char nome[TAM_NOME], int pri){ noProcesso *novo; int i, aux; switch(pri){ case 0: case 1: case 2: case 3: aux = 0; break; case 4: case 5: case 6: aux = 1; break; case 7: case 8: case 9: aux = 2; break; default: printf("\n Prioridade invalida!! \n"); } novo = (noProcesso *) malloc(sizeof(noProcesso)); if(filaDeProcessos[aux] == NULL){ filaDeProcessos[aux] = novo; } novo->prioridade = pri; novo->tamanho = tam; strcpy(novo->nome, nome); novo->prox = NULL; if(ult[aux] != NULL){ ult[aux]->prox = novo; } ult[aux] = novo; } void imprimeDadosListasDeProcessos(){ int i, cont; float soma; noProcesso *atual; for(i=0; i<NUM_FILAS; i++){ cont = 0; soma = 0; printf("\n \n*Fila: %d* \n", i+1); atual = filaDeProcessos[i]; while(atual != NULL){ printf("\n\n Numero de processos: %d ", cont+1); soma += atual->tamanho; printf("\n Nome: %s | Tamanho: %.2f | Prioridade: %d ", atual->nome, atual->tamanho, atual->prioridade); atual = atual->prox; cont ++; } printf("\n\n ------- Soma tamanho: %.2f | Quantidade de processos: %d ------- \n", soma, cont); } printf("\n"); } bool removePrimeiroDaFila(int pri){ noProcesso *atual; int aux; atual = filaDeProcessos[pri]; if(atual != NULL){ if(atual->prox == NULL){ ult[pri] = NULL; } filaDeProcessos[pri] = atual->prox; free(atual); return true; } return false; } void destroi(){ noProcesso *atual; noProcesso *apaga; int i; for(i=0;i<3;i++){ atual = filaDeProcessos[i]; while(atual != NULL){ apaga = atual; atual = atual->prox; free(apaga); } } } int main(int argc, char *argv[]){ inicializaFila(); insereFila(1, "BrOfficeCalc", 3); insereFila(2.3, "CodeBlocks", 9); insereFila(0.5, "Calculadora", 1); insereFila(6.4, "Firefox", 7); insereFila(3.1, "PhpMyAdmin", 2); insereFila(2.9, "Kile", 4); insereFila(4.5, "Gimp", 9); insereFila(5.5, "BrOfficeWriter", 6); insereFila(5.8, "GCC", 2); imprimeDadosListasDeProcessos(); removePrimeiroDaFila(2); system("pause"); imprimeDadosListasDeProcessos(); system("pause"); destroi(); return 0; }
Compartilhar