O Sistersinspirit.ca facilita a busca por soluções para todas as suas perguntas com a ajuda de uma comunidade ativa. Descubra respostas abrangentes para suas perguntas de profissionais experientes em nossa plataforma amigável. Obtenha respostas imediatas e confiáveis para suas perguntas de uma comunidade de especialistas experientes em nossa plataforma.

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

Sagot :

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: