Bom dia pessoal !!! Alguém poderia me ajudar em uma questão de Computação?
Escreva um algoritmo que leia números float e apresente como resultado:
a) A Media dos valores maiores que 50
b) Mostre quantos valores são menores que 20
Obs:
# o programa deve aceitar acentuação
# o programa deve ser executado até de digitar o numero zero
# o cor da fonte deve ser vermelha
Soluções para a tarefa
Resposta:
Módulo 3: Aula 4: Estruturas de controle de fluxo
Exercício 1: Página c410.html
Enunciado:
Altere o último exemplo da página para que ele escreva cada letra 5 vezes seguidas. Para isto, use um 'if' para testar se o contador é divisível por cinco (utilize o operador %) e só então realizar a atualização em index.
Solução:
Neste exercício, segundo a sugestão apresentada, bastava se adicionar a linha de código que está comentada, no exercício abaixo. A variável index, que aponta qual letra da string sera impressa, e que era incrementada circularmente a cada iteracao, agora so e incrementada de 5 em 5 iteracoes, ou seja, quando o resto da divisao de contador por 5 for 4, ou seja, seu valor vai variar de 0 a 4.
#include <stdio.h>
main()
{
int index = 0, contador;
char letras[5] = "Joao";
for (contador=0; contador<1000; contador++)
{
printf("\n%c",letras[index]);
if (( contador % 5 ) == 4) /* Se o resto da divisao == 4, entao incrementa */
(index == 4)? index=0: ++index;
}
return 0;
}
Exercício 2: Página c420.html
Enunciado:
Escreva um programa utilizando o comando switch que leia uma string (use gets()) e substitua todos os espaços e tabulações ('\t') por caracteres de nova linha ('\n'). O loop deve encerrar quando encontrar o caracter de final de string '\0'.
Solução:
#include <stdio.h>
main()
{
int index;
char frase[30];
printf("\n\nEntre com a frase (max 30 caracteres): ");
gets(frase);
for (index =0 ; frase[index] != '\0'; index++)
{
switch(frase[index])
{
case '\t':
frase[index] = '\n';
break;
case ' ':
frase[index] = '\n';
break;
}
}
printf("\n\nNova frase: \n%s", frase);
return 0;
}
Exercício 3: Página c430.html
Enunciado:
Faça um programa que inverta uma string: leia a string com gets e armazea-a invertida em outra string. Use o comando for para varrer a string até o seu final.
Solução:
Neste exercício existem alguns detalhes interessantes. Primeiramente, é necessário determinar-se o tamanho da string. Isto é feito através de um primeiro for. Algumas pessoas não conseguiram chegar ao resultado por causa de um pequeno detalhe na 'linha em destaque'. Lembre-se sempre que se você tem um string de 10 posições, o seu índice pode variar de 0 a 9, e o '\0' vai estar na posição 9. Logo, você deve inverter a posição 8 com a 0, 7 com a 1, e assim por diante. É por isto que a expressão fica:
copia[i] = str[compstr-i-1]
Não podemos também deixar de colocar o '\0' no final da nova string.
#include <stdio.h>
#define MAX 31
void main()
{
char str[MAX], copia[MAX];
int i, compstr;
printf("\n\nEntre com uma string (max 30 caracteres): ");
gets(str);
/* Determina o comprimento da string atraves
de um for sem conteudo : ao final dele, compstr
contem a posicao do '\0' da string*/
for(compstr=0; str[compstr]; compstr++);
/* Inverte a string */
for(i=0; str[i]; i++)
{
copia[i] = str[compstr-i-1]; /* Linha em destaque */
}
copia[i] = '\0'; /* coloca um finalizador na string */
printf("\n\nString Invertida: %s\n", copia);
}
Exercício 4: Página c440.html
Enunciado:
Refaça o programa da página anterior. Use o comando while para fechar o loop.
Solução:
Como o comando while não tem o incremento próprio, precisamos fazê-lo dentro do seu loop. Outra observação importante é a necessidade de se inicializar a variável com i = 0.
Entao temos:
#include <stdio.h>
#define MAX 31
void main()
{
char str[MAX], copia[MAX];
int i = 0, compstr;
printf("\n\nEntre com uma palavra (max 30 caracteres): ");
gets(str);
/* Determina o comprimento da string atraves
de um for sem conteudo : ao final dele, compstr
contem a posicao do '\0' da string*/
for(compstr=0; str[compstr]; compstr++);
while (str[i] != '\0')
{
copia[i] = str[compstr-i-1]; /* Linha em destaque */
i++;
}
copia[i] = '\0';
printf("\n\nString Invertida: %s\n", copia);
}
Exercício 5: Página c450.html
Enunciado:
Refaça o exercício da página c410.html utilizando o laço do-while para controlar o fluxo.
Solução:
É preciso inicializar a variável contador, para garantir o resultado desejado. O incremento também tem que ser feito explicitamente.
#include <stdio.h>
main()
{
int index = 0, contador = 0;
char letras[5] = "Joao";
do
{
printf("\n%c",letras[index]);
if (( contador % 5 ) == 4) /* Se o resto da divisão == 4, entao incrementa */
(index == 4)? index=0: ++index;
contador ++;
} while (contador < 1000);
}
Exercício 6: Página c480.html
Enunciado:
Escreva um programa que peça ao usuário que digite três números inteiros, c
Explicação: