Baixe o app para aproveitar ainda mais
Prévia do material em texto
Contagens, somatórios, máximos e mínimos Nesta aula apresentaremos alguns problemas recorrentes envolvendo estruturas de repetição 2 Introdução Alguns problemas que aparecem com frequência em computação são aqueles envolvendo contagem, somatório e determinação dos valores máximo e mínimo em um conjunto de dados Obviamente, todo problema tem suas particularidades, mas há um esquema padrão para a solução desse tipo de problema 3 Contagem (1/2) Problemas que envolvem contagem são aqueles que visam determinar quantos elementos em um conjunto de dados satisfazem a um critério Por exemplo, quantos números pares há em um conjunto de números naturais 4 Contagem (2/2) Para resolver este tipo de problema é necessário uma variável que fará a contagem (contador) Deve ser inicializada com zero antes do início da entrada de dados Normalmente usamos um if dentro de uma estrutura de repetição para determinar se a entrada satisfaz um determinado critério Caso afirmativo, o contador é incrementado de 1 5 Exemplo: programa para determinar quantos números pares há entre n números naturais #include <stdio.h> int main() { int n, i, val, cont; printf("Informe o tamanho da sequência: "); scanf("%d", &n); cont = 0; printf("Informe %d números naturais: ", n); for (i = 1; i <= n; i++) { scanf("%d", &val); if (val % 2 == 0) { cont++; } } printf("Há %d número(s) pare(s)\n", cont); return 0; } 6 Somatório (1/2) Parecido com o problema da contagem, entretanto, deve-se acumular em uma variável o somatório de valores possivelmente diferentes Exige uma variável para acumular o somatório (acumulador) Deve ser inicializada com zero Pode ser necessário utilizar um if para verificar se um valor da entrada satisfaz a uma condição Caso afirmativo, somar a entrada ao acumulador 7 Somatório (2/2) Exemplos de problemas que exigem um somatório: Calcular a soma de n números inteiros Não exige um if dentro do laço Calcular a soma dos números pares num conjunto de n números naturais Exige um if dentro do laço 8 Exemplo: programa para determinar a soma dos números pares num conjunto de n números naturais #include <stdio.h> int main() { int n, i, val, soma; printf("Informe o tamanho da sequência: "); scanf("%d", &n); soma = 0; printf("Informe %d números naturais: ", n); for (i = 1; i <= n; i++) { scanf("%d", &val); if (val % 2 == 0) { soma += val; } } printf("Soma dos pares: %d\n", soma); return 0; } 9 Média Envolve somatório e eventualmente contagem Para determinar uma média é necessário somar todos os elementos a partir dos quais será calculada a média Se a média não for sobre todos os dados da entrada ou o tamanho da entrada não for conhecido, é necessária uma contagem 10 Exemplo: programa para determinar a média de uma sequência de inteiros terminada com 0 #include <stdio.h> int main() { int val, cont = 0; float media = 0; printf("Informe uma sequência de números inteiros (0 p/ terminar): "); scanf("%d", &val); while (val != 0) { media += val; cont++; scanf("%d", &val); } media /= cont; printf("Média dos números: %.2f\n", media); return 0; } 11 Porcentagem Envolve contagem É preciso determinar quantos elementos da entrada satisfazem um critério (contador) e depois multiplicá-lo por 100 e dividi-lo pelo total de elementos 12 Exemplo: programa para determinar a porcentagem de números pares num conjunto de n números naturais #include <stdio.h> int main() { int n, i, val, pares = 0; float porc_pares; printf("Informe o tamanho da sequência: "); scanf("%d", &n); printf("Informe uma sequência de %d números naturais: ", n); for (i = 1; i <= n; i++) { scanf("%d", &val); if (val % 2 == 0) pares++; } porc_pares = pares * 100.0 / n; printf("Porcentagem de pares: %.1f %%\n", porc_pares); return 0; } 13 Máximos e mínimos (1/3) Para determinar o maior e o menor valor de um conjunto de dados (máximo e mínimo) é necessário uma variável para cada uma dessas informações Essas variáveis devem ser inicializadas com o primeiro valor do conjunto Depois deve-se verificar se há algum valor maior ou menor entre os demais elementos do conjunto 14 Máximos e mínimos (2/3) Para garantir que as variáveis sejam inicializadas com o 1º elemento do conjunto há 2 técnicas principais: Fazer a entrada do 1º elemento do conjunto fora da repetição e inicializar as variáveis com esse valor (preferível) Atribuir valores iniciais a essas variáveis de tal forma que 1º elemento do conjunto atualize seus valores É necessário conhecer a faixa de valores que a entrada pode assumir Maior deve ser inicializada com o menor, enquanto menor deve ser inicializada com o maior 15 Máximos e mínimos (3/3) Dentro da repetição utiliza-se um if para verificar se o valor informado é maior do que o valor da variável que representa o maior valor e outro if para verificar se o valor é menor do que o da variável que representa o menor valor 16 Exemplo: programa para determinar o maior e o menor valor num conjunto de n inteiros #include <stdio.h> int main() { int n, i, val, maior, menor; printf("Informe o tamanho da sequência: "); scanf("%d", &n); printf("Informe uma sequência de %d números inteiros: ", n); scanf("%d", &val); maior = menor = val; for (i = 2; i <= n; i++) { scanf("%d", &val); if (val > maior) maior = val; else if (val < menor) menor = val; } printf("Maior: %d\nMenor: %d\n", maior, menor); return 0; } 17 Exemplo: programa para determinar a maior e a menor nota numa turma de n alunos #include <stdio.h> int main() { int n, i; float nota, maior, menor; printf("Informe o tamanho da turma: "); scanf("%d", &n); printf("Informe as notas dos %d alunos: ", n); maior = 0; menor = 10; for (i = 1; i <= n; i++) { scanf("%f", ¬a); if (nota > maior) maior = nota; if (nota < menor) menor = nota; } printf("Maior nota: %.2f\nMenor nota: %.2f\n", maior, menor); return 0; } Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17
Compartilhar