INF 1005 Programação I lista 12



Documentos relacionados
P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

INTRODUÇÃO À LINGUAGEM C++

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

INF 1007 Programação II

Programação: Estruturas de seleção

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Conceitos básicos da linguagem C

Exercícios de Revisão Java Básico

Trabalho Prático 1 Tipos Abstratos de Dados

Linguagem de Programação I

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Estrutura de Dados Básica

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

INF 1005 Programação I

Estrutura Condicional em Java

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Variáveis e Comandos de Atribuição

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Trabalho 3: Agenda de Tarefas

02. [Manzano, 1996] Escreva um programa em C que apresente os quadrados dos números inteiros de 15 a 200.

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Tabela ASCII de caracteres de controle

LINGUAGEM C. Estrutura básica de um programa

Manual do Usuário. Protocolo

Algoritmos e Programação

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

fx-82ms fx-83ms fx-85ms fx-270ms fx-300ms fx-350ms

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Variáveis, Expressões, Atribuição, Matrizes, Comandos de Desvio

Manual de Utilização do PDV Klavix

7. Estrutura de Decisão

20 Caracteres - Tipo char

14.1 Vetor - Problemas

LINGUAGEM C UMA INTRODUÇÃO

Configurando a emissão de boletos no sistema

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Introdução a Computação

A linguagem C oferece quatro estruturas de decisão: if, if-else, switch e o operador condicional.

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

9 Comandos condicionais

String em C++ Verificando o tamanho da string

Esse produto é um produto composto e tem subprodutos

SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA)

Unidade 5: Sistemas de Representação

I Semana de Software Livre da USP Dojo C

Lista de Exercícios 3 Estruturas de Controle Profa Susana M Iglesias

Convertendo Algoritmos para a Linguagem C

Manual do Usuário - ProJuris Web - Biblioteca Jurídica Página 1 de 20

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

VII MARATONA DE PROGRAMAÇÃO UERJ 17/05/2014. Este caderno contém 12 páginas com a descrição de 10 problemas 1 definidos a seguir:

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

5 Apresentando a linguagem C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Manual do Usuário. Sistema para Administração de Condomínios MANUAL USUÁRIO. Bancos do Condomínio. ENG Sistemas - 1 -

CRÉDITO CONSIGNADO ITAÚ. Procedimento de Rescisão de Funcionários

JUROS SIMPLES. Onde: n é o número de períodos (number of periods) ou prazo em dias; i é o índice da taxa de juros (index) anual;

Algoritmos e Programação Estruturada

Lista de Exercícios da 3ª Unidade. ( Ponteiros, Alocação dinâmica, Arquivos, Estruturas de Dados)

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

JavaScript (ou JScript)

Trabalho Prático 1 Revisão de Programação, Tipos Abstratos de Dados e Combinação de Alocação Estática e Dinâmica de Memória

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

Trabalho de laboratório Avaliação semestral Exame final MÉDIA PONDERADA CONCEITO

Criar as tabelas para um banco de dados

Computação II Orientação a Objetos

Especificação do Trabalho Prático

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Para os demais formatos, o relatório será gerado mas virá com configurações incorretas.

Capítulo 2: Introdução à Linguagem C

Programação: Tipos, Variáveis e Expressões

Java Como Programar, 8/E

1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP

Usando o do-file editor Automatizando o Stata

Parâmetros de Utilização e Manutenção das Mensagens do Informa Online Maio 2007

TUTORIAL PARA PREPARAÇÃO E IMPORTAÇÃO DE DADOS PARA. Os dados de suas coletas devem ser organizados em uma planilha eletrônica, de modo

Implantação do sistema Condominium

Implementando uma Classe e Criando Objetos a partir dela

Notas de Cálculo Numérico

O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.

1223o TUTORIAL PRÉ-VENDA. Realização: DEPARTAMENTO DE IMPLANTAÇÃO EQUIPE DE DOCUMENTAÇÃO

OBI2012 Caderno de Tarefas

Tipos agregados. Tipos estruturados

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes

Sumário. 1. Propósito 1 2. Tabela de Ferragem 1 3. Criar Tabela de Ferragem 1 4. Conector de Ferragens 7

IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org

LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA VERSÃO 2

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

WINDOWS EXPLORER. O organizador

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Programação científica C++

Financeiro - Boleto : Remessa e Retorno

Transcrição:

