• Matéria: Informática
  • Autor: glmUTFPR
  • Perguntado 4 anos atrás

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

Respostas

respondido por: cidaazevedo1708
0

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:

Perguntas similares