Autora: ANITA LOPES cin>> numero; for( c = 1; c <= numero / 2; c++) //Em C++, a / faz divisão inteira if( numero % c == 0 ) cout<<c<< "\t"; cout<<numero<<"\n"; system("pause"); } 8) Entrar com um número e imprimir quantos divisores tem o número. Solução 1 prog Lista4Ex8 int numero, contaDivisores, c; contaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; }# ou contaDivisores++; } imprima "\nTotal de divisores: ", contaDivisores, "\n"; fimprog Solução 2 • Como 1 é divisor de todos os números, o for começou a partir de 2. • Depois da metade, só encontramos como divisor o próprio número e, por isso, usamos a expressão numero div 2. • Como o número ficou fora do for e o 1 também, o contador começou por 2. • Tendo em vista as duas considerações acima, melhoramos a performance em 50%, visto que evitamos metade das comparações. prog Lista4Ex8 int numero, contaDivisores, c; contaDivisores <- 2; imprima "\ndigite numero: "; leia numero; para( c <- 2; c <= numero div 2 ; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; } # ou contaDivisores++; } se(numero == 1) { imprima "\nTotal de divisores:1\n"; } senao { imprima "\nTotal de divisores: ", contaDivisores, "\n"; } fimprog 9) Entrar com um número e imprimir a soma dos divisores do número. Lista 4 - gabarito 8 Autora: ANITA LOPES Solução 1 prog Lista4Ex9 int numero, somaDivisores, c; somaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero; c++) { se( numero % c == 0 ) { somaDivisores <- somaDivisores + c; } } imprima "\nSoma dos divisores: ", somaDivisores, "\n"; fimprog Solução 2 • Como 1 é divisor de todos os números, o for começou a partir de 2. • Depois da metade, só encontramos como divisor o próprio número. • Como 1 só tem como divisor ele mesmo, foi necessário um teste para que não fosse impresso valor da variável somaDivisores. prog Lista4Ex9 int numero, somaDivisores, c; imprima "\ndigite numero: "; leia numero; somaDivisores <- numero +1; para( c <- 2; c <= numero div 2 ; c++) { se( numero % c == 0 ) { somaDivisores <- somaDivisores + c; } } se(numero == 1) { imprima "\nSoma dos divisores:1\n"; } senao { imprima "\nSoma dos divisores: ", somaDivisores, "\n"; } fimprog 10) Entrar com um número e imprimir se o número é, ou não, primo. Solução 1 prog Lista4Ex10 int numero, contaDivisores, c; contaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; }# ou contaDivisores++; } se( contaDivisores == 2 ) Lista 4 - gabarito 9 Autora: ANITA LOPES { imprima "\nPrimo\n"; } senao { imprima "\nNao Primo\n"; } fimprog Solução 2 • Como 1 é divisor de todos os números, o for começou a partir de 2. • Depois da metade, só encontramos como divisor o próprio número. • Tendo em vista as duas considerações acima, não podemos encontrar nenhum divisor. • O teste do primo teve que incluir um teste para saber se NÃO era o número 1 porque 1 não é primo e ele foi excluído do for para melhorar a performance. prog Lista4Ex10 int numero, contaDivisores, c; contaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 2; c <= numero div 2; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; }# ou contaDivisores++; } se( contaDivisores == 0 && numero <> 1 ) { imprima "\nPrimo\n"; } senao { imprima "\nNao Primo\n"; } fimprog 11) Entrar com um número e imprimir o fatorial desse número. prog Lista4Ex11 int numero, fat, c; fat <- 1; imprima "\nEntre com numero: "; leia numero; para( c <- 1; c <= numero; c++) { fat <- fat * c; } imprima "\nFatorial: ", fat,"\n"; fimprog 12) Ler 8 números inteiros e imprimir quantos são pares e quantos são ímpares. prog Lista4Ex12 int numero, cp, c; cp <- 0; Lista 4 - gabarito 10 Autora: ANITA LOPES para( c <- 1; c <= 8; c++) { imprima "\nEntre com numero: "; leia numero; se( numero % 2 == 0 ) { cp <- cp +1; } # ou cp++; } imprima "\npares: ", cp; imprima "\nimpares: ", 8-cp,"\n"; fimprog 13) Entrar com 20 números e imprimir a soma dos positivos e o total de números negativos. prog Lista4Ex13 int c, neg; real numero, soma; neg <- 0; soma <-0.0; para( c <- 1; c <= 20; c++) { imprima "\nDigite numero: "; leia numero; se( numero > 0.0 ) { soma <- soma + numero; } senao { se(numero<0.0) { neg ++; } } } imprima "\nSoma dos positivos: ", soma; imprima "\nTotal de negativos: ",neg,"\n"; fimprog 14) Entrar com 50 números e imprimir o maior entre eles. prog Lista4Ex14 int x; real num, maior; imprima "\nDigite 1o numero: "; leia num; maior <- num; para( x <- 2; x <= 50; x++) { imprima "\nDigite ", x ,"o numero: "; leia num; se(num > maior) { maior <-num; } } imprima "\nMaior numero digitado: ", maior,"\n"; fimprog 15) Entrar com 50 números e imprimir o menor entre eles. Lista 4 - gabarito 11 Autora: ANITA LOPES prog Lista4Ex15 int x; real num, menor; imprima "\nDigite 1o numero: "; leia num; menor <- num; para( x <- 2; x <= 50; x++) { imprima "\nDigite ", x ,"o numero: "; leia num; se(num < menor) { menor <-num; } } imprima "\nMenor numero digitado: ", menor,"\n"; fimprog 16) Entrar com 50 números e imprimir o maior e o menor entre eles. prog Lista4Ex16 int x; real num, menor, maior; imprima "\nDigite 1o numero: "; leia num; maior <- num; menor <- num; para( x <- 2; x <= 10; x++) { imprima "\nDigite ", x ,"o numero: "; leia num; se(num > maior ) { maior <-num; } senao { se(num < menor) { menor <-num; } } } imprima "\nMaior numero digitado: ", maior,"\n"; imprima "\nMenor numero digitado: ", menor,"\n"; fimprog 17) Entrar com um número que corresponde à faixa salarial e o salário de 100 pessoas. Imprimir o total salarial em cada faixa. 1 salário menor que R$ 900,00 2 R$900,00<=salário<R$ 1500,00 3 R$1500,00<=salário<R$ 3000,00 4 R$3000,00<=salário<R$ 5000,00 5 R$5000,00<=salário<R$ 10000,00 6 salário>=R$ 10000,00 prog Lisat4ex17 Lista 4 - gabarito 12 Autora: ANITA LOPES int x, faixa; real salario, faixa1,faixa2, faixa3, faixa4, faixa5, faixa6; faixa1 <- 0.0; faixa2 <- 0.0; faixa3 <- 0.0; faixa4 <- 0.0; faixa5 <- 0.0; faixa6 <- 0.0; para( x <- 1; x <= 10; x++ ) { imprima "\nSalario: "; leia salario; imprima "\nEntre com o numeroda faixa salarial( 1- 6): "; leia