INF 1005 Programação I lista 12 Caracteres e cadeias de caracteres (strings) 1. [tarefa 42] Implemente e teste uma função que receba uma string como parâmetro e modifique essa string trocando todos os caracteres minúsculos por maiúsculos e vice-versa. Caracteres que não forem letras não devem ser alterados. Por exemplo, se for passado como parâmetro a string "PUC-Rio", essa função deve transformar essa string em "puc-rio". Essa função deve obedecer o seguinte protótipo: void inverte_letra (char str[]); 2. [tarefa 43] Implemente e teste uma função que receba como parâmetro uma string e dois caracteres (original e novo), e substitua todas as ocorrências do caractere original na string pelo caractere novo. Essa função deve obedecer o seguinte protótipo: void troca_letra (char str[], char original, char novo); 3. [tarefa 44] Implemente e teste uma função que receba como parâmetro uma string e a inverta. Por exemplo, recebendo como parâmetro a string Aluno, essa função transformaria a string em onula. Essa função deve obedecer o seguinte protótipo: void inverte_string (char str[]); 4. Uma palavra é denominada um palíndromo se for mantida igual quando invertida. Algumas palavras que são palíndromos são: aba, radar, reter, rever, rir, rotor, dentre outras. Implemente e teste uma função que verifique se uma palavra digitada pelo usuário é ou não um palíndromo. 5. Implemente e teste uma função que leia uma string e imprima as palavras em ordem inversa à lida. Considere que cada palavra é separada por apenas um espaço. Por exemplo: Isto é um exemplo ===> exemplo um é Isto 6. Modifique a função anterior considerando que cada palavra pode ser separada por uma quantidade qualquer de espaços. 7. Implemente e teste um programa que leia um nomes completos e imprima: a) as iniciais de todos os componentes do nome e o sobrenome completo. Por exemplo: João Pedro Albuquerque Cardoso Silva ===> J P A C Silva b) o sobrenome completo e as iniciais de cada nome. Por exemplo: João Pedro Albuquerque Cardoso Silva ===> Silva J P A C 8. Implemente e teste uma função que receba duas strings, verifique se a string2 é substring da string1 e retorne 0 se string2 não for substring da string1 ou a posição onde a string2 ocorre pela primeira vez na string1. Por exemplo: substr_pos("banana","ana") retorna 1. 9. Implemente e teste uma função que receba duas strings, verifique se a string2 é substring da string1 e retorne 0 se string2 não for substring da string1 ou o número de vezes que a string2 ocorre na string1. Exemplo: substr_qt("banana","ana") retorna 2. 10. Implemente e teste uma função que receba 3 strings e substitua todas as ocorrências da string2 na string1 pela string3, retornando o número de substituições realizadas. Por exemplo: string1:"banana" string2: "ana" string3: "or" ==> string1: "borna" retorna 1 Hélio Côrtes Vieira Lopes lopes@inf.puc-rio.br Departamento de Informática Rua Marquês de São Vicente, 225 Gávea 22451-900 Rio de Janeiro RJ Tel. (21) 3527-1500 r.4350 Fax (21) 3527-1530

string1: "banana" string2: "ana" string3: "ora" ==> string1: borora retorna 2 11. Implemente e teste uma função que receba uma string e embaralhe suas letras, utilizando as funções srand e rand da biblioteca padrão stdlib. 12. [tarefa 36] Considere um arquivo de texto que contém o cadastro dos alunos de uma turma. Cada linha do arquivo contém o nome do aluno, delimitado por aspas simples, e três notas obtidas pelo aluno, representadas por números reais. Considere que os nomes dos alunos têm no máximo 80 caracteres. O arquivo pode conter eventuais linhas em branco. Um exemplo deste formato é mostrado abaixo: 'Fulano de Tal' 5.6 7.6 8.1 'Sicrano Silva' 2.0 4.6 4.2 'Beltrano Alves' 10.0 8.8 9.0 Escreva um programa completo que leia o arquivo "entrada.txt", que contém um cadastro de alunos no formato descrito acima, e imprima na tela, com uma casa decimal, a maior média obtida por um aluno considerando as três notas com pesos iguais. Se não for possível abrir o arquivo, o programa deve ter como saída a mensagem "ERRO". Se não existir nenhum aluno descrito no arquivo (arquivo existente, mas vazio), deve-se imprimir a mensagem "VAZIO". 13. Considere um arquivo de texto que contém o cadastro dos alunos de uma turma. Cada linha do arquivo contém o nome do aluno, delimitado por aspas simples, e três notas obtidas pelo aluno, representadas por números reais. Considere que os nomes dos alunos têm no máximo 80 caracteres. O arquivo pode conter eventuais linhas em branco. Um exemplo deste formato é mostrado abaixo: 'Fulano de Tal' 5.6 7.6 8.1 'Sicrano Silva' 2.0 4.6 4.2 'Beltrano Alves' 10.0 8.8 9.0 Escreva um programa completo que leia o arquivo "entrada.txt", que contém um cadastro de alunos no formato descrito acima, e escreva num arquivo "saida.txt" os nomes, notas e a média aritmética (com uma casa decimal) de cada aluno. Se não for possível abrir o arquivo de entrada (ou de saída), o programa deve imprimir na tela a mensagem "Erro ao abrir o arquivo de entrada" (ou "Erro ao abrir o arquivo de saída"). Se não existir nenhum aluno descrito no arquivo (arquivo existente, mas vazio), deve-se imprimir a mensagem "Arquivo vazio". 14. Implemente e teste um jogo da forca, que leia as palavras que podem ser utilizadas de um arquivo de dicionário, escolhe uma palavra aleatoriamente e permite que o usuário tente adivinhar a palavra, digitando um caractere de cada vez, e permitindo até 5 erros. Desafio: a cada tentativa, exiba as letras já digitadas, redesenhe a palavra com lacunas nas letras ainda não descobertas e a forca no estado atual. 1) Faça um programa que implemente uma máquina de calcular com operações +, -, *, / e %, através da leitura de dois operandos numéricos inteiros e do operador (tipo caracter), no formato: operando1 operador operando2. Verifique casos de operações que não podem ser realizadas (antes de operá-las). 2) Faça um programa que calcula a área de determinadas figuras geométricas. O programa deverá apresentar um menu com as seguintes opções: Página 2 de 8

(Q) quadrado ( lado 2 ) (R) retângulo (comprimento * largura) (C) círculo (3,14 * raio 2 ) (T) trapézio ((base maior + base menor) * altura / 2) 3) Faça um programa que imprima as letras minúsculas do alfabeto e seus respectivos códigos decimais da tabela ASCII. 4) Faça um programa que leia uma seqüência de caracteres terminada por # e imprima o número de caracteres lidos. 5) Faça o chinês do programa abaixo, mostrando exatamente o que seria impresso se fossem digitados os seguintes caracteres na entrada: EVA e ADAO# void main (void) { char ch; int i = 0; } while ((i<=10) && (ch=getch())!= # ) switch (ch) { case A : case O : i++; putchar ( E ); break; case : putchar (! ); case L : i = i +2; putchar ( $ ); break; default: putchar (? ); i++; } printf ( \nacabou ); 6) (Prova 1-95/2) Uma equipe de vôlei paga aos seus jogadores, além do salário, um valor adicional ao salário mensal (bicho) que é função da produtividade de cada um. Essa produtividade é paga de acordo com a tabela a seguir: classe Nome da classe valor adicional A Excelente +100% B Bom +80% C médio +50% D regular +30% E Precisa treinar +10% mais F te cuida +5% G tsktsk nada Faça um programa que, dados o salário (float) e o código da classe de um jogador (char), calcule e imprima o seu salário final e o nome da sua classe. 7) Faça um programa que leia uma seqüência de caracteres terminada por um <Enter> (linha de texto) e imprima a quantidade de caracteres lidos. 8) Faça um programa que leia uma linha de texto (seqüência de caracteres terminada por um <Enter>) e os imprima novamente na tela com exceção dos caracteres de espaço em branco que não devem ser impressos. Página 3 de 8

9) Faça um programa que leia uma linha de texto (seqüência de caracteres terminada por um <Enter>) e imprima a quantidade de vogais minúsculas, a quantidade de consoantes minúsculas e a quantidade de caracteres não letras encontrados. 10) Faça um programa que leia uma linha de texto (seqüência de caracteres terminada por um <Enter>) e imprima a quantidade total de caracteres lidos e a porcentagem de caracteres do tipo letra encontrados. 11) Faça um programa que leia uma linha de texto e imprima a quantidade de letras maiúsculas e a quantidade de letras minúsculas encontradas. 12) Durante a segunda guerra mundial, havia necessidade de codificação das mensagens transmitidas, para isso eram necessários códigos secretos, um desses códigos era o POLAR/ZENIT, que consistia em trocar as ocorrências da letra P pela letra Z e vice-versa, as letras O pelas letras E, e vice-versa, e assim por diante. Faça um programa que leia uma linha de texto e imprima os caracteres codificados segundo o código POLAR/ZENIT. 13) Faça um programa que leia uma linha de texto e imprima o número de palavras que compõe a linha. Considere que cada palavra esta separada por, exatamente, um único caracter de espaço. 14) Faça um programa que leia um caracter e uma linha de texto e imprima a posição do caracter na linha a cada vez que ele for digitado. O caracter pode aparecer mais de uma vez na linha. 15) Faça um programa que leia uma linha de texto e converta os caracteres maiúsculos em minúsculos. 16) Faça um programa que leia uma linha de texto e converta os caracteres maiúsculos para minúsculos e vice-versa. Exercícios Propostos 17) (Prova 2-94/1) Faça um programa que leia da entrada padrão (teclado) uma seqüência de caracteres, terminada pelo caractere '#' e imprima quantos caracteres, quantas palavras e quantas frases foram lidas. Observações: Para facilitar, considere que: cada frase é delimitada por '?', '!'ou '.'; cada palavra é delimitada por '\n', '\t' ou espaço; não existem espaços antes e depois de um sinal de pontuação; cada palavra é separada das demais por um único espaço; o texto começa por uma letra; não existem sinais de pontuação consecutivos. 18) (Prova 1-97/1) Faça um programa que leia uma linha de texto e substitua cada vogal lida por N vogais iguais, onde N representa o número de vogais lidas até então. Para os demais caracteres, o programa deve imprimir apenas o próprio caractere. Considere que o usuário digitará apenas caracteres minúsculos. O programa deverá imprimir, ao final, o percentual de consoantes em relação ao total de caracteres digitados. Exemplo: Texto lido: um exemplo!!! Saída do programa: um eexeeemploooo!!! Percentual: 33.333333 15. Faça uma função chamada copia_str que recebe duas strings como parâmetros e copie todos os elementos da segunda string para a primeira, apagando-a. 16. Faça uma função chamada tam_str que recebe uma string como parâmetro e retorne o número de caracteres da string. O caracter \0 não deve ser considerado na contagem. 17. Faça uma função chamada concat_str que recebe duas strings como parâmetros e copie todos os caracteres da segunda string para o final da primeira string. 18. Faça uma função chamada compara_str que recebe duas strings (s1 e s2) como parâmetros e compara os seus conteúdos. A função retorna um número < 0 se s1 for menor que s2, um número > 0 se a s1 for maior que s2 e 0 (zero) se as strings forem iguais. 19. Faça uma função chamada imp_str que recebe uma string como parâmetro e imprime seu conteúdo na tela. Após imprimir a string, a função deve pular uma linha. Página 4 de 8

20. Faça uma função chamada le_str que recebe uma string como parâmetro e preenche esta string com os caracteres lidos através do teclado. A leitura termina quando o usuário digitar <Enter> (que não deverá fazer parte da string). 21. Faça uma função que receba uma string como parâmetro e imprima a string invertida. 22. Faça uma função que receba uma string como parâmetro e converta todos as letras minúsculas encontradas em letras maiúsculas. Os demais caracteres devem permanecer inalterados. 23. Faça uma função que receba uma string como parâmetro e retorne o número de palavras encontradas. Cada palavra pode estar separada por um ou mais caracteres de espaço. Não considere os caracteres de pontuação como separadores de palavras. 24. Refaça a questão anterior considerando os caracteres.,,, ; como separadores de palavras, além do espaço em branco. 25. Faça uma função que receba uma string como parâmetro e um caracter. A função deve retornar a primeira posição onde o caracter foi encontrado na string ou -1 caso o caracter não apareça na string. 26. Faça uma função que receba uma string como parâmetro e um caracter. A função deve retornar a última posição onde o caracter foi encontrado na string ou -1 caso o caracter não apareça na string. 27. Faça uma função que receba uma string como parâmetro e um caracter. A função deve retirar todas as ocorrências deste caracter da string. 28. Faça uma função que receba uma string como parâmetro e dois caracteres. A função deve trocar toda a ocorrência do primeiro caracter na string pelo segundo caracter. 29. Faça uma função que receba uma string como parâmetro e um caracter. A função deve retornar o número de vezes que o caracter aparece na string. 30. Faça uma função que receba uma string como parâmetro, um caracter e um valor numérico. A função deve preencher a string com tantos caracteres quanto for o valor numérico passado com parâmetro. 31. Faça uma função chamada strncpy que recebe duas strings (s1 e s2) e um valor numérico como parâmetros. A função deve copiar tantos caracteres quanto o valor numérico, da string s2 para a string s1. 32. Faça uma função chamada copia_str_i que compara duas strings (s1 e s2) passadas como parâmetro, não diferenciando maiúsculas de minúsculas. A função deve retornar: 0 se as strings forem iguais; um valor menor que 0 se s1 for menor que s2 e um valor maior que 0 se s1 for maior que s2. 33. (Prova 3-94/1) Faça uma função que receba como parâmetro uma string de, no máximo, 80 caracteres e converta todas as letras para minúsculas, exceto a primeira letra de cada palavra, que deve ser maiúscula. Considere que a string só possui letras e espaços e entre as palavras existe um único espaço. Exemplo: Frase recebida: EsTa frase e apenas um EXEmPLO Frase gerada: Esta Frase E Apenas Um Exemplo 34. Faça uma função que receba uma string como parâmetro e imprima esta string em modo justificado, ou seja, preenchendo os intervalos entre as palavras com espaços em branco de maneira proporcional. Considere este procedimento apenas para strings com menos de 80 caracteres. As strings com mais de 80 caracteres devem ser impressas sem alteração. Página 5 de 8

