Baixe o app para aproveitar ainda mais
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++.
Compartilhar