A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos.

Apresentações semelhantes


Apresentação em tema: "Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos."— Transcrição da apresentação:

1 Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos 4.5 – Comandos de escape 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

2 4.6 – Comandos de Seleção 4.6.1 – Importante estrutura algoritmica Expressão Lista de comandos V 11, V 12,..., V 1i V 21, V 22,..., V 2j V n1, V n2,..., V np Outros Escolher um de vários caminhos alternativos, conforme o valor da expressão A expressão e os valores V 11, V 12,..., V np são inteiros ou caracteres

3 Em C aplainada: switch (Expressao) { V 11, V 12,..., V 1i : Lista de Comandos; V 21, V 22,..., V 2j : Lista de Comandos;... V n1, V n2,..., V np : Lista de Comandos; default: Lista de Comandos; }

4 switch (Expressao) { case V 11 : case V 12 :... case V 1i : Lista de comandos; break; case V 21 : case V 22 :... case V 2j : Lista de comandos; break;.. case V n1 : case V n2 :... case V np : Lista de comandos; break; default: Lista de comandos; } switch (Expressao) { V 11, V 12,..., V 1i : Lista de Comandos; V 21, V 22,..., V 2j : Lista de Comandos;... V n1, V n2,..., V np : Lista de Comandos; default: Lista de Comandos; } Em C O comando break é necessário para que somente uma lista de comandos seja executada Obs.: o ramo default é opcional

5 #include #include void main ( ) { char c; int n; printf ("Levantar o astral? (s/n): "); c = getche(); while (c == 's' || c == 'S') { while (c == 's' || c == 'S') { printf ("\n\n\tDigite um numero de 1 a 7: "); scanf ("%d", &n); switch (n) { case 1: printf ("\n\tVoce eh inteligente"); break; case 1: printf ("\n\tVoce eh inteligente"); break; case 2: printf ("\n\tVoce eh campeao"); break; case 3: printf ("\n\tVoce estah com tudo"); break; case 4: printf ("\n\tSeu destino eh vencer"); break; case 5: printf ("\n\tTudo coopera para seu sucesso"); break; case 6: printf ("\n\tA vida sorri para voce"); break; case 7: printf ("\n\tNada pode impedir sua vitoria"); break; default: printf ("\n\tO numero deve ser de 1 a 7"); } printf ("\n\nLevantar o astral? (s/n): "); c = getche (); }} Exemplo: seja o seguinte programa Resultado para n = 5 Tudo coopera para seu sucesso

6 #include #include void main ( ) { char c; int n; printf ("Levantar o astral? (s/n): "); c = getche(); while (c == 's' || c == 'S') { while (c == 's' || c == 'S') { printf ("\n\n\tDigite um numero de 1 a 7: "); scanf ("%d", &n); switch (n) { case 1: printf ("\n\tVoce eh inteligente"); case 1: printf ("\n\tVoce eh inteligente"); case 2: printf ("\n\tVoce eh campeao"); case 3: printf ("\n\tVoce estah com tudo"); case 4: printf ("\n\tSeu destino eh vencer"); case 5: printf ("\n\tTudo coopera para seu sucesso"); case 6: printf ("\n\tA vida sorri para voce"); case 7: printf ("\n\tNada pode impedir sua vitoria"); default: printf ("\n\tO numero deve ser de 1 a 7"); } printf ("\n\nLevantar o astral? (s/n): "); c = getche (); }} Resultado para n = 5 Tudo coopera para seu sucesso A vida sorri para voce Nada pode impedir sua vitoria O numero deve ser de 1 a 7 Retirando-se os comandos break

7 Fluxograma do switch sem usar break: Expressão Lista de comandos V 11, V 12,..., V 1i V 21, V 22,..., V 2j V n1, V n2,..., V np Outros