35. Faça uma função que receba uma string como parâmetro e a imprima. Se a string tiver mais de 40 caracteres, ela deve ser particionada, quantas vezes for necessário, de modo a imprimir no máximo 40 caracteres por linha, sendo que nenhuma palavra deve ser impressa fragmentada. 36. Modifique a função do item anterior de modo a imprimir a string em modo justificado, além de realizar o seu particionamento. 37. Faça uma função que receba duas strings como parâmetro (s1 e s2) e retorne a posição da string s2 dentro da string s1, caso a string s1 contenha a string s2, ou -1 em caso contrário. Exemplo: s1 c a m a l e ã o \0 s2 l e ã o \0 A função deve retornar o valor 4, pois é o valor da posição onde começa a string leão na string camaleão. 38. Faça uma função que receba uma string como parâmetro e verifique se é um palíndrome, isto é, da esquerda para direita ou da direita para a esquerda têm-se a mesma seqüência de caracteres. Exemplos: ama, ovo, asa. 39. (Prova 3-94/1) Considere a seguinte lista de países e respectivas capitais: Canadá Ottawa Inglaterra Londres França Paris Portugal Lisboa Japão Tóquio Escreva um programa interativo que aceite um nome de um país como entrada e imprima o nome de sua capital. O programa deve executar repetidamente até que seja digitada a palavra FIM. 40. (Prova 3-96/1) Faça uma função que receba duas strings e um inteiro como parâmetros. Esta função inclui a segunda string a primeira a partir da posição indicada pelo inteiro. Exemplo (apenas um exemplo!!!): 1 a string: isto é exemplo resultado após execução da função: 2 a string: apenas um 1 a string: isto é apenas um exemplo inteiro: 7 2 a string: apenas um 19) (Prova 4-96/1) Faça uma função chamada strmix que receba 3 strings (s1, s2 e s3) e misture s1 e s2 do seguinte modo: 1 o caracter de s3: 1 o caracter de s1 2 o caracter de s3: 1 o caracter de s2 3 o caracter de s3: 2 o caracter de s1 e assim sucessivamente Observações: a string resultante deverá ser armazenada em s3. As strings s1 e s2 podem ter tamanhos diferentes. Exemplo: s1: abcde s2: 012 string resultante (s3): a0b1c2de 20) (Prova 3-96/2) Faça uma função que receba duas strings e retire da primeira todo caracter que fizer parte da segunda string. Exemplo: 1 a string: EFBACDEIEBBLBBD 2 a string: EBD Resultado 1 a string: FACIL 2 a string: EBD Página 6 de 8

