1, 2, 4 1, 2, 5 1, 3, 4 1, 3, 5 1, 4, 5 2, 3, 4 2, 3, 5 3, 4, 5 Observação Propostas de soluções dos exercícios propostos pod<strong>em</strong> ser solicitadas através de mensag<strong>em</strong> eletrônica para jaime@ccen.ufal.br com assunto RESPOSTAS LIVRO C, anexando o formulário abaixo devidamente preenchido. Nome Categoria 1 Instituição 2 Curso 2 Cidade/Estado 1 Categoria: docente, estudante, autodidata 2 Se docente ou estudante
7 Pesquisa e ordenação 7.1 Introdução Neste capítulo, discutir<strong>em</strong>os dois probl<strong>em</strong>as clássicos de computação. O primeiro deles, pesquisa, busca ou consulta, consiste <strong>em</strong> se verificar se um dado valor está armazenado num vetor (ou num campo de um registro de um arquivo, como ver<strong>em</strong>os no capítulo 9). São vários os ex<strong>em</strong>plos de pesquisas <strong>em</strong> computação. Uma busca por páginas da internet que contenham um determinado assunto; uma busca no Registro Nacional de Veículos Automotores (RENAVAM) na tentativa de se encontrar o nome do proprietário do veículo de uma placa dada; uma busca nos registros da Receita Federal a respeito de um CPF dado. O segundo probl<strong>em</strong>a é conhecido como ordenação ou classificação (introduzido superficialmente no capítulo 3) consiste <strong>em</strong> se colocar numa ord<strong>em</strong> preestabelecida uma relação de valores. No capítulo referido, mostramos como ordenar uma relação contendo três valores. Neste capítulo, apresentar<strong>em</strong>os algoritmos para ordenar uma lista com qualquer número de valores. A ordenação de uma relação é realizada para que a leitura dos resultados seja facilitada ou para que, como ver<strong>em</strong>os abaixo, pesquisas sejam realizadas com mais eficiência. Um ex<strong>em</strong>plo prático da necessidade da ordenação ocorre na confecção da lista dos aprovados num concurso vestibular. Algumas universidades divulgam esta lista com os nomes dos aprovados <strong>em</strong> ord<strong>em</strong> alfabética e outras <strong>em</strong> ord<strong>em</strong> de classificação. Tanto num caso como no outro há necessidade de ordenação. 7.2 Pesquisa sequencial O método de busca de mais fácil compreensão é o que t<strong>em</strong>os utilizado até agora e é chamado pesquisa sequencial. Este método consiste <strong>em</strong> se percorrer, a partir da componente zero, todo o vetor comparando-se o valor de cada componente com o valor pesquisado. Naturalmente, a pesquisa se encerra quando o valor pesquisado é encontrado ou quando se atinge o final do vetor, significando, neste caso, que a pesquisa não foi b<strong>em</strong> sucedida. A função abaixo pesquisa, numa relação de inteiros armazenada <strong>em</strong> v, um inteiro passado para o parâmetro x. Observe que o parâmetro t receberá a quantidade de el<strong>em</strong>entos da relação e que a função retornará a posição do valor procurado na relação, se a pesquisa for b<strong>em</strong> sucedida, e -1 se o valor procurado não for encontrado. int PesqSeq(int *v, int t, int x) { int i; i = 0; while ((v[i] != x) && (i < t)) i = i + 1; if (i == t) return -1; else return i + 1; } 7.3 Pesquisa binária É muito fácil perceber que o método da pesquisa binária é bastante ineficiente: imagine que este método fosse utilizado para se pesquisar a palavra zumbaia num dicionário da língua portuguesa (a propósito, zumbaia significa cortesia exagerada; cumprimento ruidoso e servil). Quando a relação está ordenada, existe um método de busca, chamado pesquisa binária, b<strong>em</strong> mais eficiente do que a pesquisa sequencial: compara-se o el<strong>em</strong>ento pesquisado com a componente "central" da relação; se for<strong>em</strong> iguais, a pesquisa é encerrada com sucesso; se o el<strong>em</strong>ento pesquisado for menor que a
- Page 1 and 2:
Jaime Evaristo Aprendendo a Program
- Page 3 and 4:
Aos meus netos Mateus, Vitor e Luca
- Page 5 and 6:
5.5 Passagem de parâmetros por ref
- Page 7 and 8:
O código ASCII Para que haja a pos
- Page 9 and 10:
a ser resolvido. O exemplo anterior
- Page 11 and 12:
instruções 3.1 e 3.2. Como veremo
- Page 13 and 14:
algoritmo para a determinação do
- Page 15 and 16:
aluno do ensino médio e a relaçã
- Page 17 and 18:
transforma o "computador" num poder
- Page 19 and 20:
2. Introdução à Linguagem C 2.1
- Page 21 and 22:
tipo Por exemplo, um programa para
- Page 23 and 24:
2.6 Estrutura de um programa em C E
- Page 25 and 26:
onde as digitações do caractere q
- Page 27 and 28:
execução da função printf() exi
- Page 29 and 30:
formatação. Quando a constante é
- Page 31 and 32:
* Programa que fornece a parte frac
- Page 33 and 34:
int Num, Unidades; printf("Digite u
- Page 35 and 36:
x = y; y = Aux; printf("Saida x = %
- Page 37 and 38:
(exemplo: o maior múltiplo de 7 me
- Page 39 and 40:
if (b > a) Maior = b; printf("O mai
- Page 41 and 42:
puts("Digite o instante final"); sc
- Page 43 and 44:
y = z; z = Aux; } printf("Numeros o
- Page 45 and 46:
#include main() { float SAtual, SN
- Page 47 and 48:
Valor do quadruplo de 3: 12 Valor d
- Page 49 and 50: Dias31 = Mes/2; else Dias31 = (Mes
- Page 51 and 52: 4. Estruturas de repetição 4.1 Pa
- Page 53 and 54: { int i; for (i = 11; i
- Page 55 and 56: encontrado, o que, evidentemente, v
- Page 57 and 58: Repetindo a execução de um progra
- Page 59 and 60: scanf("%d", &Mes); if ((Mes < 1) ||
- Page 61 and 62: main() { int Num, i; printf("Digite
- Page 63 and 64: float Num, Soma, Media; Soma = 0; p
- Page 65 and 66: que o anterior. A ideia é a seguin
- Page 67 and 68: 5. Funções e ponteiros 5.1 O que
- Page 69 and 70: com uma função em relação àque
- Page 71 and 72: { float Aux; Aux = a; a = b; b = Au
- Page 73 and 74: *Verifica se um ano é bissexto (re
- Page 75 and 76: Temos então um programa - certamen
- Page 77 and 78: } while (Sim != 's'); printf("Outro
- Page 79 and 80: 5 - Após a ativação de Fat(1) Fa
- Page 81 and 82: Resto = a % b; while (Resto != 0) {
- Page 83 and 84: while (n > 1) { m = 0; while (n % d
- Page 85 and 86: Nome Categoria 1 Instituição 2 Cu
- Page 87 and 88: inteiro. Por exemplo, a sequência
- Page 89 and 90: int i; float Soma; Soma = 0; for (i
- Page 91 and 92: fato também é indicado no vetor N
- Page 93 and 94: DiasMeses da seguinte forma: int Di
- Page 95 and 96: ⎛ 1 0 0⎞ ⎜ ⎟ I 3 = ⎜ 0 1
- Page 97 and 98: Equipe1[0] = 0; Equipe2[0] = 0; Saq
- Page 99: sua condição em relação à apro
- Page 103 and 104: ordem crescente, o "primeiro maior
- Page 105 and 106: 7.5 Exercícios propostos 1. Alguma
- Page 107 and 108: #include main() { char Cad[100], S
- Page 109 and 110: char *Str1 = "Logica de Programacao
- Page 111 and 112: int i, d, m, a, Verifica; char Dia[
- Page 113 and 114: aiar é palíndroma. Escreva um pro
- Page 115 and 116: Na verdade, ao se definir struct TE
- Page 117 and 118: SomaIdade = SomaIdade + v[i].Idade;
- Page 119 and 120: #include struct TRegistro { char M
- Page 121 and 122: { FILE *p; p = fopen(s, "rb"); if (
- Page 123 and 124: utilizando como exemplo isto poderi
- Page 125 and 126: } else printf("\n Registro ja cadas
- Page 127 and 128: sistema e a impressora conectada ao
- Page 129 and 130: *Função para exibir o cardápio*/
- Page 131 and 132: 10 Noções básicas de alocação
- Page 133 and 134: gets(Coef); if (strcmp(Coef, "fim")
- Page 135 and 136: } 10.4 Exercícios propostos 1. Esc
- Page 137 and 138: Índice remissivo A Algoritmo de Eu
- Page 139: Variáveis locais..................