Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercícios de Repetições Comando DO PROGRAM L2EXERC1 c Ler e imprimir 5 valores reais. Calcular e imprimir a c media aritmetica dos valores lidos. REAL Media, Valor, Soma INTEGER I CHARACTER Espaco*3 PARAMETER (Espaco=' ') Soma = 0 DO I = 1,5 PRINT*, 'Digite valor ', I READ*, Valor Soma = Soma + Valor ENDDO Media = Soma/5 PRINT* PRINT*, 'Media aritmetica dos valores lidos: ', Media STOP END PROGRAM L2EXERC2 c Ler e imprimir N valores reais. Calcular e imprimir a c media aritmetica dos valores lidos. REAL Media, Valor, Soma INTEGER I, N PRINT*, 'Digite numero de valores para obtencao da media.' READ*, N PRINT* Soma = 0 DO I = 1, N PRINT*, 'Digite valor ', I READ*, Valor PRINT*, Valor, 'Valor ', I, ' em ', N Soma = Soma + Valor ENDDO Media = Soma/N PRINT* PRINT*, 'Media aritmetica dos ', N, ' valores lidos: ', Media STOP END PROGRAM L2EXERC3 c Ler 10 valores inteiros. Imprimir, com mensagem, os valores que c estao no intervalo entre 1 e 15 , e os valores que estao c fora do intervalo. INTEGER I, Valor DO I = 1, 10 PRINT*, 'Digite valor ', I READ*, Valor IF ((Valor .GE. 1) .AND. (Valor .LE. 15)) THEN PRINT*, Valor, ' esta no intervalo' ELSE PRINT*, Valor, ' nao esta no intervalo' ENDIF PRINT* ENDDO STOP END PROGRAM L2EXERC4 c Ler N valores inteiros. Imprimir, com mensagem, os valores que c estao no intervalo entre 1 e 15 , e os valores que estao fora c do intervalo. Contar quantos valores foram impressos dentro do c intervalo e quantos foram impressos fora do intervalo. c No fim imprimir os contadores. INTEGER I, Valor, N, Fora PRINT*, 'Digite numero de valores para obtencao da media.' READ*, N PRINT* Fora = 0 DO I = 1, N PRINT*, 'Digite valor ', I, ' em ', N READ*, Valor IF ((Valor .GE. 1) .AND. (Valor .LE. 15)) THEN PRINT*, Valor, ' esta no intervalo' ELSE PRINT*, Valor, ' nao esta no intervalo' Fora = Fora + 1 ENDIF PRINT* ENDDO PRINT*, N - Fora, ' valores lidos no intervalo' PRINT*, Fora, ' valores lidos fora do intervalo' STOP END PROGRAM L2EXERC5 c Ler N valores inteiros. Imprimir, com mensagem, os valores lidos c que sao pares , e os valores que nao sao pares. Contar quantos c valores pares foram impressos e quantos impares tambem. c No fim imprimir os contadores. INTEGER I, Valor, N, Pares, Impares PRINT*, 'Digite numero de valores para processar.' READ*, N PRINT* Pares = 0 Impares = 0 DO I = 1, N PRINT*, 'Digite valor ', I, ' em ', N READ*, Valor IF (MOD(Valor,2) .EQ. 0) THEN PRINT*, Valor, ' e numero par' Pares = Pares + 1 ELSE PRINT*, Valor, ' e numero impar' Impares = Impares + 1 ENDIF PRINT* ENDDO PRINT*, Pares, ' valores pares lidos' PRINT*, Impares, ' valores impares lidos' STOP END PROGRAM L2EXERC6 c Ler e imprimir K coeficientes de equações do segundo grau. c Para cada equacao imprima os coeficientes e as raizes reais, c se houverem. Caso nao haja imprimir mensagem. No fim c imprimir o numero de equacoes que nao tiveram raizes reais. REAL A, B, C, Delta, X1, X2 INTEGER K, I, SemRaiz PRINT*, 'Digite numero de equacoes para processar.' READ*, K SemRaiz = 0 DO I = 1, K PRINT* PRINT*, 'Digite coeficientes da equacao ', I, ' em ', K READ*, A, B, C PRINT*, 'A=', A, ' B= ',B, 'C= ', C Delta = B**2 - 4*A*C IF (Delta .GE. 0) THEN X1 = (-B + SQRT(Delta))/(2*A) X2 = (-B - SQRT(Delta))/(2*A) PRINT*, 'X1=', X1, ' X2= ', X2 ELSE PRINT*, 'Nao ha raizes reais para os coeficientes' SemRaiz = SemRaiz + 1 ENDIF PRINT* ENDDO IF (SemRaiz .EQ. 0) THEN PRINT*, 'Todas equacoes tiveram raizes reais' ELSE PRINT*, 'Total de equacoes sem raizes reais: ', SemRaiz ENDIF STOP END PROGRAM L2EXERC7 c Ler e imprimir o nome, salario bruto de N funcionarios. c Calcular o desconto e o salario liquido de todos os funcionarios. c O desconto sera calculado da seguinte maneira: c salario bruto <= 100,00 isento c 100,00 < salario bruto <= 200,00 10% c 200,00 < salario bruto <= 400,00 20% c salario bruto > 400,00 25% c Imprimir : nome, salario bruto, desconto e salario liquido de c cada funcionario. No fim imprimir total de salario bruto, c total dos descontos e total do salario liquido. Imprimir tambem c o numero de funcionarios que nao tiveram desconto e o numero de c funcionarios que tiveram desconto. INTEGER N, I, NFDesc, NFSDesc REAL SalBr, Perc, ValDesc, Saliq, TotSB, TotDesc, TotSLiq CHARACTER Espaco*3, Nome*20 PARAMETER (Espaco=' ') DATA TotSB, TotDesc, TotSLiq /3*0.0/, NFDesc, NFSDesc/2*0/ PRINT*, 'Digite numero de funcionarios.' READ*, N DO I = 1, N PRINT* PRINT*, 'Digite nome do funcionario' READ*, Nome PRINT*, 'Digite valor do salario' READ*, SalBr IF (SalBr .LE. 100.0) THEN NFSDesc = NFSDesc + 1 Perc = 0 ELSE NFDesc = NFDesc + 1 IF (SalBr .LE. 200.0) THEN Perc = 0.1 ELSE IF (SalBr .LE. 400.0) THEN Perc = 0.2 ELSE PERC = 0.25 ENDIF ENDIF ENDIF ValDesc= SalBr * Perc Saliq = SalBr - ValDesc PRINT* PRINT*, ' Nome:', Nome, Espaco, 'Salario:', SalBr PRINT*, ' Desconto:', ValDesc, Espaco, 'Salario Liquido:', Saliq TotSB = TotSB + SalBr TotDesc = TotDesc + ValDesc TotSLiq = TotSLiq + Saliq ENDDO PRINT* PRINT*, ' Total dos Salarios:', TotSB PRINT*, ' Total dos Descontos:', TotDesc PRINT*, ' Total Salarioss Liquidos:', TotSLiq STOP END PROGRAM L2EXERC8 c Dados A1, R e N gerar e imprimir uma PA com N termos. INTEGER A1, N, Razao, Prox, I PRINT*, 'Digite o primeiro termo, razao e num. de termos da PA.' READ*, A1, Razao, N PRINT* PRINT*, 'Razao: ', Razao, ' Num. Termos:', N PRINT* PRINT*, 'PA gerada:' PRINT*, ' ', A1 Prox = A1 DO I = 2, N Prox = Prox + Razao PRINT*, ' ', Prox ENDDO STOP END PROGRAM L2EXERC9 c Gerar e imprimir a serie de Fibonacci com K termos. INTEGER A, B, Prox, K, I PRINT*, 'Digite o num. de termos da serie de Fibonacci.' READ*, K PRINT* PRINT*, ' Num. Termos:', K PRINT* A = 0 B = 1 PRINT*, 'Serie de Fibonacci gerada:' PRINT*, ' ', A PRINT*,' ', B DO I = 3, K Prox = A + B PRINT*, ' ', Prox A = B B = Prox ENDDO STOP END PROGRAM L2EXERC10 c Dados dois inteiros A e B calcular e imprimir C=A*B, c onde A*B devera ser obtido por somas sucessivas. INTEGER A, B, C, I PRINT*, 'Digite valores para A e B.' READ*, A, B PRINT* PRINT*, 'A= ', A, ' B=', B PRINT* C = 0 DO I = 1, A C = C + B ENDDO PRINT*, 'Produto por somas sucessivas de A * B= ', C STOP END PROGRAM L2EXERC11 c Ler e imprimir um inteiro N. Calcular e imprimir a serie : c Serie = 1/N + 2/(N-1) + 3/(N-2) + ........ + (N-1)/2 + N REAL Soma INTEGER I, N PRINT*, 'Digite numero de valores para obtencao da serie.' READ*, N PRINT* Soma = 0 DO I = 1, N Soma = Soma + FLOAT(I)/FLOAT(N - I + 1) ENDDO PRINT* PRINT*, 'Somatorio dos elementos da serie para N=', N PRINT*, 'Soma=', Soma STOP END PROGRAM L2EXERC12 c Para cada inteiro entre L e M, lidos, imprimir o inteiro que seja c um numero perfeito. Um numero e perfeito se ele e igual a soma de c seus divisores - nao considerando o proprio. INTEGER L, M, Num , Soma, Metade, Div PRINT*, 'Digite valores inicial e final do intervalo.' READ*, L, M PRINT* Soma = 0 DO Num = L, M Metade = Num/2 Soma = 0 DO Div = 1, Metade IF (MOD(Num,Div) .EQ. 0) THEN Soma = Soma + Div ENDIF ENDDO IF (Soma .EQ. Num) THEN PRINT*, Num, ' e numero perfeito' ENDIF ENDDO STOP END PROGRAM L2EXERC13 c Ler e imprimir um inteiro P. Calcular e imprimir fatorial de P. INTEGER I, P, Fat PRINT*, 'Digite valor para calculo do fatorial.' READ*, P PRINT* Fat = 1 DO I = 2, P Fat = Fat * I ENDDO PRINT*, 'Fatorial de P=', P, ' e igual a:', Fat STOP END PROGRAM L2EXERC14 c Para 1<=i<=n, i+1<=j<=n+1 e j<=k<=n+i calcular S = somatorio(i*k+j) c se i*k+j < N + 3. No fim imprimir o valor de S. INTEGER I, J, K, N, Soma PRINT*, 'Digite valor para calculo do somatorio.' READ*, N PRINT* Soma = 0 DO I = 1, N DO J = I+1, N+1 DO K = J, N+I IF (I*K+J .LT. N+3) THEN SOMA = SOMA + (I * K + J) ENDIF ENDDO ENDDO ENDDO PRINT*, 'Somatorio para N=', N, ' e igual a:', Soma STOP END PROGRAM L2EXERC15 c Ler e imprimir N valores reais. Imprimir o maior valor lido. INTEGER I, N REAL Valor, Maior PRINT*, 'Digite numero de valores para processar.' READ*, N PRINT* PRINT*, 'Digite primeiro valor.' READ*, Valor PRINT* PRINT*, 'Valor 1=', Valor Maior = Valor DO I = 2, N PRINT*, 'Digite proximo valor.' READ*, Valor PRINT* PRINT*, 'Valor ', I, '=', Valor IF (Valor .GT. Maior) THEN Maior = Valor ENDIF ENDDO PRINT* PRINT*, 'Maior valor lido foi:', Maior STOP END PROGRAM L2EXERC16 c Ler e imprimir N valores reais. Imprimir o maior e o menor valor lido. INTEGER I, N REAL Valor, Maior, Menor PRINT*, 'Digite numero de valores para processar.' READ*, N PRINT* PRINT*, 'Digite primeiro valor.' READ*, Valor PRINT* PRINT*, 'Valor 1=', Valor Maior = Valor Menor = Valor DO I = 2, N PRINT* PRINT*, 'Digite proximo valor.' READ*, Valor PRINT* PRINT*, 'Valor ', I, '=', Valor IF (Valor .GT. Maior) THEN Maior = Valor ELSE IF (Valor .LT. Menor) THEN Menor = valor ENDIF ENDIF ENDDO PRINT* PRINT*, 'Maior valor lido foi:', Maior PRINT* PRINT*, 'Menor valor lido foi:', Menor STOP END PROGRAM L2EXERC17 c Ler e imprimir valores reais que representem a altura de K pessoas. c Imprimir quais as duas maiores alturas lidas e o numero de pessoas que as possuem. REAL Altura, Maior1, Maior2 INTEGER I, K, NumP1, NumP2 PRINT*, 'Digite numero de pessoas para processar.' READ*, K PRINT* PRINT*, 'Digite primeira altura.' READ*, Altura PRINT* PRINT*, 'Altura 1=', Altura Maior1 = Altura NumP1 = 1 Maior2 = Altura NumP2 = 1 DO I = 2, K PRINT* PRINT*, 'Digite proxima altura.' READ*, Altura PRINT* PRINT*, 'Altura ', I, '=', Altura IF (Altura .GT. Maior1) THEN Maior2 = Maior1 NumP2 = NumP1 Maior1 = Altura NumP1 = 1 ELSE IF (Altura .EQ. Maior1) THEN NumP1 = NumP1 + 1 ELSE IF (Altura .GT. Maior2) THEN Maior2 = Altura NumP2 = 1 ELSE IF (Altura .EQ. Maior2) THEN NumP2 = NumP2 + 1 ENDIF ENDIF ENDIF ENDIF ENDDO PRINT* PRINT*, 'Numero de pessoas:', K PRINT* PRINT*, 'Primeira maior altura:', Maior1 PRINT*, 'Numero de pessoas com maior altura:', NumP1 PRINT* PRINT*, 'Segunda maior altura:', Maior2 PRINT*, 'Numero de pessoas com segunda maior altura:', NumP2 STOP END PROGRAM L2EXERC18 c Ler o sexo ( 0 : masculino ; 1 : feminino) e a altura de M pessoas. c Imprimir a maior e a menor altura; a media da altura das mulheres; c a menor altura dos homens; o numero total de homens que foram lidos. INTEGER I, M, Sexo, TotH, TotF REAL Altura, Maior, Menor, MdAltF, MenorH, Soma PRINT*, 'Digite numero de pessoas para processar.' READ*, M Maior = 0.0 Menor = 3.0 MenorH = 3.0 Soma = 0 TotH = 0 TotF = 0 DO I = 1, M PRINT* PRINT*, 'Digite altura e sexo (0-Masc e 1-Fem).' READ*, Altura, Sexo PRINT* IF (Altura .GT. Maior) THEN Maior = Altura ELSE IF (Altura .LT. Menor) THEN Menor = Altura ENDIF ENDIF IF (Sexo .EQ. 0) THEN TotH = TotH + 1 IF (Altura .LT. MenorH) THEN MenorH = Altura ENDIF ELSE TotF = TotF + 1 Soma = Soma + Altura ENDIF ENDDO IF (TotF .NE. 0) THEN Media = Soma/TotF ENDIF PRINT* PRINT*, 'Numero de pessoas:', M PRINT* PRINT*, 'Maior altura:', Maior PRINT*, 'Menor altura:', Menor PRINT* PRINT*, 'Total de homens:', TotH PRINT* PRINT*, 'Menor altura entre os homens:', MenorH PRINT* PRINT*, 'Total de mulheres:', TotF PRINT* PRINT*, 'Media das alturas das mulheres:', Media STOP ENDPROGRAM L2EXERC19 c Considere uma pesquisa realizada com pessoas com idade entre 25 e 80 anos de idade, c de uma regiao do pais. Para a pesquisa foram consideradas as seguintes informacoes c para cada pessoa : sexo, idade, nivel de instrucao e se a pessoa tem ou nao emprego. c Escreva um programa para : c Ler o sexo, a idade, o nivel de instrucao e a situacao do emprego de N pessoas. c Para efetuar a leitura dos dados vamos considerar : c Sexo : 0 - masculino 1 - feminino c Idade : inteiro entre 25 e 80 c Nivel de instrucao : 0 - analfabeto 1 - primeiro grau 2 - segundo grau c 3 - superior 4 - pos graduacao c Emprego : 0 - nao 1 - sim c Imprimir as informacoes lidas, e imprimir os seguintes resultados da pesquisa : c a) o numero de pessoas analfabetas do sexo feminino com idade inferior a 50 anos; c b) numero de pessoas com primeiro grau com idade entre 25 e 35 anos e sem emprego; c c) o numero de pessoas do sexo masculino que tem emprego e estao no segundo grau; c d) o numero de pessoas do sexo feminino com idade superior a 40 anos, que tem c curso superior e estao desempregadas; c e) o numero de pessoas do sexo masculino com idade superior a 35 anos, estao c trabalhando e tem pos graduacao; c f) o numero total de pessoas do sexo masculino e total de pessoas do sexo feminino c que foram pesquisadas; c g) o total de pessoas pesquisadas pelo nivel de instrucao. INTEGER I, N, Sexo, Idade, NivIns, Emp, TotA, TotB, TotC, TotD, * TotE, TotFH, TotFM, TotG0, TotG1, TotG2, TotG3, TotG4 DATA TotA, TotB, TotC, TotD, TotE, TotFH, TotFM, TotG0, TotG1, * TotG2, TotG3, TotG4/12*0/ PRINT*, 'Digite numero de pessoas para processar.' READ*, N DO I = 1, N PRINT* PRINT*, 'Digite sexo (0-Masc e 1-Fem).' READ*, Sexo PRINT*, 'Digite idade.' READ*, Idade PRINT*,'Digite escolaridade(0-Ana 1-PG 2-SG 3-Grad 4-PGrad).' READ*, NivEsc PRINT*, 'Digite situacao de emprego (0-Nao e 1-Sim).' READ*, Emp PRINT* c total de pessoas pesquisadas pelo nivel de instrucao(G). IF (NivEsc .EQ. 0) THEN TotG1 = TotG1 + 1 ELSE IF (NivEsc .EQ. 1) THEN TotG2 = TotG2 + 1 ELSE IF (NivEsc .EQ. 2) THEN TotG3 = TotG3 + 1 ELSE IF (NivEsc .EQ. 3) THEN TotG4 = TotG4 + 1 ELSE TotG5 = TotG5 + 1 ENDIF ENDIF ENDIF ENDIF c numero de pessoas com primeiro grau com idade c entre 25 e 35 anos e sem emprego (B) IF ((NivIns .EQ. 1) .AND. ((Idade .GE. 25) .AND. * (Idade .LE. 35)) .AND. (Emp .EQ. 0)) THEN TotB = TotB + 1 ENDIF IF (Sexo .EQ. 0) THEN c pessoas pesquisadas sexo masculino TotFH = TotFH + 1 IF (Emp .EQ. 1) THEN IF (NivEsc .EQ. 2) THEN TotC = TotC + 1 ELSE IF ((NivEsc .EQ. 4) .AND. (Idade .GT.35)) THEN TotE = TotE + 1 ENDIF ENDIF ENDIF ELSE c pessoas pesquisadas sexo femenino TotFM = TotFM + 1 c o numero de pessoas analfabetas do sexo feminino com idade c inferior a 50 anos (A) IF ((NivEsc .EQ. 0) .AND. (Idade .LT. 50)) THEN TotA = TotA + 1 ELSE c numero de pessoas do sexo feminino com idade superior a 40 c anos, que tem curso superior e estao desempregadas (D) IF ((Idade .GT. 40) .AND. (NivIns .EQ. 3) .AND. * (Emp .EQ. 0)) THEN TotD = TotD + 1 ENDIF ENDIF ENDIF ENDDO PRINT* PRINT*, 'Numero de pessoas:', N PRINT* PRINT*, 'Pessoas analfabetas sexo fem idade inf 50 anos:',TotA PRINT* PRINT*, 'Pessoas prim grau idade 25/35 anos sem emprego:', TotB PRINT* PRINT*, 'Pessoas sexo masculino empregado e segundo grau:', TotC PRINT* PRINT*, 'Sexo feminino idade sup 40,cur sup e desemp:', TotD PRINT* PRINT*, 'Sexo masculino idade sup 35 anos, trab e pgrad:', TotE PRINT* PRINT*, 'Total de homens:', TotFH PRINT* PRINT*, 'Total de mulheres:', TotFM PRINT* PRINT*, 'Total de analfabetos:', TotG1 PRINT*, 'Total de prim Grau:', TotG2 PRINT*, 'Total de seg Grau:', TotG3 PRINT*, 'Total de graduados:', TotG4 PRINT*, 'Total de pos graduados:', TotG5 STOP END
Compartilhar