Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigues2008.1

Listas dinamicas e matriz esparsa

Recommended Posts

bom dia galera

preciso de uma ajuda em um trabalho muito dificil da faculdade

sei que copiei de + e da preguisa de ler , mas é que o trabalho é miseravel mesmo é uma trabalho mesmo!!!

alguem com uma certa experiencia em c poderia me indicar um caminho nesse trabalho?

 

é assim:

a entrada:

primeiro você entra com um valor m

e depois deve entrar com m modelos de carros diferentes

isso se repete com cores e cidades onde o carro vai ser vendidio

(fiz três listas dinamicas para esse primeiro procedimento)

 

 

agora não consigo visualizar como vou fazer essa parte do trabalho

 

depois devo entrar com um valor x e depois devo cadastra x vendas , por exemplo

entro com x = 3

e depois entra com o numeros de carro vendidios de uma determina cor,modelo e cidade que foram inserido anteriormente(isso x vezes)

vendidos =50 ----modelo = polo------cor = azul -----na cidade=Salvador

vendidos =40 ----modelo = gol------cor = azul -----na cidade=Salvador

vendidos =50 ----modelo = polo------cor = amarelo -----na cidade=ilheus

 

depois de tudo isso foi fazer 11 consultas

uma pede apenas o total de carros vendidios

outro o total de carros vendidos de uma determinada cor ou de uma determinada cidade,etc.....

 

o professor deu uma dica na sala , que deviamos usar matriz esparsa/listas cruzadas

mais sobre matriz esparsa so sei o conceito e pouca coisa na internet sobre isso

como faço essa segunda parte do problema??

me ajudem aiii!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você sabe o que é uma matriz esparsa e que precisa armazenar somente o que não for irrelevante, deveria ter pensado em ponteiros. Se duvidar, vai enfrentar o mesmo problema que um banco de dados quanto à referência aos dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você sabe o que é uma matriz esparsa e que precisa armazenar somente o que não for irrelevante, deveria ter pensado em ponteiros. Se duvidar, vai enfrentar o mesmo problema que um banco de dados quanto à referência aos dados.

estou no segundo semestre e estou aprendendo c agora este é um trabalho de estrutura de dados

 

sei quando se usa a matriz esparsa

quando tenho muito elemento = 0

 

 

ele tem que ser definida desse modo?????

preciso criar uma célula com os seguintes campos:

XxYxZ

 

direção x -> em qual direção x da matriz a célula se encontra

direção Y -> em qual direção y a célula se encontra

direção z -> em qual direção z a célula se encontra

Item -> o item de sua célula

Próximo x -> apontador para o próximo elemento da matriz que não seja nulo nesta direção x

Próximo y -> apontador para o próximo elemento da matriz que não seja nulo nesta direçaõ y

Próximo z -> apontador para o próximo elemento da matriz que não seja nulo nesta direção z

 

esta é a forma da celula?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você usar matriz vai ficar armazenando coisas que não precisa. Aqui vale mais a pena modelar com listas ligadas. Aí você tem 3 listas, uma p/ cada dado, que contém o dado e não o lugar onde ele está.

 

Ou use árvores, mas você vai precisar de ponteiros do mesmo jeito.

 

Raiz: "Dados" (contém ponteiros para os filhos)

Nó 1: "Cores"

Nó 2: "Modelo"

Nó 3: "Cidades"

 

Os nós 1,2 e 3 são filhos da raiz.

 

Filhos do nó 1: azul, preto, vermelho,verde,amarelo

Filhos do nó 2: gol, sedan, corsa, fusca, polo

Filhos do nó 3: uberlândia, xaxim, chapecó, getúlio vargas, rio branco

 

Dessa forma dá até pra organizar melhor as variações de cores e agrupar as cidades em estados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você usar matriz vai ficar armazenando coisas que não precisa. Aqui vale mais a pena modelar com listas ligadas. Aí você tem 3 listas, uma p/ cada dado.

 

Ou use árvores, mas você vai precisar de ponteiros do mesmo jeito.

 

Raiz: "Dados" (contém ponteiros para os filhos)

Nó 1: "Cores"

Nó 2: "Modelo"

Nó 3: "Cidades"

 

Os nós 1,2 e 3 são filhos da raiz.

 

Filhos do nó 1: azul, preto, vermelho,verde,amarelo

Filhos do nó 2: gol, sedan, corsa, fusca, polo

Filhos do nó 3: uberlândia, xaxim, chapecó, getúlio vargas, rio branco

 

Dessa forma dá até pra organizar melhor as variações de cores e agrupar as cidades em estados.

Ainda não vi arvores e não devo usar

tenho que usar lista pois foi o assunto que o professor deu(pascal) e ele pediu para usar lista(mais fazer o trabalho em c , que estamos vendo em lab. de programação)

não visualizo como vou usar essa listas ligadas

como ela vai permitir eu fazer consultas do tipo

consulta apenas o numero de Gols vendidos para salvador ou tb

consulta o total de carros vendidos para sao paulo ou tb

consulta os carros da cor azul do modelo tal e assim vai

 

 

https://disciplinas.dcc.ufba.br/MATA40/SemestreLetivo20082

Compartilhar este post


Link para o post
Compartilhar em outros sites

De um modo bem tosco, você vai ter 3 coisas cadastradas: modelos de carro, cores e cidades. Cada uma em uma lista.

 

 

 

Carros: gol -> palio -> sedan -> corsa -> fusca -> polo

 

Cores: vermelho -> preto -> azul -> branco -> verde

 

Cidades: varginha -> xaxim -> rio branco -> ji-paraná -> mar de espanha

 

 

 

Quando você for inserir as vendas, vai criar uma lista de vendas também. Inicialmente ela vai estar vazia.

 

Quando você ler 3 vendas, você tem que redimensionar o bagulho. Na lista de vendas, ao invés de colocar os dados (isso pode gerar problema de inconsistência), você coloca o deslocamento no qual se encontra o dado em cada lista de cadastro. Dai a lista de vendas se transforma numa lista de struct com 3 posições inteiras: uma p/ cada lista de cadastro.

 

struct Venda{

 

  int pos_carro:8;

 

  int pos_cor:8;

 

  int pos_cidade:8;

 

};

 

 

 

Se você vendeu um sedan azul em rio branco, a lista de vendas fica com o registro (2,2,2). você não tem que tratar as listas como se fossem uma matriz única.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.