TRABALHO 1 CI067 1o. Semestre 2012 Entregar os programas correspondentes aos exercícios abaixo. Os programas devem ser desenvolvidos e entregues até o dia 05/04/2012. A avaliação consistirá na análise do programa pelo professor durante as aulas e após a entrega. A entrega dos programas deve ser feita durante a aula do dia 05/04/2012, utilizando o ambiente web BOCA (http://maratona.c3sl.ufpr.br/ci067/), conforme orientações que serão dadas durante a aula. A entrega do trabalho é individual. Códigos iguais em 85% serão considerados plágios e as notas reflitirão esta condição. Programas que apresentarem erros de compilação terão nota 0 (zero). Programas que apresentarem falhas de segmentação sem que qualquer resultado possa ser verificado terão nota 0 (zero). ATENÇÃO: Alunos que se ausentarem sem justificativa à aula do dia ======= 05/04/2012 terão nota 0 (zero). Somente serão aceitas justificativas previstas no artigo 106, Seção V, Res. 37/97-CEPE. EXERCÍCIOS: =========== 1. Números binários ------------------- Um professor preparou uma prova de soma de dois números binários para os alunos do ensino médio técnico. Entretanto, como o professor queria criar um desafio para os alunos ele gerou uma prova contendo os digitos dos números binários embaralhados e o resultado em decimal. Sua tarefa neste problema é escrever um programa que lê dois números binários, reorganize os digitos binários de tal forma que o resultado final da soma convertido pra decimal seja igual ao resultado especificado na entrada. O resultado será composto pelos dois números binários com os digitos posicionados corretamente. ENTRADA ------- A entrada é composta de dois números binários (B1, B2 >= 0) com N dígitos 0 e 1 (1 <= N <= 100), seguidos do resultado da soma destes dois números representado em decimal. O programa termina quando o primeiro valor da entrada é -1. SAÍDA ----- Para cada instância, você deverá informar os dois números binários com os bits posicionados corretamente. EXEMPLO ------- ENTRADA | SAÍDA --------------------|------------------------- 00001 00001 20 | 10000 00100 00001 00011 11 | 01000 00011 -1 | ---------------------------------------------- ============================================================== 2. Moda de um vetor ------------------- A MODA de um vetor de números é o número M no vetor que é repetido com maior freqüência. Se mais de um número for repetido com freqüência máxima igual, não existirá uma moda. Escreva um programa em C receba um conjunto de vetores e mostre a moda de cada um deles ou uma indicação de que o vetor não tem moda. ENTRADA ------- A entrada é composta por diversos vetores. Cada vetor é antecedido pelo seu tamanho N (1 <= N <= 50). A entrada termina quando o tamanho de um vetor é 0 (zero). SAÍDA ----- Para cada vetor lido, imprimir na saída padrão o valor da moda do vetor, ou a frase "VETOR NÃO TEM MODA". EXEMPLO ------- ENTRADA | SAÍDA ------------------------------------------------------|------------------------- 10 |VETOR NAO TEM MODA 1 2 3 4 5 6 7 8 9 10 |6 20 |VETOR NAO TEM MODA 1 1 2 1 2 3 4 3 4 4 5 6 7 6 6 5 4 6 6 6 | 20 | 1 1 2 4 2 3 4 3 4 4 5 6 7 6 6 5 4 6 7 6 | 0 | -------------------------------------------------------------------------------- ============================================================== 3. Multiplica Matrizes ---------------------- Calcule a multiplicação entre um conjunto de pares de matrizes. A entrada será formada por diversos conjuntos contendo o tamanho M de linhas e N de colunas (2 <= M,N <= 50) e o conjunto de valores de cada matriz. Faça um programa que leia os conjuntos de matrizes da entrada padrão e calcule o produto entre elas. O resultado deve ser enviado para a saída padrão. ENTRADA ------- A entrada é do tipo ASCII (texto) e consiste de uma linha contendo a dimensão da matriz, seguida dos valores da matriz. A cada duas matrizes lidas, uma multiplicação deve ser efetuada. O final da entrada é indicado com os valores -1 e -1 como dimensão da matriz. Pode-se assumir que as dimensões das matrizes SEMPRE serão válidas. Os valores são sempre números inteiros entre -1000000 e 1000000. SAÍDA ----- A saída (também do tipo ASCII) deve conter para cada conjunto de duas matrizes lidas da entrada, uma linha com a ordem da matriz, seguida do resultado da multiplicação. EXEMPLO ------- ENTRADA | SAÍDA --------------------|------------------------- 2 2 |2 2 1 2 |15 10 3 7 |49 31 2 2 |3 3 7 8 |52 90 20 4 1 |28 62 67 3 3 |42 74 34 2 4 2 |3 3 9 2 2 |48 88 18 4 3 3 |24 60 65 3 3 |36 71 31 0 2 7 | 12 21 1 | 2 1 1 | 3 2 | 2 4 | 9 2 | 4 3 | 2 3 | 0 2 7 | 12 21 1 | -1 -1 | ---------------------------------------------- ============================================================== 4. Conta Strings ---------------- Faça um programa que receba vários conjuntos contendo um texto e uma string de consulta. Para cada conjunto, o programa deve indicar indicar quantas vezes a string de consulta aparece no texto. Neste programa, é obrigatório o uso exclusivo da função 'getchar()' para a leitura da entrada, e apenas a biblioteca pode ser utilizada. ENTRADA ------- O programa deve ler da entrada padrão vários conjuntos de textos. Cada conjunto contém na 1a. linha a string de consulta (tamanho máximo de 255 caracteres). A partir da linha seguinte vem o texto, cuja última linha possui apenas "....." (5 pontos seguidos) indicando o final do conjunto. Se a linha contendo a string de consulta possuir apenas "00000" (5 zeros seguidos), o programa deve encerrar a leitura dos dados de entrada e termina. O texto deve ter no máximo 2560 caracteres (incluindo '\n' e excluindo a última linha). Caso o texto informado na entrada ultrapasse este limite, o excesso deve ser descartado (mas o programa deve continuar processando os próximos textos, após os "....."). SAÍDA ----- Para cada texto lido, o programa deve imprimir a quantidade de vezes que a string de consulta apareceu no texto associado. EXEMPLO ------- ENTRADA | SAÍDA ------------------------------------------------------|------------------------- fato |1 o fato de que as pessoas são boas cidadas mas gostam |2 de dar um jeitinho somente acontece na Transilvania. |1 ..... | conjunto | O programa deve ler da entrada padrao varios | conjuntos de textos. Cada conjunto contem na 1a.linha | a string de consulta (tamanho máximo de 255 | caracteres). | ..... | saia justa | O Seu Manoel da padaria ficou numa saia justa quando | o guarda disse a ele que sua espeosa estava com a | saia rasgada. | ..... | 00000 | -------------------------------------------------------------------------------- ==============================================================