Buscar

Exercicios de String e Arrays p/ Estrutura de Dados C++

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};

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais