sparse matrix coding

Embed Size (px)

Citation preview

  • 7/23/2019 sparse matrix coding

    1/8

    Prof. Dr. Fbio Roberto [email protected]

    Departamento de Matemtica.

    Lista de Exerccio 7

    1. Escreva uma funo que aceite uma matriz celular de cadeia de caracteres eclassifique em ordem ascendente de acordo com a ordem lexicogrfica do conjuntode caracteres ASCII (Voc pode utilizar a funo c_strcmp para comparao se

    quiser).

    2. Escreva uma funo que aceite uma matriz celular de cadeia de caracteres eclassifique em ordem ascendente de acordo com a ordem alfanumrica (issoimplica que voc deve tratar A e a como a mesma letra).

    3. Crie uma matriz esparsa 100 x 100 a qual cerca de 5% dos elementoscontenham valores aleatrios distribudos normalmente, e todos os outroselementos sejam zero (use a funo sprandn para gerar esses valores). A seguir,estabelea que todos os elementos da diagonal da matriz sejam 1. Em seguida,defina uma matriz de coluna esparsa com 100 elementos b, e inicie essa matrizcom 100 valores distribudos uniformemente, produzidos pela funo rand.Responda s seguintes questes sobre essas matrizes:

    a. Crie uma matriz completa a_full a partir da matriz esparsa a. Compare a memrianecessria para armazenar a matriz completa e a matriz esparsa. Qual maiseficiente?

    b. Faa um diagrama da distribuio de valores na matriz a, usando a funo spy.

    c. Crie uma matriz completa b_full a partir da matriz esparsa b. Compare a

    memria necessria para armazenar a matriz completa e a matriz esparsa. Qual mais eficiente?

    d. Resolva o sistema de equaes a*x=b para x usando ambas as matrizes, completae esparsa. Como os dois conjuntos de respostas se comparam? Mea o tempo paraas duas solues. Qual a mais rpida ?

    4. Crie uma funo que aceite qualquer nmero de argumentos numricos deentrada e faa a soma de todos os elementos individuais em todos os argumentos.

    Teste sua funo passando por ela os quatro argumentos a= 10,

    2

    2

    4

    b ,

    021

    215

    301

    c e d=[1 5 -2].

    5. Modifique a funo do exerccio anterior de modo que ela possa aceitar matrizesnumricas comuns ou matrizes celulares com valores numricos. Teste sua funo

  • 7/23/2019 sparse matrix coding

    2/8

    Prof. Dr. Fbio Roberto [email protected]

    Departamento de Matemtica.

    passando para ela os dois argumentos a e b, onde

    32

    41a , b{1}=[1 5 2] e

    12

    212b .

    6. Crie uma matriz estrutura que contenha todas as informaes necessrias paraconstruir um diagrama de um conjunto de dados. No mnimo, a matriz estruturadeve conter os seguintes campos:

    x_data x-data (um ou mais conjuntos de dados em clulas separadas)y_data y-data (um ou mais conjuntos de dados em clulas separadas)type linear, semilogx e assim por diante.plot_title ttulo do diagramax_label rtulo do eixo x.y_label rtulo do eixo y.x_range faixa de x a colocar no diagrama

    y_range faixa de y a colocar no diagrama

    Voc pode acrescentar campos adicionais que aumentem seu controle sobre odiagrama final.

    Depois de criar essa matriz estrutura, crie uma funo que aceite umamatriz dessa estrutura e produza um diagrama para cada estrutura da matriz. Afuno deve aplicar caractersticas iniciais inteligentes se alguns campos de dadosestiverem faltando. Por exemplo, se o campo plot_title for uma matriz vazia, afuno no deve colocar um ttulo no grfico. Pense cuidadosamente sobre ascaractersticas iniciais adequadas antes de comear a escrever a sua funo!

    Para testar sua funo, crie uma matriz estrutura que contenha os dadospara trs diagramas de trs tipos diferentes e passe aquela matriz estrutura para asua funo. A funo deve construir corretamente diagramas para todos osconjuntos de dados, em trs janelas diferentes de figuras.

    7 Faa um programa que realize o cadastro de contas bancrias com as seguintesinformaes:

    Numero da conta

    Nome do cliente

    Saldo

    O banco permitir o cadastramento de apenas quinze contas e no poder havermais que uma conta com o mesmo nmero. Crie o menu de opes a seguir.Menu de opes:

    1. Cadastrar contas.2. Visualizar todas as contas de determinado cliente.3. Excluir a conta com o menor saldo (supondo a no- existncia de saldos

    iguais).4. Sair

    Algoritmo Soluo:

    AlgoritmoDeclare conta[15] REGISTRO (num, saldo NUMERICO, nome LITERAL)

  • 7/23/2019 sparse matrix coding

    3/8

    Prof. Dr. Fbio Roberto [email protected]

    Departamento de Matemtica.

    i, op, posi, achou, num_conta, menor_saldo NUMERICOnome_cliente LITERAL

    PARA i=1 ate 15 FAA

    INICIOConta[i].num = 0Conta[i].nome = Conta[i].saldo = 0

    FIMposi =1

    REPITAESCREVA Menu de OpesESCREVA 1Cadastrar ContasESCREVA 2 Visualizar todas as contas de determinado cliente

    ESCREVA 3 Excluir conta com menor saldoESCREVA 4 SairESCREVA Digite sua OpoLEIA opSe op < 1 OU op>4ENTAO ESCREVA Opo Invalida

    Se op = 1ENTAO INICIOSe posi > 15ENTAO ESCREVA Todas as contas j foram cadastradas !SENAO INICIO

    Achou = 0ESCREVA Digite o numero da conta a ser includaLEIA num_contaPARA i=1 ATE posi-1 FAAINICIO

    Se num_conta = conta[i].numEnto achou = 1

    FIMSe achou = 1

    Ento ESCREVA J existe conta cadastrada com esse numero

    Seno INICIOConta[posi].num = num_contaESCREVA Digite o nome do clienteLEIA conta[posi].nomeESCREVA Digite o saldo do clienteLEIA conta[posi].saldoESCREVA Conta cadastrada com sucessoPosi = posi +1FIM

    FIMFIM

    Se op = 2ENTAO inicio

    ESCREVA Digite o nome do cliente a ser consultado

  • 7/23/2019 sparse matrix coding

    4/8

    Prof. Dr. Fbio Roberto [email protected]

    Departamento de Matemtica.

    LEIA nome_clienteAchou = 0PARA i=1 ATE posi-1 FAAINICIOSe conta[i].nome = nome_cliente

    ENTAO INICIOESCREVA conta[i].num, conta[i].saldoAchou = 1

    FIMFIM

    Se achou = 0ENTAO ESCREVA No existe conta cadastrada para este cliente

    FIM

    Se op=3ENTAO INICIO

    Se posi = 1ENTAO ESCREVA Nenhuma conta foi cadastradaSENAO INICIOMenor_saldo = conta[i].saldoAchou = 1i = 2ENQUANTO i < posi FAAINICIOSe conta[i].saldo < menor_saldo

    ENTAO INICIOMenor_saldo = conta[i].saldoAchou = 1

    FIMi=i+1

    FIMPARA i=achou ate posi-1 FAAINICIOConta[i-1].num = conta[i].numConta[i-1].nome = conta[i].nomeConta[i-1].saldo = conta[i].saldoFIM

    ESCREVA Conta excluda com sucessoPosi = posi 1

    FIMFIMATE op = 4FIM_ALGORITMO

    8 Uma Auto-Escola possui um cadastro de alunos, no ordenado. Cada item docadastro possui as informaes definidas no registro abaixo. Fazer a definio doregistro, em C++ que encontre o aluno mais novo que pertence ou pertenceu a

    escola e escreva seus dados: (Max. 50 alunos).

  • 7/23/2019 sparse matrix coding

    5/8

    Prof. Dr. Fbio Roberto [email protected]

    Departamento de Matemtica.

    Obs.: Idade deve ser real pois o aluno pode possuir 18.1 anos.(Supor que noexistam dois alunos com a mesma idade).

    /*Algoritmo que l o cadastro de alunos de uma auto-escola, encontra o aluno maisnovo e escreve seus dados. */

    incio

    // Defnio de constantes

    constante QTDE_MAX_ALUNOS=50, TAM_NOME=50;// Definio de novos tiposregistro DATA // Definio do registro de uma dataincio

    inteiro dia, mes, ano;

    fimregistro fichaAlunoAutoEscola // Definio da Ficha de um aluno daauto escola

    incio

    caracter nomeAluno[TAM_NOME+1],endereco[TAM_ENDERECO+1];DATA dataInsc, dataCarta;real idade;

    fim;// Declarao de VariveisfichaAlunoAutoEscola aluno[QTDE_MAX_ALUNOS];inteiro contAluno; // Contador de quantidade de alunos informada

    inteiro posicaoMenorIdade; // posicao do aluno com menor idadeinteiro qtdeAlunos; // Quantidade total de alunos informadareal idadeMenor; // Menor idade de todos os alunoscaracter temAluno; // Auxiliar no controle de entrada de dados dealuno// Desenvolvimento do algoritmocontAluno = -1;// Leitura dos dados de todos os Alunosescreva ("Tem dados de aluno? (S/N):"); leia( temAluno );enquanto((( temAluno == 'S') OU (temAluno == 's')) E (contAluno 0) entoincio

    escreva("O aluno ", aluno[posicaoIdadeMenor].nome, "com idade ", idadeMenor);escreva(" residente no endereo ",aluno[posicaoIdadeMenor].endereco);escreva(" inscrio na data",aluno[posicaoIdadeMenor].dataInsc.dia, "/");escreva(aluno[posicaoIdadeMenor].dataInsc.mes,"/" );escreva(aluno[posicaoIdadeMenor].dataInsc.ano );

    escreva(" tirou a carta em ",aluno[posicaoIdadeMenor].dataCarta.dia, "/");escreva(aluno[posicaoIdadeMenor].dataCarta.mes,"/"

  • 7/23/2019 sparse matrix coding

    7/8

    Prof. Dr. Fbio Roberto [email protected]

    Departamento de Matemtica.

    );escreva(aluno[posicaoIdadeMenor].dataCarta.ano );escreva(" foi o aluno que tirou carta com menor idadenesta auto escola.");

    fim

    fim

    9 Dado o Registro de um funcionrio de uma empresa com o layout abaixo:

    Pede-se:

    a) Definir o tipo do registro com o nomeTRFUNC.

    b) Fazer um programa C++ que leia asfichas de funcionrios, a seguir, leianmeros de funcionrios encontre oregistro correspondente e escreva seusdados. Caso contrrio escrever amensagem "funcionrio inexistente". Otrmino da busca ocorre quandofornecido nmero do funcionrio igual a-1.

    10 Dado o Registro com o layout abaixo:NomeDia de AniversrioMs de Aniversrio

    Pede-se:

    Incluir 10 registros de pessoas (Opo de Incluso)

    Mostre em cada um dos meses do ano quem so as pessoas que fazemaniversrio, exibir tambm o dia. Considere um conjunto de pessoasincludas anteriormente. (Opo de Consulta)

    Sada do Programa.

    11 Dado o Registro com o layout abaixo:Nome da lojaTelefonePreo de um eletrodomstico (Ex: TV)

    Pede-se:

    Incluir 10 registros de preos (Opo de Incluso)

    Calcular a mdia dos preos cadastrados (Opo Mdia) Exibir uma relao contendo o nome e o telefone das lojas cujo preo estava

    abaixo da mdia (Opo Consulta)

  • 7/23/2019 sparse matrix coding

    8/8

    Prof. Dr. Fbio Roberto [email protected]

    Departamento de Matemtica.

    Sada do Programa.

    12 Tendo um registro contendo RA do aluno, tipo de participao (A, B, C ou D) e

    scio da SBC Sociedade Brasileira de Computao (S-sim ou N-no), desenvolverum algoritmo para calcular o valor que cada aluno vai pagar para participar dasemana das profisses, sabendo-se que:

    Tipo de Participao Valor a Pagar

    A - 1 curso R$ 30,00B - 2 cursos R$ 60,00C - 3 cursos R$ 90,00D - outros R$100,00

    Para os scios da SBC o valor a pagar ter um desconto de 50%. O algoritmodever permitir a entrada de vrios registros (no mximo 1000) at que umacondio de finalizao seja satisfeita. Calcular e exibir tambm o total geralarrecadado com o evento e quantos alunos se matricularam em cada um dos tiposde participao.