41. (Prova 3-97/1) Faça uma função chamada compara() que receba duas strings e dois inteiros pos e qtd, onde pos é a posição nas strings a partir da qual vamos comparar qtd caracteres. A comparação NÃO deve levar em conta se os caracteres são maiúsculos ou minúsculos. A função retorna 0 (zero) se as porções de strings forem iguais, senão, ela retorna -1. Dica: use uma função que converta uma letra para maiúsculo. Considere que os valores de pos e qtd são sempre válidos. Exemplo: string 1: Banana string 2: ANNA MARIA pos = 2 qtd = 2 retorna 0 string 1: Banana string 2: ANNA MARIA pos = 2 qtd = 3 retorna -1 42. (Prova 4-96/2) Faça uma função chamada xxx() que receba duas strings como parâmetros e retorne a posição da 2 a string de trás para frente dentro da 1a string ou um número negativo caso não encontre. Faça um programa para testar se esta função que você fez está funcionando. Obs.: note que as strings podem ter qualquer tamanho!!! Exemplos: Exemplo 1 Exemplo 2 1 a string: 2 a string: resultado: Esta é uma linha amu 7 Esta é uma linha uma -1542 43. (Prova 4-97/1) Faça uma função chamada cria_string() que recebe como parâmetros uma string s1 (de tamanho suficiente), um formato fmt (também uma string) e um número inteiro positivo num (nesta ordem). Esta função irá preencher a string s1 de acordo com o formato passado como parâmetro e o valor do inteiro num. O formato irá conter uma seqüência de caracteres que devem ser integralmente copiados para a string s1, com exceção da seqüência %d. No seu lugar deve ser copiado o valor do inteiro num convertido para caracteres. Dica: lembre-se que o maior numero inteiro que pode ser representado no TC é 32767 (5 dígitos). Exemplos: Exemplo 1 Parâmetros passados: s1: (irrelevante, mas de tamanho suficiente) fmt: O valor %d é a resposta num: 15 Resultado após a execução da função s1: O valor 15 é a resposta fmt: (irrelevante) num: (irrelevante) Exemplo 2 Parâmetros passados: s1: (irrelevante, mas de tamanho suficiente) fmt: Converta o %d para caracteres num: 17430 Resultado após a execução da função s1: Converta o 17430 para caracteres fmt: (irrelevante) num: (irrelevante) Página 7 de 8

44. (Prova 3 2000/1) A função strcmp ( ) considera os caracteres A e à diferentes em termos de ordenação alfabética. O mesmo acontece para os demais caracteres acentuados. Faça uma função chamada minha_compara_str ( ) que receba 2 strings (s1 e s2) e um vetor de caracteres de 256 posições, previamente preenchido. A função deve retornar o mesmo valor que a função strcmp ( ) mas funcionando também para caracteres acentuados. O conteúdo do vetor de caracteres é o seguinte: posições 0 a 127 o o caracteres sem acentuação na sua posição correspondente exemplo: na posição de índice X, temos armazenado o caracter cujo código ASCII é X posições 128 a 255 o corresponde aos caracteres acentuados o exemplo: na posição de índice ê (índice e código ASCII 234), temos armazenado o caracter e (código ASCII 101) 45. (Prova 3 2000/2) Faça uma função chamada abrevia que receba uma string contendo o nome de uma pessoa. A função deve alterar a string, de modo a restar apenas a 1 a e a última palavra. Você pode assumir que cada nome tem mais de 2 palavras e que entre duas palavras haverá apenas um espaço em branco. Exemplo: Antes: Joao Jose da Silva Santos Depois: Joao Santos 46. (Prova Final 2000/2) Faça uma função que receba os seguintes parâmetros: uma string (frase), um vetor de strings (palavras), outro vetor de strings (abreviacoes) e um inteiro indicando o tamanho dos vetores de strings. A função deve verificar se cada palavra da frase pode ser substituída por uma abreviação. Para isto, a função deve comparar cada palavra encontrada na frase com o vetor de palavras. Se a palavra for encontrada no vetor palavras, ela deverá ser substituída pela abreviação equivalente. Para auxiliar na construção de sua função faça as seguintes funções: a) Pega_palavra: recebe uma string (S) e um valor inteiro (inicio) como parâmetros. O parâmetro inicio indica o índice da string S onde começa a procura por uma nova palavra. A função deve retornar o índice de S onde termina a palavra. Cada palavra é separada por um único espaço em branco. Você pode assumir que na frase existem pelo menos duas palavras. b) Retira_palavra: recebe uma string (frase), dois inteiros (inicio e fim) e outra string (palavra). A função deve preencher a string palavra com a palavra delimitada pelos inteiros inicio e fim, que está na string frase. c) Apaga_palavra: recebe uma string (frase) e dois inteiros (inicio e fim) como parâmetros. A função deve retirar da string os caracteres delimitados por inicio e fim (delimitam uma palavra), arrumando a string. d) Insere_palavra: recebe uma string (frase) como parâmetro, um inteiro (pos) e outra string (abreviacao). e) Busca: recebe um vetor de strings (palavras), seu tamanho e uma string (S). A função deve devolver 1 caso S não pertença ao vetor palavras ou o índice (inteiro) onde S foi encontrada no vetor. f) Página 8 de 8