8 Exemplo: programa para contar diversos tipos de caracteres Digitar uma frase, guardando-a no buffer do teclado Digitar uma frase, guardando-a no buffer do teclado Ler cada caractere da frase, classificando-o Ler cada caractere da frase, classificando-o Acrescentar 1 ao contador da classe do caractere Acrescentar 1 ao contador da classe do caractere No final, escrever no vídeo o valor do contador de cada classe No final, escrever no vídeo o valor do contador de cada classe Classes: 1) A ou a2) E ou e 3) I ou i4) O ou o 5) U ou u6) W ou w 7) Y ou y8) Consoantes 9) Dígitos decimais10) Outros caracteres

9 #include #include /* Cabecalho e declaracoes */ int main ( ) { char c; int ct_a, ct_e, ct_i, ct_o, ct_u, ct_w, ct_y, ct_cons, ct_dig, ct_outros; /* Zerar todos os contadores */ ct_a = ct_e = ct_i = ct_o = ct_u = ct_w = ct_y = ct_cons = ct_dig = ct_outros = 0;

10 /* Ler e classificar cada caractere */ printf ("Digite uma frase:\n\n\t"); scanf ("%c", &c); while (c != '\n') { switch (c) { case 'a': case 'A': ct_a++; break; case 'e': case 'E': ct_e++; break; case 'i': case 'I': ct_i++; break; case 'o': case 'O': ct_o++; break; case 'u': case 'U': ct_u++; break; case 'w': case 'W': ct_w++; break; case 'y': case 'Y': ct_y++; break; default: if (c >= '0' && c = '0' && c <= '9') ct_dig++; else if (c >= 'B' && c = 'b' && c = 'B' && c = 'b' && c <= 'z')ct_cons++; else ct_outros++; } scanf ("%c", &c); }

11 /* Imprimir os contadores e fechar a tela*/ printf ("\nLetra A : %3d\nLetra E : %3d", ct_a, ct_e); printf ("\nLetra I : %3d\nLetra O : %3d", ct_i, ct_o); printf ("\nLetra U : %3d\nLetra W : %3d", ct_u, ct_w); printf ("\nLetra Y : %3d\nConsoantes: %3d", ct_y, ct_cons); printf ("\nDigitos : %3d\nOutros : %3d", ct_dig, ct_outros); printf ("\n\n"); system ("pause"); return 0; } Digite uma frase: hberoçh 9g59y9 )_Y(HHU 3@$%UDFUYapok Letra A : 1 Letra E : 1 Letra I : 0 Letra O : 2 Letra U : 3 Letra W : 0 Letra Y : 3 Consoantes: 11 Digitos : 5 Outros : 14 Pressione... Resultado

12 Exercícios 4.6: 1.Dizer que características uma frase digitada deve ter para que o programa do próximo slide a considere correta

13 #include #include int main ( ) { char c, erro; int c1, c2, c3, c4, c5, c6; c1 = c2 = c3 = c4 = c5 = c6 = 0; erro = 0; printf ("Digite uma frase: "); do { scanf ("%c", &c); if (c != '\n') { switch (c) { case ' ( ' : c1++; break ;case ' ) ' : c2++; break ; case ' [ ' : c3++; break ;case ' ] ' : c4++; break ; case ' { ' : c5++; break ;case ' } ' : c6++; break ; } if (c2 > c1 | | c4 > c3 | | c6 > c5) erro = 1; } } while (c ! = ' \n ' && erro == 0); if (erro == 0 && c1 == c2 && c3 == c4 && c5 == c6) printf ("Frase correta"); else printf ("Frase com erros"); printf ("\n\n"); system ("pause"); return 0; }

14 Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos 4.5 – Comandos de escape 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

15 4.7 – Introdução à Metodologia Top- down 4.7.1 – Conceito É a decomposição de uma grande tarefa numa coleção de tarefas menores interligadas É a decomposição de uma grande tarefa numa coleção de tarefas menores interligadas Cada uma dessas tarefas menores pode ser decomposta da mesma forma Cada uma dessas tarefas menores pode ser decomposta da mesma forma No final, chega-se a uma coleção de tarefas triviais interligadas No final, chega-se a uma coleção de tarefas triviais interligadas Cada uma delas poderá ser resolvida por um comando típico dos algoritmos Cada uma delas poderá ser resolvida por um comando típico dos algoritmos

16 4.7.2 – Desenvolvimento de um algoritmo para encontrar os n primeiros números naturais primos Método: Por definição, 1 não é primo Por definição, 1 não é primo Percorrer o campo dos naturais, do n o 2 em diante, até encontrar n números primos Percorrer o campo dos naturais, do n o 2 em diante, até encontrar n números primos

17 4.7.2 – Desenvolvimento de um algoritmo para encontrar os n primeiros números naturais primos Método: Para ver se um número num é primo: Para ver se um número num é primo: 0123num/2num AB num tem divisor na região B se e somente se tem divisor na região A Então basta procurar divisores para num na região A

18 Desenvolvimento do algoritmo por “top-down”: 1ª Etapa: N_PrimeirosNúmerosPrimos { Escrever o título da tarefa; Pedir e ler o valor de n; Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } int n; Declarações

19 N_PrimeirosNúmerosPrimos { Escrever o título da tarefa; Pedir e ler o valor de n; Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

20 N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

21 N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

22 N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

23 N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

24 N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else { num = 2; cont = 0; do { Testar se num é primo; if (num é primo) { write (num); cont++; }num++; } while (cont < n); }} 2ª Etapa num: número a ser testado cont: contador de números primos encontrados Faltam detalhes int n, num, cont; Declarações

25 Desenvolvimento de: Testar se num é primo; if (num é primo) Procurar divisor para num, no intervalo [ 2,   ]; if (não encontrar divisor para num) 3ª Etapa

26 Desenvolvimento de: Procurar divisor para num, no intervalo [ 2,   ]; if (não encontrar divisor para num) div = 2; while ((não encontrar divisor) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (não encontrar divisor para num) 4ª Etapa int n, num, cont, div; Declarações

27 div = 2; while ((não encontrar divisor) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (não encontrar divisor para num) 5ª e última Etapa int n, num, cont, div; Declarações

28 div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (achou == False) int n, num, cont, div; logic achou; Declarações 5ª e última Etapa

29 div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (achou == False) int n, num, cont, div; logic achou; Declarações 5ª e última Etapa

30 div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { resto = num % div; if (resto == 0) achou = True; else div++; } if (achou == False) int n, num, cont, div, resto; logic achou; Declarações 5ª e última Etapa Copia-se este trecho no resultado da 2ª Etapa

31 N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else { num = 2; cont = 0; do { Testar se num é primo; if (num é primo) { write (num); cont++; }num++; } while (cont < n); }} Faltam detalhes int n, num, cont; Declarações

32 N_PrimeirosNúmerosPrimos { int n, num, cont, div, resto; logic achou; write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else { num = 2; cont = 0; do { div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { resto = num % div; if (resto == 0) achou = True; else div++; } if (achou == False) { write (num); cont++; } num++; } while (cont < n); }} Obs.: todos os comandos resolvem problemas triviais e já podem ser traduzidos para a Linguagem C

33 #include #include /*Declaracao do tipo e das constantes logicas */ typedef char logic; const logic True = 1, False = 0; /*Cabecalho e declaracoes das variaveis locais */ int main () { int n, num, cont, div, resto; logic achou;

34 /*Escrita do titulo e leitura de n */ printf ("Relacao dos n primeiros numeros primos"); printf ("\n\n\tDigite o valor de n: "); scanf ("%d", &n); printf ("\n"); printf ("\n"); /*Caso de valor improprio para n */ if (n <= 0) printf ("%d - valor improprio para n", n); /*Caso de valor correto para n Procura dos n primeiros numeros primos */ else { num = 2; cont = 0; do {

35 /*Procura de divisor para um numero */ div = 2; achou = False; while ((achou == False) && (div*div <= num)) { resto = num % div; if (resto == 0) achou = True; else div++; } /*Escrita de cada numero primo encontrado; 10 numeros em cada linha*/ if (achou == False) { printf ("%5d", num); cont++; printf ("%5d", num); cont++; if (cont % 10 == 0) printf ("\n"); if (cont % 10 == 0) printf ("\n"); } } Não será usado ‘for’, pois o último comando do ‘while’ é um ‘if’

36 /*Preparando para testar o proximo numero, ate que os n primeiros numeros primos sejam encontrados */ num++; } while (cont < n); } /*Fechamento da tela de execucao */ printf ("\n\n"); system ("pause"); return 0; printf ("\n\n"); system ("pause"); return 0;} Relacao dos n primeiros numeros primos Digite o valor de n: 26 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 Digite algo para encerrar: Resultado para n = 26

