Comandos de repetição #2 (Loops)
O fatorial de um número é a multiplicação do número por todos os seus antecessores, exemplos:
fatorial de 5 = 5*4*3*2*1 = 120 fatorial de 3 = 3*2*1 = 6
Mais abaixo, três versões de um programa que calcula o fatorial de um número informado pelo usuário:
Programa fatorial com for:
#include <stdio.h>
int main() {
int num, i, fatorial;
printf( "Informe um numero: " );
scanf( "%d", &num );
fatorial = 1;
for( i = 1; i <= num; i++ )
fatorial *= i;
printf( "O fatorial de %d eh %d", num, fatorial );
return 0;
}
Programa fatorial com while:
#include <stdio.h>
int main() {
int num, i, fatorial;
printf( "Informe um numero: " );
scanf( "%d", &num );
fatorial = 1;
i = 1;
while( i <= num ) {
fatorial *= i;
i++;
}
printf( "O fatorial de %d eh %d", num, fatorial );
return 0;
}
Programa fatorial com do/while:
#include <stdio.h>
int main() {
int num, i, fatorial;
printf( "Informe um numero: " );
scanf( "%d", &num );
fatorial = 1;
i = 1;
do {
fatorial *= i;
i++;
} while( i <= num );
printf( "O fatorial de %d eh %d", num, fatorial );
return 0;
}
Abaixo um programa que lê 3 números e mostra qual é o maior e qual é o menor:
#include <stdio.h>
int main() {
int i, n, maior, menor;
for( i = 1; i <= 3; i++ ) {
printf( "Informe um numero: " );
scanf( "%d", &n );
if ( n > maior )
maior = n;
if ( n < menor )
menor = n;
}
printf( "O maior numero eh %d", maior );
printf( "O menor numero eh %d", menor );
return 0;
}
Exercício
Altere o programa acima para que o programa pergunte a quantidade de números a serem lidos e, então, leia a quantidade de números informada, mostrando no final, qual o número maior e qual o menor.
Ex: Seja quant a variável que tem armazenada a quantidade de números a serem lidas, se quant == 5, entao, ler 5 valores e armazenar o maior valor na variavel maior e o menor valor na variável menor
Série fibonacci
A série fibonacci é a seguinte: 1 1 2 3 5 8 13 21... Ou seja, cada elemento da séria é igual a soma dos dois elementos anteriores. Ex: 8 = 5 + 3; 3 = 2 + 1; 2 = 1 + 1. Abaixo, um programa que imprime a quantidade de elementos da séria fibonacci informada pelo usuário: Ex: Se o usuário informar 5, é mostrado 1 1 2 3 5.
#include <stdio.h>
int main() {
int num, i, fibo, ant1, ant2;
printf( "Informe um numero: " );
scanf( "%d", &num );
ant1 = 0;
ant2 = 1;
printf( "Serie fibonacci: " );
printf( "%d ", ant2 );
for( i = 1; i < num; i++ ) {
fibo = ant1 + ant2;
printf( "%d ", fibo );
ant1 = ant2;
ant2 = fibo;
}
return 0;
}
Números aleatórios
Abaixo um exemplo que envolve a geração de números aleatórios:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int num, i;
srand( time( NULL ) );
printf( "Numeros sorteados: " );
for( i = 1; i <= 10; i++ ) {
num = rand() % 10;
printf( "%d ", num );
}
return 0;
}
No programa acima, para sortear um valor entre 0 e 9, foi utilizada a função rand em cojunto com o operador de resto de divisão: o %. Ex: para sortear números entre 0 e um número N, fazer num = rand() % (N+1). A função srand recebe um valor semente para geração do número aleatório. Nesse caso, foi passado como semente para a função srand é a quantidade de segundos passados desde 1 de janeiro de 1970 até o instante que o programa é executado (através da função time(NULL)). Desse modo, a função time sempre retorna um valor diferente a cada execução e a semente é sempre diferente. Sem o uso da função srand, os valores sorteados a cada execução são sempre os mesmos.
Para utilizar as funções rand e srand, inclua o arquivo de cabeçalho stdlib.h e para utilizar a função time, inclua a biblioteca time.h.
Exercícios
Experimente rodar o programa anterior para entender o que ele faz e, altere-o para resolver os exercícios seguintes:
1) Faça um programa que imprima oito valores sorteados entre 1 e 100.
2) Faça um programa que imprima oito valores sorteados entre 1 e um número informado pelo usuário.
Exercícios
1) Codifique um programa em C que mostre todos os divisores de um número informado pelo usuário.
2) Faça um programa em C que mostre se um número informado pelo usuário é ou não primo. Lembrando que um número é dito primo se for divisível apenas por 1 e por ele mesmo.
Dica: Numero nenhum (diferente de zero) é divisível por número maior que ele mesmo. Por isso, para verificar se um número é primo, basta verificar os números de 2 a metade do número. Se houver algum divisor entre 2 e metade do número, o número não é primo.
3) Faça um programa em que leia dois números e informe se o segundo número é múltiplo do primeiro. Ex: 6 é multiplo de 3, 8 é multiplo de 2 e de 4.