Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciência da Computação Algoritmos e Programação de Computadores Atividades a serem desenvolvidas nas sessões de Laboratório Sessão 8: Objetivos: Exercitar a elaboração de programas que utilizam estruturas de dados do tipo vetor de caracteres (strings), além de funções com strings como parâmetros. Atividades: - Em todos os programas abaixo, solicite os dados do usuário e imprima os dados para o usuário usando mensagens explicativas adequadas. - Não se esqueça de utilizar o comando scanf("%[^\n]s%*c",string); para permitir a leitura de espaços em branco. - Você pode usar a função strlen para descobrir o tamanho da string. 1. Uma prova de 10 questões com cinco alternativas (A, B, C, D e E) de múltipla escolha foi aplicada em uma turma. Faça um programa que leia o gabarito em uma string, o número de alunos e as respostas de cada aluno (em uma string), e diga a maior nota obtida. As leituras deverão ser feitas na main(). Crie uma função que recebe o gabarito e uma string com a resposta e retorne para a main() o número de acertos. Chame esta função dentro do loop na main() para cada comparação. EXEMPLO DE ENTRADA: Gabarito: ABCDEABCDE Nro alunos: 3 Respostas aluno 1: ABCAABAAAA Respostas aluno 2: ABCDABAAAA Respostas aluno 3: ABCDEABCDD EXEMPLO DE SAÍDA: Maior nota obtida: 9 2. Uma forma rudimentar de compactação pode ser a representação da multiplicidade de caracteres repetidos. Escreva um programa que leia uma cadeia de caracteres e para cada um deles que possua adjacentes iguais a ele, grave emu ma nova string o número de repetições e apenas uma cópia dele. Caso naquela ocorrência não haja repetições deve ser gravado apenas o caractere sem o número. Tamanho da string: máximo 25 posições. ATENÇÃO: o processo de compactação deve ser feito por uma função que recebe a string de entrada e devolve a string compactada (que deve ser mostrada na main). Exemplo de entrada: AAABCCCCCBBBCCAAA Exemplo de saída: 3AB5C3B2C3A Para transformar o número inteiro em um caractere antes de colocar na string, adicione '0' ao número. Exemplo: frase[j]=cont+'0' onde cont é um número inteiro e frase[j] é uma posição da string (vetor de char). 3. Faça um programa que leia, via teclado, duas strings (de no máx. 20 posições) formadas apenas por letras e espaços brancos. O programa deve repassar estas duas strings para uma função que imprime uma lista das palavras que aparecem simultaneamente nas duas strings. Pode-se supor que em cada uma das strings não há palavras repetidas. Obs: lembre-se de que as frases digitadas podem ser menor que 20. Neste programa a impressão é feita na função. Não há retorno! 4. Crie um programa que leia o nome de uma pessoa (máx. 20 caracteres) e envie para uma função que inverte este nome, ou seja, cria uma nova string com o mesmo conteúdo de trás para frente. Obs: lembre-se de que o nome digitado podem ser menor que 20. A função deve retornar a nova string que será mostrada na main. 5. Faça um programa que contém uma função para copiar n caracteres da string s1 na string s2, começando pela posição i da string s1. O usuário deve informar na main s1, n, e i. As strings s1 e s2 devem ter 20 posições. A string s2 deverá ser criada pela função e mostrada na tela na main. 6. Faça um programa que contém uma função para remover n caracteres de uma string s, a partir da posição i. O usuário deve informar na main s, n, e I que serão repassados à função. A string s deverá ter 20 posições e ser mostrada na tela na main após a remoção dos n caracteres feita pela função na mesma string. 7. Faça um programa que contém uma função que procura uma palavra (pvelha) em uma frase (fr) e a substitui por outra palavra (pnova). Supõe-se que a frase seja formada apenas por palavras e espaços brancos, podendo haver qualquer quantidade de espaços em branco entre as palavras. A string fr deve ter 25 posições e pvelha e pnova devem ter 10 posições. As strings pvelha, pnova e fr deverão ser repassadas para a função que criará uma nova string para guardar a nova frase. Esta nova frase deverá ser mostrada na tela na main. 8. Faça um programa que leia na main uma string de 25 posições. Assuma que seja formada apenas por letras e espaços brancos. Esta string deverá ser passada para uma função que criará outra string, formada pelas mesmas palavras, na mesma ordem, mas cada uma delas escrita em ordem inversa. O programa deve mostrar a nova string na tela na main. Exemplo: Entrada: abcd ghi rstu vwxyz Saída: dcba ihg utsr zyxwv 9. Na tabela ASCII, os dígitos de '0' a '9' estão em uma sequência. Isso significa que: '0' - '0' = 0 '9' - '0' = 9 c - '0' = número representado por c, se c é um dígito. Utilizando esta idéia, faça uma função que recebe uma string composta apenas por dígitos e retorna o número inteiro que esta string representa (na base 10). Exemplo de entrada (lida como string): 089568 Saída (como inteiro): 89568
Compartilhar