Buscar

TVC1-2012-2-TurmaC

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Universidade Federal de Juiz de Fora - ICE/DCC - 1º TVC de Laboratório de Programação II
Aluno(a): ______________________________________________________________________Turma:__________
Para as questões (1) e (3), considere as seguintes definições:
	class No {
 private:
 int info;
 No * prox;
 public:
 No();
 int getInfo(){ return info; }
 void setInfo(int f){ info = f;}
 No * getProx() { return prox; }
 void setProx(int* p){ prox = p; }
}
	class Lista {
 private:
 No * prim;
 public:
 Lista();
 ~Lista();
 void imprime();
 void op1(int x);
 void op2();
 // …
}
Questão 1. (30 pontos)
Dadas as operações abaixo e o seguinte programa principal, indique o que será impresso. 
 
	void Lista::op1(int x){
 if(x>0 && x%2==0){
 No * a = new No();
 a->setInfo(x);
 if(prim==NULL){
 prim=a;
 a->setProx(NULL);
 } else {
 a->setProx(prim);
 prim=a;
 }
 }
}
void Lista::op2(){
 if(prim!=NULL){
 No * a = NULL;
 No * b = prim;
 while(b->getProx()!=NULL){
 a = b;
 b = b->getProx();
 }
 if(b!=NULL){
 if (a==NULL)
 prim = b->getProx();
 else 
 a->setProx( b->getProx() );
 delete b; 
 }
 }
}
	int main()
{
 int i; Lista * l = new Lista();
 l->op2();
 l->op1(6);
 for(i=2; i<8; i++) l->op1(i+5);
 l->op1(40);
 l->op1(90);
 l->op2();
 l->imprime(); // TESTE 1
 l->op1(-22);
 l->op1(22);
 l->op2();
 l->op2();
 for(i=30; i>=25; i--) l->op1(i+1);
 l->imprime(); // TESTE 2
 return 0;
}
Questão 2. (40 pontos)
Considere o TAD CarrinhoDeCompras para armazenar os dados de compra em um supermercado. Este TAD deve armazenar o número do cliente, o código dos itens adquiridos assim como o número de itens no carrinho de compra. O cliente pode comprar, no máximo, até 15 produtos. Sendo assim, deve-se utilizar um vetor para armazenar os códigos dos itens no carrinho. O TAD deve conter métodos para: comprar um item; imprimir os itens comprados; e remover um item que está no carrinho de compras, dado o seu código. Atenção: o TAD CarrinhoDeCompras guarda a as informações de compra de um único cliente.
(a) Criar a definição do TAD CarrinhoDeCompras (CarrinhoDeCompras.h), baseado na descrição dada acima;
(b) Implementar o método para comprar um item, dado seu código;
(c) Implementar o método para imprimir o código de todos os itens no carrinho do cliente;
(d) Implementar o método que remove um item do carrinho, dado seu código;
(e) Considere que precisamos alterar o TAD CarrinhoDeCompras de forma que o cliente possa comprar quantos itens desejar. Mostre como deveria ser o arquivo de definição (.h) para permitir tal alteração.	 
Questão 3. (30 pontos)
Considere o TAD Lista, o qual é representado por uma lista simplesmente encadeada (conforme apresentado no cabeçalho desta prova). Considerando a definição da estrutura dada, implemente as seguintes operações do TAD, respeitando aos protótipos sugeridos, abaixo:
	 	 	 	
(a) bool Lista::verifica(int x) 
(verifica se um elemento de valor x está na lista ou não)
(b) void Lista::removePrimeiro() 
(remove o primeiro elemento da lista)
(c) int * Lista::getArray()
(retorna um vetor do tamanho da lista contendo todos os elementos da lista)
Observações:
No item (c), a operação getArray() deve contar quantos nós a lista encadeada possui e copiar o conteúdo de cada nó para um vetor. Esse vetor deve ser alocado de forma dinâmica com um tamanho igual ao total de elementos da lista. Para alocar o vetor de forma dinâmica, use o operador new do C++.

Outros materiais