EXERCÍCIO 1:
RESPOSTA:
DECLARAÇÕES:
Explicação do Código:
1. #include <stdio.h>: Inclui a biblioteca padrão de entrada e saída,
necessária para usar a função printf.
2. int main() { ... }: Define a função principal do programa.
3. int soma = 0;: Declara uma variável inteira chamada soma e a inicializa com
o valor 0. Esta variável armazenará a soma dos números ímpares.
4. for (int i = 101; i <= 195; i++) { ... }: Inicia um loop for que
percorre todos os números inteiros de 101 até 195 (inclusive). A variável i
representa cada número nessa sequência.
5. if (i % 2 != 0) { ... }: Dentro do loop, esta condição if verifica se o
número atual (i) é ímpar. O operador % (módulo) retorna o resto da divisão de i
por 2. Se o resto não for 0, significa que o número é ímpar.
6. soma = soma + i;: Se o número i for ímpar, ele é adicionado ao valor atual da
variável soma.
7. printf("A soma dos números ímpares entre 101 e 195 é: %d\n",
soma);: Após o loop terminar (depois de verificar todos os números de 101 a
195), esta linha imprime o valor final da soma na tela. %d é um especificador de
formato para exibir um valor inteiro, e \n insere uma nova linha no final da saída.
RESULTADO:
Explicação do Código:
1. #include<stdio.h>: Inclui a biblioteca padrão de entrada e saída, que fornece
funções como printf (para imprimir na tela).
2. main(): Define a função principal do programa, onde a execução começa.
3. float S = 0, den = 1, num = 1;: Declara três variáveis do tipo float
(ponto flutuante, para armazenar números decimais):
a. S: Inicializada com 0. Essa variável vai armazenar a soma dos termos da
série.
b. den: Inicializada com 1. Essa variável representa o denominador de cada
termo da série.
c. num: Inicializada com 1. Essa variável representa o numerador de cada
termo da série.
4. printf("\n\n"); e os outros printf: Imprimem informações sobre o
programa e o objetivo de calcular a série: S = 1/1 + 3/5 + ... + 99/50.
5. do { ... } while(den <= 50);: Este é um loop do-while. A principal
característica desse loop é que o código dentro das chaves {} é executado pelo
menos uma vez, antes da condição (den <= 50) ser verificada. O loop
continua a ser executado enquanto a condição for verdadeira.
6. Dentro do loop do-while:
a. printf("\n S = %.2f + %.2f/%.2f", S, num, den);: Imprime na
tela o estado atual da soma (S), o numerador (num) e o denominador
(den) do termo que está sendo adicionado. %.2f formata a saída para
exibir os números com duas casas decimais.
b. S = S + num/den;: Calcula o valor do termo atual (num / den) e
adiciona esse valor à variável S, atualizando a soma da série.
c. printf("=%.2f", S);: Imprime o novo valor da soma S com duas
casas decimais.
d. num = num + 2;: Incrementa o numerador (num) em 2. Observe a
sequência dos numeradores na série: 1, 3, 5, ..., 99. Eles aumentam de 2
em 2.
e. den = den + 1;: Incrementa o denominador (den) em 1. Observe a
sequência dos denominadores na série: 1, 2, 3, ..., 50 (há um erro na
descrição da série no printf, deveria ser 1/1 + 3/2 + 5/3 ... 99/50, pois o
denominador aumenta de 1 em 1).
f. sleep(1);: Pausa a execução do programa por 1 segundo. Isso
provavelmente foi adicionado para que o usuário possa acompanhar a
evolução do cálculo passo a passo. Importante: A função sleep() não é
padrão em todos os compiladores C. Em sistemas Unix-like (Linux,
macOS), ela geralmente está disponível incluindo a biblioteca unistd.h.
Em Windows, uma função similar é Sleep() (com 'S' maiúsculo) da
biblioteca windows.h. Sem a inclusão da biblioteca correta, esse código
pode não compilar ou funcionar corretamente em todos os ambientes.
7. while(den <= 50);: A condição para o loop do-while continuar. O loop será
executado enquanto o valor do denominador (den) for menor ou igual a 50. Isso
garante que a série seja calculada até o termo com denominador 50.
8. printf("\n\n"); e printf(" S = %.2f \n\n", S);: Após o loop terminar
(quando den se torna maior que 50), essas linhas imprimem o resultado final da
soma da série (S) com duas casas decimais.
Funcionamento do Código:
1. Inicialização:
a. float S = 0: Inicializa a variável S (soma) com 0.
b. float den = 1: Inicializa a variável den (denominador) com 1.
c. float num = 1: Inicializa a variável num (numerador) com 1.
2. Cabeçalho:
a. Os printf no início exibem informações sobre o exercício.
3. Loop do-while:
a. O bloco de código dentro do do será executado pelo menos uma vez.
b. printf("\n S = %.2f + %.2f/%.2f", S, num, den);: Imprime o
estado atual da soma e o termo que será adicionado.
c. S = S + num/den;: Calcula o valor do termo atual (num / den) e
adiciona à soma S.
d. printf("=%.2f", S);: Imprime o novo valor da soma.
e. num = num + 2;: Incrementa o numerador em 2 (1, 3, 5, ...).
f. den = den + 1;: Incrementa o denominador em 1 (1, 2, 3, ...).
g. sleep(1);: Pausa a execução por 1 segundo (útil para visualizar o passo
a passo, mas pode requerer a inclusão de unistd.h em alguns
sistemas).
h. while(den <= 50);: A condição para continuar o loop. O loop continua
até que o denominador (den) seja maior que 50.
4. Resultado Final:
a. printf("\n\n"); e printf(" S = %.2f \n\n", S);: Imprimem o
valor final da soma S com duas casas decimais.
RESULTADO:
FUNCIONAMENTO:
Funcionamento do Programa (Passo a Passo):
1. #include<stdio.h>: Esta linha inclui a biblioteca padrão de entrada e saída
(stdio.h). Essa biblioteca fornece funções como printf (para imprimir texto
na tela) e scanf (para ler dados digitados pelo usuário).
2. main(): Esta é a função principal do programa. A execução do código em C
sempre começa pela função main.
3. int numero, i , fatorial = 1;:
a. int numero;: Declara uma variável inteira chamada numero. Essa
variável será usada para armazenar o número que o usuário digitar.
b. int i;: Declara uma variável inteira chamada i. Essa variável será
usada como contador no loop para calcular o fatorial.
c. int fatorial = 1;: Declara uma variável inteira chamada fatorial e
a inicializa com o valor 1. É importante inicializar fatorial com 1
porque o fatorial é calculado através da multiplicação, e 1 é o elemento
neutro da multiplicação. Além disso, o fatorial de 0 é 1.
4. printf(" Exercicio 3 lista2 \n"); e printf("\n\n"); e printf("
Digite o numero a ser fatoriado = ");: Estas linhas usam a função
printf para exibir mensagens informativas na tela, indicando o exercício e
solicitando que o usuário digite um número para ser fatoriado. O \n representa
uma nova linha, e \n\n insere duas linhas em branco para melhor formatação.
5. scanf("%d", &numero);: Esta linha usa a função scanf para ler um número
inteiro que o usuário digitar no teclado. O %d é um especificador de formato que
indica que se espera um inteiro, e o &numero fornece o endereço de memória da
variável numero, onde o valor lido será armazenado.
6. if( numero <0): Esta é uma estrutura condicional if. Ela verifica se o valor
armazenado na variável numero é menor que 0 (ou seja, se o número é
negativo).
7. { printf("Fatorial numero negativo nao existe \n"); }: Se a
condição do if for verdadeira (o número digitado é negativo), esta linha será
executada. Ela usa printf para exibir uma mensagem informando que o
fatorial não está definido para números negativos.
8. else: Se a condição do if for falsa (o número digitado é zero ou positivo), o
bloco de código dentro do else será executado.
9. { printf("%d! = ", numero);: Dentro do else, esta linha usa printf para
começar a exibir a representação do fatorial. Ela imprime o valor do numero
seguido de "! = ".
10. for( i = numero; i >= 1; i--): Esta é uma estrutura de repetição for.
Ela cria um loop que se repetirá enquanto a condição i >= 1 for verdadeira.
a. i = numero;: Inicializa a variável de controle i com o valor do numero
digitado pelo usuário.
b. i >= 1;: Define a condição de continuação do loop. O loop continuará
executando enquanto i for maior ou igual a 1.
c. i--: Decrementa o valor de i em 1 após cada iteração do loop.
11. { printf("%d ", i);: Dentro do loop for, esta linha imprime o valor atual de
i (que representa cada um dos fatores do fatorial) seguido de um espaço.
12. fatorial = fatorial*i;: Esta linha realiza o cálculo do fatorial. Em cada
iteração do loop, o valor atual da variável fatorial é multiplicado pelo valor
atual de i, e o resultado é armazenado de volta em fatorial. Isso acumula o
produto de todos os números de numero até 1.
13. if( i>1): Dentro do loop for, esta é outra estrutura condicional if. Ela
verifica se o valor atual de i é maior que 1.
14. { printf(" * "); }: Se a condição do if for verdadeira (ou seja, se i não for
1), esta linha imprime " * " (um espaço, um asterisco e outro espaço) para
separar os números na representação da multiplicação do fatorial. Isso evita
que um " * " seja impresso após o número 1.
15. printf("\n%d! = %d \n\n",numero, fatorial);: Após o loop for
terminar (quando i se torna menor que 1), esta linha usa printf para exibir o
resultado final do fatorial. Ela imprime o valor original de numero, seguido de "! =
", e então o valor calculado da variável fatorial. O \n insere novas linhas para
melhor formatação.
16. } (fecha o bloco do else)
17. } (fecha a função main)
Em resumo, o programa lê um número, trata o caso de números negativos, e para
números não negativos, calcula o fatorial iterativamente usando um loop for, exibindo
a sequência de multiplicação e o resultado final.
Descrição do Código:
1. #include <stdio.h>: Esta linha inclui a biblioteca padrão de entrada e saída
(stdio.h). Essa biblioteca fornece funções como printf (para imprimir texto
na tela) e scanf (para ler dados digitados pelo usuário).
2. int main() { ... }: Esta é a função principal do programa. A execução do
código em C sempre começa pela função main.
3. float numero;: Declara uma variável chamada numero do tipo float. Essa
variável será usada para armazenar o número que o usuário digitar e também os
resultados das divisões sucessivas. O tipo float é escolhido para permitir que
o número tenha casas decimais.
4. int divisoes = 0;: Declara uma variável chamada divisoes do tipo int e a
inicializa com o valor 0. Essa variável será usada para contar quantas vezes o
número é dividido por 2.
5. printf("Digite um numero a ser dividido por 2 ate que seja
menor que 1 \n");: Exibe uma mensagem na tela explicando o objetivo do
programa para o usuário. O \n no final da string insere uma nova linha.
6. printf("\n\n");: Imprime duas linhas em branco para melhorar a
formatação da saída.
7. printf("Numero = ");: Exibe a mensagem "Numero = " na tela, solicitando
que o usuário digite o valor.
8. scanf("%f", &numero);: Lê o número de ponto flutuante que o usuário digita
no teclado e armazena esse valor na variável numero. O %f é o especificador de
formato usado para ler um valor do tipo float, e o &numero fornece o endereço
de memória da variável numero para que a função scanf possa armazenar o
valor digitado.
9. while (numero >= 1) { ... }: Inicia um loop while. O código dentro das
chaves {} será executado repetidamente enquanto a condição numero >= 1
for verdadeira. Ou seja, o loop continuará até que o valor de numero se torne
menor que 1.
10. printf("\n = %.2f / 2 = ", numero);: Dentro do loop, esta linha
imprime na tela:
a. Uma nova linha (\n).
b. Alguns espaços em branco para indentação.
c. O sinal de igual (=).
d. O valor atual da variável numero, formatado para exibir duas casas
decimais (%.2f).
e. A operação de divisão por 2 (/ 2 =).
11. numero = numero / 2;: Realiza a divisão do valor atual de numero por 2 e
armazena o resultado de volta na própria variável numero. Isso atualiza o valor
para a próxima iteração do loop.
12. printf("%.2f", numero);: Imprime na tela o resultado da divisão (o novo
valor de numero), formatado para exibir duas casas decimais.
13. divisoes++;: Incrementa o valor da variável divisoes em 1 a cada vez que o
loop é executado, ou seja, a cada vez que uma divisão por 2 é realizada.
14. printf("\n\n");: Imprime duas linhas em branco após o loop terminar.
15. printf("Resultado da ultima divisao: %.2f\n", numero);: Exibe na
tela o valor final da variável numero após o loop ter terminado (esse será o valor
menor que 1), formatado para duas casas decimais e seguido por uma nova
linha.
16. printf("\n\n");: Imprime duas linhas em branco.
17. printf("Quantidade de divisoes efetuadas: %d\n", divisoes);:
Exibe na tela o valor da variável divisoes, que representa o número total de
vezes que o número original foi dividido por 2. O %d é o especificador de formato
para imprimir um valor inteiro.
18. printf("\n\n");: Imprime duas linhas em branco.
19. return 0;: Indica que a função main terminou sua execução com sucesso.
Funcionamento do Programa:
O programa começa solicitando que o usuário digite um número. Esse número é então
armazenado na variável numero. O loop while continua executando enquanto o valor
de numero for maior ou igual a 1. Dentro do loop, o programa exibe a divisão atual,
realiza a divisão por 2 e incrementa o contador de divisões. Quando o valor de numero
se torna menor que 1, a condição do while se torna falsa e o loop termina. Finalmente,
o programa exibe o resultado da última divisão (o valor menor que 1) e a quantidade
total de divisões que foram realizadas.
EXERCÍCIO 5 ) Construa um programa em linguagem C que receba o tempo de cada volta
de um piloto de automobilismo em seu treino até que seja digitado tempo de volta igual a
zero. Informe qual foi o melhor tempo (na prática o menor tempo) e em que volta aconteceu
e o tempo médio considerando todas as voltas. O valor zero usado para encerrar o
programa não deve entrar no cálculo da média.
OBS: Após printf o programa se encerra, termi
nando com as chaves das respectivas seções;
Explicação do Código:
1. #include <stdio.h>: Inclui a biblioteca padrão de entrada e saída para usar
funções como printf (imprimir na tela) e scanf (ler dados do teclado).
2. #include <float.h>: Inclui a biblioteca que define constantes relacionadas a tipos
de ponto flutuante, como DBL_MAX. DBL_MAX representa o maior valor representável
para o tipo double, e o utilizamos para inicializar melhorTempo com um valor muito
alto, garantindo que o primeiro tempo de volta válido seja considerado o melhor até
então.
3. double tempoVolta;: Declara uma variável tempoVolta do tipo double para
armazenar o tempo de cada volta digitado pelo usuário. Usamos double para maior
precisão nos tempos.
4. double melhorTempo = DBL_MAX;: Declara uma variável melhorTempo do tipo
double para armazenar o menor tempo de volta encontrado até o momento. É
inicializada com DBL_MAX.
5. int voltaMelhorTempo = 0;: Declara uma variável inteira voltaMelhorTempo para
armazenar o número da volta em que o melhor tempo ocorreu. É inicializada com 0.
6. double somaTempos = 0;: Declara uma variável somaTempos do tipo double para
acumular a soma de todos os tempos de volta válidos. É inicializada com 0.
7. int numeroVoltas = 0;: Declara uma variável inteira numeroVoltas para contar o
número de voltas válidas (ou seja, diferentes de zero). É inicializada com 0.
8. printf(...): Exibe instruções para o usuário sobre como inserir os tempos e como
encerrar a entrada.
9. int numeroVoltaAtual = 1;: Inicializa uma variável para controlar o número da
volta atual, começando pela volta 1.
10. while (1): Inicia um loop infinito. A condição de saída deste loop será um break
quando o usuário digitar 0.
11. printf("Tempo da volta %d: ", numeroVoltaAtual);: Solicita o tempo da
volta atual ao usuário.
12. scanf("%lf", &tempoVolta);: Lê o tempo digitado pelo usuário e armazena na
variável tempoVolta. %lf é o especificador de formato para ler um double.
13. if (tempoVolta == 0) { break; }: Se o tempo digitado for igual a 0, a instrução
break é executada, e o programa sai do loop while, encerrando a entrada de
tempos.
14. if (tempoVolta < melhorTempo): Compara o tempo da volta atual com o
melhorTempo encontrado até o momento.
15. melhorTempo = tempoVolta;: Se o tempo da volta atual for menor que o
melhorTempo, ele se torna o novo melhorTempo.
16. voltaMelhorTempo = numeroVoltaAtual;: Armazena o número da volta em que o
novo melhorTempo foi registrado.
17. somaTempos += tempoVolta;: Adiciona o tempo da volta atual à somaTempos.
18. numeroVoltas++;: Incrementa o contador de numeroVoltas.
19. numeroVoltaAtual++;: Incrementa o número da volta atual para a próxima iteração.
20. if (numeroVoltas > 0): Após o loop, verifica se pelo menos uma volta válida foi
registrada para evitar divisão por zero no cálculo da média.
21. double tempoMedio = somaTempos / numeroVoltas;: Calcula o tempo médio
dividindo a somaTempos pelo numeroVoltas.
22. printf(...): Exibe os resultados do treino: o melhor tempo, a volta em que ocorreu
e o tempo médio.
23. else { printf(...) }: Se nenhuma volta válida foi registrada, exibe uma
mensagem informando isso.
Descrição do Código:
1. #include <stdio.h>: Inclui a biblioteca padrão de entrada e saída,
fornecendo funções como printf (para imprimir na tela) e scanf (para ler
dados do teclado).
2. int main() { ... }: Define a função principal do programa, onde a
execução começa.
3. int numMeses, i;: Declara duas variáveis inteiras:
a. numMeses: Armazena a quantidade de meses que o usuário deseja
informar.
b. i: É uma variável de controle usada no loop for.
4. float consumo, somaConsumo = 0, maiorConsumo, menorConsumo;:
Declara quatro variáveis do tipo float (ponto flutuante, para armazenar
números com casas decimais):
a. consumo: Armazena o consumo de energia de cada mês lido.
b. somaConsumo: Acumula a soma total do consumo de todos os meses
(inicializada com 0).
c. maiorConsumo: Armazena o maior consumo de energia encontrado até o
momento.
d. menorConsumo: Armazena o menor consumo de energia encontrado até
o momento.
5. printf(...): As primeiras linhas de printf exibem uma mensagem de
cabeçalho para o usuário, indicando o propósito do programa.
6. scanf("%d", &numMeses);: Lê a quantidade de meses que o usuário deseja
inserir e armazena esse valor na variável numMeses.
7. if (numMeses <= 0) { ... }: Verifica se o número de meses informado é
válido (maior que zero). Se não for, exibe uma mensagem de erro e encerra o
programa com um código de erro (1).
8. printf("Consumo do mes 1 = "); e scanf("%f", &consumo);: Solicita e
lê o consumo de energia do primeiro mês.
9. somaConsumo = consumo;, maiorConsumo = consumo;, menorConsumo =
consumo;: Inicializa as variáveis somaConsumo, maiorConsumo e
menorConsumo com o valor do consumo do primeiro mês. Isso garante que
tenhamos um ponto de partida para comparar os consumos dos meses
subsequentes.
10. for (i = 2; i <= numMeses; i++) { ... }: Inicia um loop for que itera
do segundo mês (i = 2) até o número total de meses (numMeses).
11. printf("Consumo do mes %d = ", i); e scanf("%f", &consumo);:
Dentro do loop, solicita e lê o consumo de energia para o mês atual (i).
12. somaConsumo += consumo;: Adiciona o consumo do mês atual à variável
somaConsumo.
13. if (consumo > maiorConsumo) { maiorConsumo = consumo; }:
Compara o consumo do mês atual com o valor atual de maiorConsumo. Se o
consumo atual for maior, maiorConsumo é atualizado.
14. if (consumo < menorConsumo) { menorConsumo = consumo; }:
Compara o consumo do mês atual com o valor atual de menorConsumo. Se o
consumo atual for menor, menorConsumo é atualizado.
15. float mediaConsumo = somaConsumo / numMeses;: Após o loop, calcula a
média do consumo dividindo a somaConsumo pelo número total de meses
(numMeses).
16. printf(...): As últimas linhas de printf exibem os resultados calculados: a
média do consumo, o maior consumo e o menor consumo, formatados para
mostrar duas casas decimais.
17. return 0;: Indica que o programa foi executado com sucesso.
Funcionamento do Programa:
O programa primeiro pergunta ao usuário quantos meses de consumo ele deseja
informar. Em seguida, ele lê o consumo do primeiro mês e usa esse valor para
inicializar as variáveis de soma, maior e menor consumo. Depois, um loop é executado
para ler o consumo dos meses restantes. Dentro do loop, a soma total é atualizada, e o
programa verifica se o consumo atual é maior que o maior consumo registrado até o
momento ou menor que o menor consumo registrado até o momento, atualizando
essas variáveis conforme necessário. Finalmente, após ler todos os consumos, o
programa calcula a média dividindo a soma total pelo número de meses e exibe a
média, o maior consumo e o menor consumo.
7) Faça um programa que sorteie um número aleatório entre 0 e 500 e pergunte ao
usuário qual é o "número mágico". O programa deverá indicar se a tentativa
efetuada pelo usuário é maior ou menor que o número mágico e contar o número
de tentativas. Quando o usuário conseguir acertar o número o programa deverá
classificar o usuário como:
a) De 1 a 3 tentativas: muito sortudo;
b) De 4 a 6 tentativas: sortudo;
c) De 7 a 10 tentativas: normal;
d) Mais de 10 tentativas: azarado.
Para gerar números aleatórios use a função rand(). No caso do exercício, queremos números
aleatórios compreendidos entre 0 e 500, portanto, "% 500" define o limite.
numero = rand() % 500;
Para evitar que a sequência randômica comece sempre igual, usamos a função time para
gerar números aleatórios a partir do relógio interno do computador. Note que é necessário
incluir a biblioteca "time.h" (coloque #include <time.h> no início). Então fica:
srand(time(NULL));
numero = rand() % 500;
Explicação do Código:
1. #include <stdio.h>: Inclui a biblioteca padrão de entrada e saída para usar
funções como printf (imprimir na tela) e scanf (ler dados do teclado).
2. #include <stdlib.h>: Inclui a biblioteca padrão que contém funções úteis,
incluindo rand() (para gerar números aleatórios) e srand() (para inicializar o
gerador de números aleatórios).
3. #include <time.h>: Inclui a biblioteca que contém funções relacionadas a
tempo, como time(), que usamos para inicializar o gerador de números
aleatórios de forma mais imprevisível.
4. srand(time(NULL));: Inicializa o gerador de números aleatórios. time(NULL)
retorna o número de segundos que se passaram desde uma data de referência.
Usar esse valor como semente para srand() garante que a sequência de
números aleatórios gerada seja diferente a cada execução do programa.
5. int numeroMagico = rand() % 501;:
a. rand(): Gera um número inteiro pseudoaleatório.
b. % 501: Aplica o operador módulo. O resultado dessa operação será o
resto da divisão do número aleatório por 501. Isso garante que
numeroMagico esteja sempre no intervalo de 0 a 500 (inclusive).
6. int palpite;: Declara uma variável inteira palpite para armazenar a
tentativa do usuário.
7. int tentativas = 0;: Declara uma variável inteira tentativas para contar o
número de palpites do usuário, inicializada com 0.
8. printf(...): Exibe uma mensagem inicial para o usuário.
9. do { ... } while (1);: Inicia um loop do-while. Esse loop garante que o
bloco de código dentro seja executado pelo menos uma vez. A condição while
(1) faz com que o loop continue indefinidamente até que uma instrução break
seja encontrada.
10. printf("Tentativa %d: ", tentativas + 1);: Solicita o palpite do
usuário, mostrando o número da tentativa atual.
11. scanf("%d", &palpite);: Lê o número inteiro digitado pelo usuário e
armazena na variável palpite.
12. tentativas++;: Incrementa o contador de tentativas a cada palpite.
13. if (palpite > numeroMagico) { ... } else if (palpite <
numeroMagico) { ... } else { ... }: Uma estrutura condicional que
verifica o palpite do usuário:
a. Se palpite for maior que numeroMagico, informa ao usuário que o
número mágico é menor.
b. Se palpite for menor que numeroMagico, informa ao usuário que o
número mágico é maior.
c. Se palpite for igual a numeroMagico, parabeniza o usuário e usa break
para sair do loop do-while.
14. printf("Voce tentou %d vezes.\n", tentativas);: Após o usuário
acertar, exibe o número total de tentativas.
15. printf("Classificacao: ");: Inicia a seção de classificação.
16. if (tentativas <= 3) { ... } else if (tentativas <= 6) { ... }
else if (tentativas <= 10) { ... } else { ... }: Uma série de
estruturas if-else if-else para classificar o usuário com base no número de
tentativas, conforme as regras especificadas.
17. printf(...): Exibe a classificação do usuário.
18. return 0;: Indica que o programa foi executado com sucesso.
Explicação do Código:
1. #include <stdio.h>: Inclui a biblioteca padrão de entrada e saída para usar
printf e scanf.
2. #include <limits.h>: Inclui a biblioteca que define constantes relacionadas aos
limites dos tipos de dados, como INT_MIN (o menor valor representável para um
int). Usamos INT_MIN para inicializar maior e segundoMaior, garantindo que
qualquer número digitado seja maior que o valor inicial.
3. int numeros[20];: Declara um array de 20 inteiros chamado numeros.
4. int soma = 0;: Declara e inicializa uma variável inteira soma para armazenar a soma
dos números.
5. int maior = INT_MIN;: Declara e inicializa uma variável inteira maior com o menor
valor possível para um inteiro.
6. int segundoMaior = INT_MIN;: Declara e inicializa uma variável inteira
segundoMaior com o menor valor possível para um inteiro.
7. int i;: Declara uma variável inteira i para ser usada como contador no loop for.
8. float media;: Declara uma variável de ponto flutuante media para armazenar o
resultado da média.
9. printf("Digite 20 numeros inteiros:\n");: Informa o usuário sobre o que o
programa espera.
10. for (i = 0; i < 20; i++) { ... }: Loop que se repete 20 vezes para ler os
números:
a. printf("Digite o numero %d: ", i + 1);: Solicita que o usuário digite
o número atual.
b. scanf("%d", &numeros[i]);: Lê o número digitado e o armazena na
posição i do array numeros.
c. soma += numeros[i];: Adiciona o número lido à variável soma.
d. if (numeros[i] > maior) { ... }: Verifica se o número atual é maior
que o valor atual de maior. Se for, o valor atual de maior passa a ser o
segundoMaior, e o número atual se torna o novo maior.
e. else if (numeros[i] > segundoMaior && numeros[i] < maior) {
... }: Se o número atual não for o maior, mas for maior que o
segundoMaior e menor que o maior, ele se torna o novo segundoMaior.
11. media = (float)soma / 20;: Calcula a média. É importante fazer o casting de
soma para float antes da divisão para garantir que a média seja calculada como um
número de ponto flutuante.
12. printf("\n--- Resultados ---\n");: Imprime um separador.
13. printf("Media = %.2f\n", media);: Exibe a média com duas casas decimais.
14. printf("Maior numero = %d\n", maior);: Exibe o maior número encontrado.
15. printf("Segundo maior numero = %d\n", segundoMaior);: Exibe o segundo
maior número encontrado.
16. return 0;: Indica que o programa foi executado com sucesso.
Explicação do Código:
1. #include <stdio.h>: Inclui a biblioteca padrão de entrada e saída.
2. int main() { ... }: Função principal do programa.
3. int diasUteisMes; e int cargaHorariaDiaria;: Variáveis para armazenar
a quantidade de dias úteis no mês e a carga horária diária do estágio (em horas),
respectivamente.
4. int horaEntrada, minutoEntrada, horaSaida, minutoSaida;:
Variáveis para armazenar a hora e o minuto de entrada e saída do estagiário.
5. int totalMinutosTrabalhados = 0;: Variável para acumular o total de
minutos trabalhados nos 5 dias.
6. printf(...) e scanf(...): São usados para interagir com o usuário,
solicitando a quantidade de dias úteis no mês e a carga horária diária.
7. for (int i = 1; i <= 5; i++) { ... }: Loop que itera 5 vezes para ler a
hora de entrada e saída de cada um dos 5 primeiros dias úteis.
8. printf("Dia %d:\n", i);: Indica qual dia está sendo informado.
9. printf("Hora de entrada (HH:MM) = "); e scanf("%d:%d",
&horaEntrada, &minutoEntrada);: Solicita e lê a hora de entrada no
formato HH:MM. O %d:%d no scanf permite ler dois inteiros separados por dois
pontos.
10. printf("Hora de saida (HH:MM) = "); e scanf("%d:%d", &horaSaida,
&minutoSaida);: Solicita e lê a hora de saída no formato HH:MM.
11. int minutosEntrada = horaEntrada * 60 + minutoEntrada;: Converte
a hora de entrada para minutos desde o início do dia.
12. int minutosSaida = horaSaida * 60 + minutoSaida;: Converte a hora
de saída para minutos desde o início do dia.
13. int minutosTrabalhadosDia = minutosSaida - minutosEntrada;:
Calcula o total de minutos trabalhados no dia.
14. if (minutosTrabalhadosDia < 0) { ... }: Verifica se a hora de saída é
anterior à hora de entrada e informa um erro, ignorando o cálculo para esse dia.
15. else { totalMinutosTrabalhados += minutosTrabalhadosDia; }: Se o
tempo trabalhado no dia for válido, adiciona ao total.
16. int minutosEsperados = cargaHorariaDiaria * 5 * 60;: Calcula o
total de minutos que o estagiário deveria ter trabalhado nos 5 dias.
17. int diferencaMinutos = totalMinutosTrabalhados minutosEsperados;: Calcula a diferença entre o total de minutos trabalhados
e o total de minutos esperados. Um valor positivo indica crédito, e um valor
negativo indica débito.
18. int horasDebitoCredito = diferencaMinutos / 60;: Converte a
diferença de minutos para horas.
19. int minutosDebitoCredito = diferencaMinutos % 60;: Obtém o resto
da divisão por 60 para obter os minutos restantes da diferença.
20. printf("--- Resultado ---\n");: Imprime um separador para os
resultados.
21. if (diferencaMinutos > 0) { ... } else if (diferencaMinutos <
0) { ... } else { ... }: Verifica se há crédito, débito ou saldo zero e
informa o resultado em horas e minutos. O débito é exibido com um sinal
negativo, então usamos -horasDebitoCredito e -minutosDebitoCredito
no printf.
22. return 0;: Indica que o programa foi executado com sucesso.
Explicação do Código:
1. #include <stdio.h>: Inclui a biblioteca padrão de entrada e saída.
2. #include <stdlib.h>: Inclui a biblioteca para as funções rand() e srand().
3. #include <time.h>: Inclui a biblioteca para a função time().
4. srand(time(NULL));: Inicializa o gerador de números aleatórios para que a
base da tabuada não seja sempre a mesma.
5. int baseTabuada = rand() % 8 + 2;:
a. rand() % 8: Gera um número aleatório entre 0 e 7.
b. + 2: Adiciona 2 ao resultado, garantindo que baseTabuada seja um
número entre 2 e 9 (inclusive). Podemos ajustar esse intervalo se
desejarmos.
6. int resposta;: Variável para armazenar a resposta digitada pela criança.
7. int acertos = 0;: Contador para o número de acertos, inicializado com 0.
8. int erros = 0;: Contador para o número de erros, inicializado com 0.
9. printf(...): Exibe uma mensagem inicial informando a tabuada que será
praticada.
10. for (int i = 1; i <= 10; i++) { ... }: Loop que itera de 1 a 10 para as
multiplicações da tabuada.
11. printf("%d x %d = ", baseTabuada, i);: Pergunta a multiplicação atual
para a criança.
12. scanf("%d", &resposta);: Lê a resposta digitada pela criança.
13. if (resposta == baseTabuada * i) { ... } else { ... }: Verifica se
a resposta está correta:
a. Se estiver correta, informa "Correto!" e incrementa o contador acertos.
b. Se estiver errada, informa "Errado!" e mostra a resposta correta,
incrementando o contador erros.
14. printf("\n--- Resultado ---\n");: Imprime um separador para os
resultados.
15. printf("Acertos: %d\n", acertos);: Exibe o número total de acertos.
16. printf("Erros: %d\n", erros);: Exibe o número total de erros.
17. printf("Classificacao: ");: Inicia a seção de classificação.
18. if (erros <= 2) { ... } else if (erros <= 4) { ... } else {
... }: Classifica a criança com base no número de erros, conforme as regras
do exercício.
19. printf(...): Exibe a classificação da criança.
20. return 0;: Indica que o programa foi executado com sucesso.
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )