Uploaded by rodrigopolak12

Exemplos de Código C: Soma, Série, Fatorial

advertisement
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.
Download