37 4.7.3 – Desenvolvimento de um algoritmo para encontrar os fatores primos de números lidos Requisitos para o programa: Gerar relatórios do Gerar relatórios dotipo: FATORES PRIMOS DE NUMEROS INTEIROS Fatorar numero? (s/n): s Digite o numero: 504 Fatores primos de 504: 2^3 3^2 7^1 Fatorar numero? (s/n): s Digite o numero: 348 Fatores primos de 348: 2^2 3^1 29^1 Fatorar numero? (s/n): s Digite o numero: 750 Fatores primos de 750: 2^1 3^1 5^3 Fatorar numero? (s/n): n Pressione qualquer tecla para continuar...

38 Método: ilustrado com os fatores primos de 504, 348 e 750 5042 2522 1262 633 213 77 1 3482 1742 873 29 1 7502 3753 1255 255 55 1 Encontrar o próximo primo como divisor é de programação trabalhosa Mais fácil é testar divisores consecutivos a partir de 2

39 Desenvolvimento do algoritmo por “top-down”: 1ª Etapa: FatoresPrimos { Escrever o título da tarefa; Perguntar se quer fatorar número; Aguardar a resposta; Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }}

40 FatoresPrimos { Escrever o título da tarefa; Perguntar se quer fatorar número; Aguardar a resposta; Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa

41 FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

42 FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

43 FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

44 FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

45 FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); Fatorar o número e escrever seus fatores; write (“Fatorar numero? (s/n): ”); read (resposta); }} 2ª Etapa char resposta; int num;

46 FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); Fatorar o número e escrever seus fatores; write (“Fatorar numero? (s/n): ”); read (resposta); }} 2ª Etapa char resposta; int num; A ser desenvolvido na próxima etapa

47 Desenvolvimento de Fatorar num e escrever seus fatores: 504 504 % 2 = 0 2 252 252 % 2 = 0 2 126 126 % 2 = 0 2 2 * 2 ≤ 504 63 63 % 2 ≠ 03 * 3 ≤ 6363 % 3 = 0 3 21 21 % 3 = 0 3 7 4 * 4 > 7 7 1 3x 2x 1x 504 = 2 3 * 3 2 * 7 1 7 % 3 ≠ 0 3ª Etapa Copiar ‘num’ numa variável ‘aux’ Dividir ‘aux’ pelos fatores encontrados aux Fatores devem ser procurados em [2,   ] Aqui, aux é primo

48 Desenvolvimento de Fatorar num e escrever seus fatores: 348 348 % 2 = 0 2 174 174 % 2 = 0 2 873 2 * 2 ≤ 348 29 87 % 2 ≠ 03 * 3 ≤ 8787 % 3 = 0 29 1 4 * 4 ≤ 29 2x 1x 348 = 2 2 * 3 1 * 29 1 29 % 3 ≠ 029 % 4 ≠ 05 * 5 ≤ 2929 % 5 ≠ 06 * 6 > 29 3ª Etapa Aqui, aux é primo aux

49 Desenvolvimento de Fatorar num e escrever seus fatores: 750 750 % 2 = 0 2 375 375 % 2 ≠ 0 3 125 375 % 3 = 0 5 2 * 2 ≤ 750 25 125 % 3 ≠ 0 3 * 3 ≤ 375 125 % 4 ≠ 0 5 5 125 % 5 = 0 5 1 4 * 4 ≤ 125 3x 1x 750 = 2 1 * 3 1 * 5 3 25 % 5 = 0 5 * 5 ≤ 125 5 % 5 = 0 3ª Etapa Aqui, aux não é primo Terminada a procura de fatores em [2,   ], se aux > 1, então aux é um fator de expoente 1 aux

50 Desenvolvimento de Fatorar num e escrever seus fatores: write (“Fatores primos de ”, num, “:”); aux = num; Procurar fatores para aux no intervalo [2,   ] Atualizando o valor de aux, ou seja Dividindo aux pelos fatores encontrados Imprimindo cada fator ao lado de seu expoente Testar se aux restante é um fator; 3ª Etapa char resposta; int num, aux;

51 write (“Fatores primos de ”, num, “:”); aux = num; Procurar fatores para aux no intervalo [2,   ] Atualizando o valor de aux, ou seja Dividindo aux pelos fatores encontrados imprimindo cada fator ao lado de seu expoente Testar se aux restante é um fator; 4ª Etapa char resposta; int num, aux;

52 write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} Testar se aux restante é um fator; 4ª Etapa char resposta; int num, aux, fat;

53 write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} Testar se aux restante é um fator; 4ª Etapa char resposta; int num, aux, fat;

54 write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} if (aux > 1 || num == 1) write (aux, “^1”); 4ª Etapa char resposta; int num, aux, fat;

55 write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} if (aux > 1 || num == 1) write (aux, “^1”); 5ª Etapa char resposta; int num, aux, fat;

56 fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} 5ª Etapa char resposta; int num, aux, fat;

57 fat = 2; while (fat 2 <= aux ) { expo = 0; while (aux % fat == 0) { expo++; aux /= fat; } if (expo > 0) write (fat, “^”, expo); fat++;} 5ª Etapa char resposta; int num, aux, fat, expo;

58 FatoresPrimos { char resposta; int num, aux, fat, expo; write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat*fat <= aux ) { expo = 0; while (aux % fat == 0) { expo++; aux /= fat; } if (expo > 0) write (fat, “^”, expo); fat++;} if (aux > 1 || num == 1) write (aux, “^1”); write (“Fatorar numero? (s/n): ”); read (resposta); }} Algoritmo final

59 FatoresPrimos { char resposta; int num, aux, fat, expo; write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); write (“Fatores primos de ”, num, “:”); aux = num; for (fat = 2; fat*fat <= aux; fat++ ) { for (expo = 0; aux % fat == 0; expo++, aux /= fat); if (expo > 0) write (fat, “^”, expo); } if (aux > 1 || num == 1) write (aux, “^1”); write (“Fatorar numero? (s/n): ”); read (resposta); }} Algoritmo final, usando comandos for

60 #include #include /*Cabecalho e declaracoes*/ int main () { char resposta, lixo; int num, aux, fat, expo; /*Escrita do titulo da tarefa e oferecimento de servico ao operador*/ printf ("FATORES PRIMOS DE NUMEROS INTEIROS"); printf ("\n\nFatorar numero? (s/n): "); scanf ("%c", &resposta); while (resposta == 's' || resposta == 'S') { /*Solicitacao do numero a fatorar */ printf ("\n\tDigite o numero: "); scanf ("%d%c", &num, &lixo); printf ("\n\tFatores primos de %d: ", num); Programa em C

61 /*Pesquisa por fatores primos no intervalo [2, sqrt(aux)]*/ aux = num; for (fat = 2; fat*fat <= aux; fat++) { /*Calculo do expoente de um fator*/ for (expo = 0; aux % fat == 0; expo++, aux /= fat); /*Escrita de um fator ao lado de seu expoente*/ if (expo > 0) printf ("%d^%d ", fat, expo); }

62 /*Testando se o ultimo aux eh fator primo*/ if (aux > 1 || num == 1) printf ("%d^1", aux); /*Novo oferecimento de servico ao operador*/ printf ("\n\nFatorar numero? (s/n): "); scanf ("%c", &resposta); } /*Fechamento da tela */ printf ("\n\n"); system ("pause"); return 0; }


Carregar ppt "Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos."

Apresentações semelhantes


Anúncios Google