Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
UTFPR - Universidade Tecnológica Federal do Paraná DACOM - Departamento de Computacão LT33B :: Estrutura de Dados Exercícios 02 :: Funções, Strings e Arrays Instruções Gerais ● Cada exercício deverá ser escrito em uma ou mais funções. Todo o código deve estar em um único arquivo cpp. Ao final, envie-o pelo Moodle. ● Utilize os recursos da linguagem C++ para facilitar a implementação ○ Tipo string, objeto cout para escrita no console e objeto cin para entrada do console ○ Não é permitido utilizar funções da biblioteca que resolvam os problemas de forma direta. ● Os materiais utilizados para revisão de C/C++ estão disponíveis em: https://www.tutorialspoint.com/cplusplus/ Exercício 01 Escreva uma função que recebe como parâmetros uma string e um caractere. A função deve então retornar a posição da primeira ocorrência do caractere na string. Para obter o tamanho de uma string C++ use: string str = “texto de teste”; int tam = str.size(); Assinatura: int stringFindFirst(string s, char c); Exemplo de uso: int pos = stringFindFirst(“o rato roeu a roupa do rei de roma”, ‘r’); // pos = 2 Exercício 02 Escreva uma função que recebe como parâmetros uma string e um caractere. A função deve então retornar a posição da última ocorrência do caractere na string. Assinatura: int stringFindLast(string s, char c); Exemplo de uso: int pos = stringFindLast(“o rato roeu a roupa do rei de roma”, ‘r’); // pos = 30 Exercício 03 Escreva uma função que verifica se um caractere é uma letra. Ela deve retornar true para letra ou false caso contrário. Assinatura: bool isLetter(char c); Exemplo de uso: bool check = isLetter(‘a’); // check = 1 (true) Sugestão de implementação: Dentro da função, declare uma variável local string contendo todas as letras do alfabeto: string letras = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" O algoritmo deverá percorrer esta string, comparando o caractere fornecido c com cada uma das posições da string. Caso c seja encontrado na string, então ele é uma letra (retorna true). Se percorrer a string por completo e não o encontrar, devolve false. Exercício 04 Escreva uma função que verifica se um nome é válido, isto é, formado apenas por letras e espaços. Utilize a função do exercício anterior para verificar se cada caractere da string é uma letra. É permitido haver um único espaço entre cada palavra do nome (exceto no início e no final). Assinatura: bool checkName(string s) Exemplo de uso: bool check = checkName(“Chuck Kick Norris”); // check = 1(true) Exercício 05 Escreva uma função que recebe uma letra e devolve a mesma em maiúscula. Sugestão de implementação: Dentro da função, declare duas variáveis: uma contendo todas as letras do alfabeto em minúsculo e outra contendo as mesmas letras em maiúsculo: string lower = "abcdefghijklmnopqrstuvwxyz"; string upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; O algoritmo deverá percorrer a string das minúsculas procurando pela letra fornecida. Ao encontrá-la, deve devolver a letra na mesma posição da string de maiúsculas. Assinatura: char toUpperCase(char c) Exercício 06 Escreva uma função que recebe uma string contendo somente letras minúsculas. Ela deve retornar uma nova string contendo as mesmas letras em maiúsculas. Use a função do exercício anterior para encontrar a maiúscula correspondente de cada letra da string original. Assinatura: string toUpperCase(string s) Exercício 07 Escreva uma função que cria e devolve um array de inteiros alocado manualmente (int*). O array deve ser preenchido com números em ordem crescente (order=true), iniciando em 1, ou em ordem decrescente (order=false), iniciando em N. A função deve receber dois parâmetros: o tamanho do array e a ordem do preenchimento (ASC ou DESC). Assinatura: int* createArray(int n, bool asc); Exercício 08 Escreva uma função que recebe dois arrays de inteiros e devolve um terceiro, alocado manualmente (int*), que concatena os elementos de ambos. O array retornado deve ser criado internamente, pela função. Assinatura: int* arrayConcat(int* v1, int* v2); Exemplo: int v1[] = { 2, 9, 6, 1 }; int v2[] = { 3, 7, 7, 9 }; int* v3 = arrayConcat(v1, v2); // resultado { 2, 9, 6, 1, 3, 7, 7, 9}; Exercício 09 Escreva uma função que recebe dois arrays de inteiros ordenados crescentemente e devolve um terceiro, alocado manualmente (int*), que mescla os elementos de ambos. O array retornado deve ser criado internamente, pela função. Você deve assumir que os arrays de entrada estão ordenados. Assinatura: int* arrayMerge(int* v1, int* v2); Exemplo: int v1[] = { 1, 2, 4, 6, 8 }; int v2[] = { 3, 5, 9, 20 }; int* v3 = arrayMerge(v1, v2); // resultado {1, 2, 3, 4, 5, 8, 9, 20};
Compartilhar