- Cálculo de Série Alternada de Frações
O objetivo é calcular o valor da seguinte sequência matemática: 1/1 - 1/2 + 1/3 - 1/4 + ... + 1/99 - 1/100.
#include <stdio.h>
int main() {
double resultado = 0.0;
for (int denominador = 1; denominador <= 100; denominador++) {
double termo = 1.0 / denominador;
if (denominador % 2 != 0) {
resultado += termo;
} else {
resultado -= termo;
}
}
printf("O valor acumulado da serie eh: %.10f\n", resultado);
return 0;
}
Análise da Implementação:
- Uso de Ponto Flutuante: A variável
resultadoé declarada comodouble. Operações de divisão que geram casas decimais exigem tipos de ponto flutuante. O uso de inteiros causaria truncamento (ex: 1/2 resultaria em 0), invalidando o cálculo. - Controle de Sinal: Em vez de multiplicar por -1 a cada iteração, utilizamos o operador de módulo (
%) para verificar se o denominador é par ou ímpar, adicionando ou subtraindo o termo de forma direta.
- Comparação de Valores Inteiros
Receber dois números inteiros do usuário e determinar qual é o maior, ou se são iguais.
#include <stdio.h>
int main() {
int valorX, valorY;
printf("Digite dois numeros inteiros separados por espaco: ");
if (scanf("%d %d", &valorX, &valorY) != 2) {
printf("Entrada invalida.\n");
return 1;
}
if (valorX > valorY) {
printf("%d e maior que %d\n", valorX, valorY);
} else if (valorX < valorY) {
printf("%d e menor que %d\n", valorX, valorY);
} else {
printf("%d e igual a %d\n", valorX, valorY);
}
return 0;
}
- Identificação de Múltiplos de Três
Exibir todos os números múltiplos de 3 no intervalo de 1 a 100.
Estratégia Otimizada: Em vez de iterar por todos os números e usar o operador de módulo para verificar a divisibilidade, podemos inicializar o loop diretamente no primeiro múltiplo e incrementar o contader com o próprio valor do múltiplo (passo 3).
#include <stdio.h>
int main() {
printf("Multiplos de 3 no intervalo de 1 a 100:\n");
for (int multiplo = 3; multiplo <= 100; multiplo += 3) {
printf("%d ", multiplo);
}
printf("\n");
return 0;
}
- Classificação de Triângulos
Ler três valores inteiros representando os lados de um triângulo e classificar a forma geométrica.
Lógica de Validação:
- Para ser um triângulo válido, a soma de quaisquer dois lados deve ser estritamente maior que o terceiro lado. A condição de falha é mais simples de escrever: se a soma de dois lados for menor ou igual ao terceiro, não é triângulo.
- Equilátero: Todos os três lados são idênticos.
- Isósceles: Pelo menos dois lados são iguais.
- Escaleno: Todos os lados possuem medidas diferentes.
#include <stdio.h>
int main() {
int l1, l2, l3;
printf("Insira os comprimentos dos tres lados: ");
scanf("%d %d %d", &l1, &l2, &l3);
if (l1 + l2 <= l3 || l1 + l3 <= l2 || l2 + l3 <= l1) {
printf("Os valores fornecidos nao formam um triangulo.\n");
} else {
if (l1 == l2 && l2 == l3) {
printf("Classificacao: Triangulo Equilatero\n");
} else if (l1 == l2 || l2 == l3 || l1 == l3) {
printf("Classificacao: Triangulo Isosceles\n");
} else {
printf("Classificacao: Triangulo Escaleno\n");
}
}
return 0;
}
- Geração de Tabela de Multiplicação
Imprimir a tabuada de 1 a 9 utilizando estrutuars de repetição aninhadas.
Abordagem: Utilizaremos laços while para demonstrar uma alternativa aos tradicionais laços for. O laço externo controla as linhas (multiplicando) e o laço interno controla as colunas (multiplicador), limitendo a coluna ao valor da linha atual para formar o formato triangular da tabuada.
#include <stdio.h>
int main() {
int linha = 1;
while (linha <= 9) {
int coluna = 1;
while (coluna <= linha) {
printf("%dx%d=%-4d", linha, coluna, linha * coluna);
coluna++;
}
printf("\n");
linha++;
}
return 0;
}