Baixe o app para aproveitar ainda mais
Prévia do material em texto
Iterativos I00000100 - Faça um algoritmo que escreva os números de 1 a 20. algoritmo "I001_I00000100" var i:inteiro inicio i<-1 enquanto i<=20 faca escreva(i) i<-i+1 fimpara fimalgoritmo I00000200 - Faça um algoritmo que escreva todos os números pares entre 1 e 50. algoritmo "I001_I00000200" var i:inteiro inicio i<-2 enquanto i<=50 faca escreva(i) i<-i+2 fimenquanto fimalgoritmo I00000300 - Faça um algoritmo que escreva todos os números entre 1 e 200 que são múltiplos de 11. algoritmo "I001_I00000300" var i:inteiro inicio i<-1 enquanto i<=200 faca se i%11=0 entao escreva(i) fimse i<-i+1 fimenquanto fimalgoritmo I00000400 - Faça um algoritmo que leia 10 números e escreva os que forem pares. Dica: Um número inteiro é par se o resto da sua divisão inteira por 2 é igual a 0. algoritmo "I002_I00000400" var i,a:inteiro inicio i<-1 enquanto i<=10 faca leia(a) se a%2=0 entao escreva(a) fimse i<-i+1 fimenquanto fimalgoritmo I00000500 - Faça um algoritmo que leia números até que seja digitado um número negativo, e escreva todos que forem pares. algoritmo "I001_I00000500" var a:inteiro inicio leia (a) enquanto a>=0 faca se a%2=0 entao escreva(a) fimse leia (a) fimenquanto fimalgoritmo I00000600 - Faça um algoritmo que leia 30 valores e conte quantos estão no intervalo [10,20], escrevendo ao final essa informação. algoritmo "I001_I00000600" var i,a,cont:inteiro inicio cont<-0 i<-1 enquanto i<=30 faca leia(a) se a<=20 e a>=10 entao cont<-cont+1 fimse i<-i+1 fimenquanto escreva(cont) fimalgoritmo I00000700 Faça um algoritmo que leia 30 valores e conte quantos estão em cada um dos intervalos [0,25],(25,50], (50,75], (75..100], escrevendo ao final essa informação. algoritmo "I001_I00000700" var i,a,c1,c2,c3,c4:inteiro inicio c1<-0 c2<-0 c3<-0 c4<-0 i<-1 enquanto i<=30 faca leia(a) se a<=25 e a>=0 entao c1<-c1+1 fimse se a<=50 e a>25 entao c2<-c2+1 fimse se a<=75 e a>50 entao c3<-c3+1 fimse se a<=100 e a>75 entao c4<-c4+1 fimse i<-i+1 fimenquanto escreva(c1,c2,c3,c4) fimalgoritmo I00000750 - Faça um algoritmo que leia um valor N. Escreva a seguir os números de 1 a N. algoritmo var n,i:inteiro inicio leia(n) i<-1 enquanto i<=n faca escreva(i) i<-i+1 fimenquanto fimalgoritmo I00000800 - Faça um algoritmo que leia um valor N. Leia, a seguir, N valores e escreva todos que forem positivos. algoritmo var n,a,i:inteiro inicio leia(n) i<-1 enquanto i<=n faca leia(a) se a>0 entao escreva(a) fimse i<-i+1 fimenquanto fimalgoritmo I00000900 - Faça um algoritmo que leia um valor N, e escreva todos os seus divisores. algoritmo var n,i:inteiro inicio leia(n) i<-1 enquanto i<=n faca se n%i=0 entao escreva(i) fimse i<-i+1 fimenquanto fimalgoritmo I00001000 - Faça um algoritmo que leia um valor N, e conte quantos divisores possui, escrevendo ao final essa informação. algoritmo var n,i,cont:inteiro inicio leia(n) cont<-0 i<-1 enquanto i<=n faca se n%i=0 entao cont<-cont+1 fimse i<-i+1 fimenquanto escreva(cont) fimalgoritmo I00001100 - Faça um algoritmo que leia um valor N, e calcule e escreva a soma dos seus divisores. algoritmo var n,i,soma:inteiro inicio leia(n) soma<-0 i<-1 enquanto i<=n faca se n%i=0 entao soma<-soma+i fimse i<-i+1 fimenquanto escreva(soma) fimalgoritmo I00001150 - Faça um algoritmo que leia um valor N inteiro e maior do que 1, e calcule e escreva o seu maior divisor (excetuando N). algoritmo "I001_I00001150" var i,n:inteiro inicio leia(n) i<-n-1 enquanto n%i<>0 faca i<-i-1 fimenquanto escreva(i) fimalgoritmo I00001155 - Faça um algoritmo que leia um valor N inteiro e maior do que 1, e calcule e escreva o seu menor divisor maior do que 1. algoritmo "I001_I00001155" var i,n:inteiro inicio leia(n) i<-2 enquanto n%i<>0 faca i<-i+1 fimenquanto escreva(i) fimalgoritmo I00001200 - Um número inteiro maior do que 1 é primo se ele possui como divisores somente o 1 e ele mesmo. Faça um algoritmo que leia um número e verifique se é primo escrevendo: 1 - se o número é primo; 0 - se o número não é primo. Dica:Pode-se também verificar se um número é primo encontrando seu primeiro divisor maior que 1. Se o primeiro divisor for o próprio número, ele é primo. algoritmo var n,i,cont:inteiro inicio leia(n) cont<-0 para i de 1 ate n faca se n%i=0 entao cont<-cont+1 fimse fimpara se cont<=2 entao escreva(1) senao escreva(0) fimse fimalgoritmo I00001300 - Dois números n1 e n2 são ditos amigos entre si se a soma dos divisores de n1 (excluindo o próprio n1) é igual a n2, e a soma dos divisores de n2 (excluindo o próprio n2) é igual a n1. Ex: 220 e 284. Faça um algoritmo que leia 2 valores e verifique se são amigos entre si escrevendo: 1 - se são amigos; 0 - se não são amigos. algoritmo var n1,n2,soma1,soma2,i:inteiro inicio leia(n1,n2) soma1<-0 para i de 1 ate n1\2 faca se n1%i=0 entao soma1<-soma1+i fimse fimpara soma2<-0 para i de 1 ate n2\2 faca se n2%i=0 entao soma2<-soma2+i fimse fimpara se soma1=n2 e soma2=n1 entao escreva(1) senao escreva(0) fimse fimalgoritmo I00001400 - Faça um algoritmo que leia 10 números positivos e escreva ao final o maior deles. algoritmo var a,i,maior:inteiro inicio maior<-0 para i de 1 ate 10 faca leia(a) se a>maior entao maior<-a fimse fimpara escreva(maior) fimalgoritmo I00001500 - Faça um algoritmo que leia 10 números, positivos ou negativos, e escreva ao final o maior deles. algoritmo var a,i,maior:inteiro inicio leia(maior) para i de 1 ate 9 faca leia(a) se a>maior entao maior<-a fimse fimpara escreva(maior) fimalgoritmo I00001600 - Faça um algoritmo que leia 10 números e escreva ao final o maior e o menor deles. algoritmo var a,i,maior,menor:inteiro inicio leia(maior) menor<-maior para i de 1 ate 9 faca leia(a) se a>maior entao maior<-a fimse se a<menor entao menor<-a fimse fimpara escreva(maior,menor) fimalgoritmo I00001610 - Faça um algoritmo que leia um valor n (n>=1) correspondente ao número de alunos de uma turma. após, o algoritmo lê as notas das provas dos n alunos dessa turma. As notas deverão ser lidas até que sejam informadas n notas válidas, ou seja, no intervalo [0, 10], descartando as notas fora desse intervalo. As notas somente poderão ser lidas uma única vez. O algoritmo deve informar qual foi a menor nota e o percentual dos alunos que tiraram a menor nota (que não é, necessariamente, 0). Por exemplo, se o valor lido para n foi 20 e as notas foram 6.0 6.5 8.0 9.0 4.5 3.0 9.0 8.5 4.5 3.0 6.0 3.0 8.0 9.0 4.5 10 9.0 8.5 4.5 3.0 o algoritmo escreve 3.0 e 20, já que quatro (20% de 20) alunos tiraram essa nota. algoritmo "I001_I00001610" var n,x,cont1,cont2,porcent,menor:real inicio escreval("Digite um numero") leia(n) menor<-11 cont1 <- 0 cont2 <- 0 enquanto cont1<n faca escreval("Digite a nota") leia(x) se x>=0 E x<=10 entao cont1 <- cont1+1 se x<menor entao menor <- x cont2 <- 1 senao se x=menor entao cont2 <- cont2+1 fimse fimse fimse fimenquanto porcent <- (cont2/n)*100 escreva(menor,",",porcent) fimalgoritmo I00001700 - Faça um algoritmo que leia, para 10 pessoas, seu peso e altura e escreva o peso e a altura da pessoa mais alta. algoritmo var a,p,maior,mpeso:real i:inteiro inicio maior<-0 mpeso<-0 para i de 1 ate 10 faca leia(p,a) se a>maior entao maior<-a mpeso<-p fimse fimpara escreva(mpeso,maior) fimalgoritmo I00001750 - O índice de massa corporal (IMC) de uma pessoa é dada pela relação peso/(altura^2). Faça um algoritmo que leia, para 10 pessoas, seu peso e altura e escreva o IMC, peso e altura da pessoa de maior IMC. algoritmo var i:inteiro p,a,imc,maiorIMC,mp,ma:real inicio maiorIMC<-0 para i de 1 ate 10 faca leia(p,a) imc<-p/(a^2) se imc>maiorIMC entao maiorIMC<-imc mp<-p ma<-a fimse fimpara escreva(maiorIMC," ",mp," ",ma) fimalgoritmo I00001800 - Faça um algoritmo que leia o código e a votação decada um dos candidatos a uma vaga no senado, até que o código digitado seja 0 (não deverá ser lida a votação neste caso). O algoritmo deve escrever os códigos e as votações dos dois senadores eleitos (assuma que não haverão três candidatos com igual votação e que seja a maior votação). algoritmo var cod,vot,CM,VM,CS,VS:inteiro inicio VM<-0 VS<-0 CM<-0 leia(cod) enquanto cod>0 faca leia(vot) se vot>VM entao VS<-VM CS<-CM VM<-vot CM<-cod senao se vot >VS entao CS<-cod VS<-vot fimse fimse leia(cod) fimenquanto escreva(CM,VM,CS,VS) fimalgoritmo I00001900 - Faça um algoritmo que leia 10 números e escreva os que forem primos. algoritmo var n,i,j:inteiro rn:real inicio para j de 1 ate 10 faca leia(n) i<-2 rn<-raizq(n) enquanto n% i<>0 e i<=rn faca i<-i+1 fimenquanto se i>rn entao escreva(n) fimse fimpara fimalgoritmo ou, usando funções... algoritmo var n,j:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n% d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio para j de 1 ate 10 faca leia(n) se primo(n)=1 entao escreva(n) fimse fimpara fimalgoritmo I00001950 - Faça um algoritmo que escreva os 50 primeiros números primos. algoritmo var n,cont:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio cont<-0 n<-2 enquanto cont<50 faca se primo(n)=1 entao escreva(n) cont<-cont+1 fimse n<-n+1 fimenquanto fimalgoritmo I00002000 - Faça um algoritmo que leia 2 números N1 e N2 e escreva a soma dos números primos entre N1 e N2 (incluindo N1 e N2 se algum deles for primo).. algoritmo var n,n1,n2,i,cont,soma:inteiro inicio leia (n1,n2) soma<-0 para n de n1 ate n2 faca cont<-0 para i de 1 ate n faca se n%i=0 entao cont<-cont+1 fimse fimpara se cont<=2 entao soma<-soma+n fimse fimpara escreva(soma) fimalgoritmo algoritmo var n,n1,n2,soma:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio leia (n1,n2) soma<-0 para n de n1 ate n2 faca se primo(n)=1 entao soma<-soma+n fimse fimpara escreva(soma) fimalgoritmo I00002100 - Faça um algoritmo que leia 2 números N1 e N2 e escreva o produto dos números primos entre N1 e N2 (incluindo N1 e N2 se algum deles for primo). algoritmo var n,n1,n2,i,cont,soma:inteiro inicio leia (n1,n2) soma<-1 para n de n1 ate n2 faca cont<-0 para i de 1 ate n faca se n%i=0 entao cont<-cont+1 fimse fimpara se cont<=2 entao soma<-soma*n fimse fimpara escreva(soma) fimalgoritmo algoritmo var n,n1,n2,prod:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio leia (n1,n2) prod<-1 para n de n1 ate n2 faca se primo(n)=1 entao prod<-prod*n fimse fimpara escreva(prod) fimalgoritmo I00002200 - Faça um algoritmo que leia um número N e escreva os N primeiros números primos maiores que 100. algoritmo var n,i,cont,quant:inteiro inicio leia(quant) n<-101 enquanto quant>0 faca cont<-0 para i de 1 ate n faca se n%i=0 entao cont<-cont+1 fimse fimpara se cont<=2 entao escreva(n) quant<-quant-1 fimse n<-n+1 fimenquanto fimalgoritmo algoritmo var n,cont,p:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio leia(N) cont<-0 p<-100 enquanto cont<n faca se primo(p)=1 entao escreva(p) cont<-cont+1 fimse p<-p+1 fimenquanto fimalgoritmo I00002250 - Faça um algoritmo que leia um número inteiro N e escreva o maior número primo menor do que N. algoritmo "I001_I00002250" var N,d:inteiro inicio leia(N) d<-N-1 enquanto d<>N faca N<-N-1 d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto fimenquanto escreva(N) fimalgoritmo algoritmo var n:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio leia(N) N<-N-1 enquanto primo(N)=0 faca N<-N-1 fimenquanto escreva(N) fimalgoritmo I00002260 - Faça um algoritmo que leia um número inteiro N e escreva o menor número primo maior do que N. algoritmo "I001_I00002250" var N,d:inteiro inicio leia(N) d<-N+1 enquanto d<>N faca N<-N+1 d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto fimenquanto escreva(N) fimalgoritmo algoritmo var n:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio leia(N) N<-N+1 enquanto primo(N)=0 faca N<-N+1 fimenquanto escreva(N) fimalgoritmo I00002270 - Um número primo é um número natural maior que 1, que é divisível somente por 1 e por ele mesmo. Faça um algoritmo que leia um número inteiro N e escreva o número mais próximo a ele. Se N for primo, considere que o mais próximo é o próprio N. Se houver dois números à mesma distância, escreva os dois em ordem crescente. algoritmo "I001_I00002270" var N,A,B,i,fim:inteiro inicio leia(N) i<-2 enquanto N%i<>0 faca i<-i+1 fimenquanto se N=i entao escreva(N) senao fim<-0 A<-N-1 B<-N+1 enquanto fim=0 faca se A>1 entao i<-2 enquanto A%i<>0 faca i<-i+1 fimenquanto se i=A entao escreva(A) fim<-1 fimse fimse se B>1 entao i<-2 enquanto B%i<>0 faca i<-i+1 fimenquanto se i=B entao escreva(B) fim<-1 fimse fimse A<-A-1 B<-B+1 fimenquanto fimse fimalgoritmo algoritmo var n,p1,p2:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio leia(N) se primo(N)=1 entao escreva(N) senao p1<-N-1 enquanto primo(p1)=0 faca p1<-p1-1 fimenquanto p2<-N+1 enquanto primo(p2)=0 faca p2<-p2+1 fimenquanto se n-p1=p2-n entao escreva(p1,p2) senao se n-p1<p2-n entao escreva(p1) senao escreva(p2) fimse fimse fimse fimalgoritmo I00002280 - A conjectura de Goldbach diz que todo número par maior que 2 pode ser representado como a soma de dois números primos. Assim, 4=2+2, 6=3+3, 8=3+5... Faça um algoritmo que leia um número N, par, e escreva, em ordem crescente, os dois números primos que o compõem. No caso de haver mais de um par de números (p.ex:20=3+17 e 20=7+13) escreva o par que tiver o menor número primo. algoritmo "I001_I00002280" var d1,d2,achei,i,n:inteiro inicio leia(n) d1<-2 achei<-0 enquanto achei=0 faca i<-2 enquanto d1%i<>0 faca i<-i+1 fimenquanto se d1=i entao d2<-n-d1 i<-2 enquanto d2%i<>0 faca i<-i+1 fimenquanto se d2=i entao escreva(d1,d2) achei<-1 fimse fimse d1<-d1+1 fimenquanto fimalgoritmo algoritmo var n,p1:inteiro funcao primo(n:inteiro):inteiro var d:inteiro inicio d<-2 enquanto n%d<>0 faca d<-d+1 fimenquanto se n=d entao retorne 1 senao retorne 0 fimse fimfuncao inicio leia(N) p1<-2 enquanto primo(p1)=0 ou primo(N-p1)=0 faca p1<-p1+1 fimenquanto escreva(p1,N-p1) fimalgoritmo I00002300 - Um número perfeito é o número que é igual à soma de seus divisores, exceto o próprio número (ex: 6 = 1 + 2 + 3. Faça um algoritmo que leia 10 números e verifique para cada um se é perfeito ou não, escrevendo: 1 - se o número é perfeito; 0 - se o número não é perfeito. algoritmo var n,i,j,soma:inteiro inicio para i de 1 ate 10 faca leia(n) soma<-0 para j de 1 ate n-1 faca se n% j=0 entao soma<-soma+j fimse fimpara se soma=n entao escreva(1) senao escreva(0) fimse fimpara fimalgoritmo I00002350 - Faça um algoritmo que leia, para um funcionários: o valor que ganha por hora e 30 pares de valores (hora de entrada e hora de saída, inteiros, sem minutos)e calcule o quanto ganhou no mês. O funcionário não pode trabalhar mais de 23 horas seguidas e pode iniciar em um dia e terminar no dia seguinte. Para o funcionário deve ser escrito o quanto ganhou no mês. I00002400 - Faça um algoritmo que leia, para um número não determinado de funcionários, seu código (inteiro), o valor que ganha por hora e 30 pares de valores (hora de entrada e hora de saída, inteiros, sem minutos) e calcule o quanto ganhou no mês. O funcionário não pode trabalhar mais de 23 horas seguidas e pode iniciar em um dia e terminar no dia seguinte. Para cada funcionário deve ser escrito seu código e o quanto ganhou no mês. O algoritmo termina ao ser digitado um código igual a -1 (após o que, não deve ser lido mais nenhum dado). algoritmo var cod,he,hs,th,vh,i:inteiro inicio leia(cod) enquanto(cod<> -1) faca leia(vh) th<-0 para i de 1 ate 30 faca leia(he,hs) se he<=hs entao th<-th+hs-he senao th<-th+24-he+hs fimse fimpara escreva(vh*th) leia(cod) fimenquanto fimalgoritmo I00002500 - A série de fibonacci é uma sequência de números que inicia por 0 e 1, e a partir do terceiro valor cada número é dado pela soma dos dois anteriores. Assim, os 10 primeiros termos da série são: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34. Faça um algoritmo que escreva os 20 primeiros termos da série de fibonacci. algoritmo var a,b,s,i:inteiro inicio a<-0 b<-1 escreval(a," ",b) para i de 1 ate 18 faca s<-a+b escreval(s) a<-b b<-s fimpara fimalgoritmo I00002525 - A sequência de Fibonacci é formada pelos números: 0 1 1 2 3 5 8 13 21 34 55 ...; sendo que fibonacci(0)=0; fibonacci(1)=1; fibonacci(2)=1; fibonacci(3)=2; fibonacci(4)=3; fibonacci(10)=55; ... Faça um algoritmo que leia um número (N) e escreva o enésimo número da série de Fibonacci. algoritmo "fib2" var n,a,b:inteiro inicio leia(n) a<-0 b<-1 enquanto N>1 faca a<-a+b b<-a+b n<-n-2 fimenquanto se n=0 entao escreva (a) senao escreva(b) fimse fimalgoritmo I00002550 - A sequência de fibonacci é uma sequência de números que inicia por 0 e 1, e a partir do terceiro valor cada número é dado pela soma dos dois anteriores. Assim, os 10 primeiros termos da série são: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34. Faça um algoritmo que escreva entre os 20 primeiros termos da série de fibonacci apenas os que são primos. algoritmo "I001_I00002550" var a,b,t,i,cont,fim:inteiro inicio a<-1 b<-1 para cont de 3 ate 20 faca t<-a+b a<-b b<-t i<-2 fim<-int(raizq(t)) enquanto t%i<>0 e i<=fim faca i<-i+1 fimenquanto se i>fim entao escreval(t) fimse fimpara fimalgoritmo I00002600 - O MDC (máximo divisor comum) entre dois números n1 e n2 é o maior número que é divisor de n1 e de n2. Faça um algoritmo que leia dois números e escreva seu MDC. algoritmo var a,b,mdc:inteiro inicio leia(a,b) mdc<-a enquanto a%mdc<>0 ou b%mdc<>0 faca mdc<-mdc-1 fimenquanto escreva(mdc) fimalgoritmo I00002700 - O fatorial de um número N (representado por N!) é o produto de todos os números de 1 a N. Assim, 4! = 1 x 2 x 3 x 4 = 24. Faça um algoritmo que leia um número N e escreva seu fatorial. algoritmo var n,fat,i:inteiro inicio leia(n) fat<-1 para i de 1 ate n faca fat<-fat*i fimpara escreva(fat) fimalgoritmo I00002750 - O número de combinações de N diferentes objetos em grupos de P objetos, é dado por N!/(P!(N-P)!). Faça um algoritmo que leia uma quantidade N de objetos e o tamanho P dos grupos a serem formados, e calcule a quantidade de grupos que podem ser formados. algoritmo var n,p,fatn,fatnp,fatp,i:inteiro inicio leia(n,p) fatn<-1 para i de 1 ate n faca fatn<-fatn*i fimpara fatnp<-1 para i de 1 ate n-p faca fatnp<-fatnp*i fimpara fatp<-1 para i de 1 ate p faca fatp<-fatp*i fimpara escreva(fatn\(fatp*fatnp)) fimalgoritmo I00002800 - Faça um algoritmo que leia 10 valores inteiros menores que 20 e, para cada um, calcule e escreva seu fatorial. O algoritmo deve ignorar todos os valores maiores ou iguais a 20. algoritmo var i,j,n:inteiro fat:inteiro inicio para i de 1 ate 10 faca leia(n) enquanto(n>=13) faca leia(n) fimenquanto fat<-1 para j de 1 ate n faca fat<-fat*j fimpara escreval(fat) fimpara fimalgoritmo I00002900 - O MMC (mínimo múltiplo comum) entre dois números n1 e n2 é o menor número que é múltiplo de n1 e de n2. Faça um algoritmo que leia dois números e escreva seu MMC. algoritmo var a,b,mdc:inteiro inicio leia(a,b) mdc<-a enquanto mdc%a<>0 ou mdc%b<>0 faca mdc<-mdc+1 fimenquanto escreva(mdc) fimalgoritmo I00003000 - Faça um algoritmo que leia um número N e efetue sua fatoração, escrevendo os fatores que o compõem. Ex: 28 = 2 x 2 x 7 60 = 2 x 2 x 3 x 5 algoritmo var d,n:inteiro inicio leia(n) d<-2 enquanto n>1 faca se n%d=0 entao escreva(d) n<-n\d senao d<-d+1 fimse fimenquanto fimalgoritmo I00003050 - Faça um algoritmo que leia um número e escreva seus dígitos na ordem contrária em que aparecem no número. Por exemplo, se o numero lido foi 32417, o algoritmo escreve 7,1,4,2,3. I00003100 - Faça um algoritmo que leia 10 números e para cada um escreva a soma dos seus dígitos formantes. algoritmo var i,soma,n:inteiro inicio para i de 1 ate 10 faca leia(n) soma<-0 enquanto n>0 faca soma<-soma+n%10 n<-n\10 fimenquanto escreva(soma) fimpara fimalgoritmo I00003200 - Faça um algoritmo que leia um número N e o escreva com seus dígitos invertidos. algoritmo var soma,n:inteiro inicio leia(n) soma<-0 enquanto n>0 faca soma<-soma*10+n%10 n<-n\10 fimenquanto escreva(soma) fimalgoritmo I00003300 - Faça um algoritmo que leia um número N até (até 9 dígitos) e retira os dígitos impares. algoritmo "I001_I00003300" var n,a,b:inteiro inicio leia(n) a<-0 enquanto n>0 faca a<-a*10+n%10 n<-n\10 fimenquanto n<-a b<-0 enquanto n>0 faca a<-n%10 n<-n\10 se a%2=0 entao b<-b*10+a fimse fimenquanto se b>0 entao escreva(b) fimse fimalgoritmo I00003350 - Faça um algoritmo que leia números até que seja fornecido um número negativo. O algoritmo deve escrever a média aritmética dos 3 últimos números fornecidos (excetuando o negativo indicando fim da sequência). I00003400 - Faça um algoritmo que leia um número N até 100.000.000 e verifique se é palíndromo, ou seja, se se igual quando lido da esquerda para a direita e da direita para a esquerda. Ex: 13731. Escreva 1 se for palíndromo e 0 se não for. algoritmo var soma,n,naux:inteiro inicio leia(n) naux<-n soma<-0 enquanto n>0 faca soma<-soma*10+n%10 n<-n\10 fimenquanto se naux=soma entao escreva(1) senao escreva(0) fimse fimalgoritmo I00003500 - Faça um algoritmo que escreva os primeiros 20 números cuja soma dos dígitos formantes é 10. algoritmo var cont,n,a,s:inteiro inicio cont<-0 n<-1 enquanto cont<20 faca a<-n s<-0 enquanto a>0 faca s<-s+a%10 a<-a\10 fimenquanto se s=10 entao escreva(n) cont<-cont+1 fimse n<-n+1 fimenquanto fimalgoritmo I00003600 - Uma pessoa aplicou um determinado valor em um banco. Sabe-se que o banco pagará 5% ao mês de juros. Fazer um algoritmo que leia o valor aplicado e calcule e escreva a quantidade mínima de meses necessários para que a pessoa obtenha R$1000,00 ou mais de rendimento. Por exemplo, se a pessoa aplicou 10.000 reais, ao final do primeiro mês terá 10.500 reais. algoritmo "I001_I00003600" var valor,valinic,m:real inicio leia(valor) valinic<-valor m<-0 enquanto valor-valinic<1000 faca m<-m+1 valor<-valor * 1.05 fimenquanto escreva(m) fimalgoritmo I00003700 - Faça um algoritmo que leia 20 números inteiros e escreva quantos números são iguais ao menor número lido. Dica: Use um contador, incrementando-o ao encontrar um elemento igual ao menor corrente, e reinicializando-o ao encontrar um elemento menor do que o menor corrente. algoritmo var menor,cont,n,i:inteiro inicio cont<-1 leia(n) menor<-n para i de 1 ate 19 faca leia(n) se n=menor entao cont<-cont+1 senao se n<menor entao menor<-n cont<-1 fimse fimse fimpara escreva(cont) fimalgoritmoI00003800 - Data juliana é o número de dias transcorridos no ano (ex:236/1995). A faixa é de 1 a 365 (366 se o ano for bissexto). Escreva um algoritmo que leia uma data juliana (dia e ano) e a converta para o formato DD/MM/AAAA escrevendo a data. Considere que ano bissexto é aquele divisível por 4. algoritmo var a,m,d,cont,i:inteiro inicio leia(cont,a) d<-1 m<-1 para i de 1 ate cont-1 faca se d=31 ou (d=30 e (m=4 ou m=6 ou m=9 ou m=11)) ou (d=29 e m=2) ou (d=28 e m=2 e a%4<>0) entao d<-1 m<-m+1 senao d<-d+1 fimse fimpara escreva(d,m,a) fimalgoritmo I00003900 - Faça um algoritmo que leia duas datas, cada uma formada por dia, mês e ano, e escreva o número de dias entre as duas, incluindo a data inicial e a data final. Considere que ano bissexto é aquele divisível por 4. algoritmo var a,m,d,d2,m2,a2,cont:inteiro inicio leia(d,m,a,d2,m2,a2) cont<-1 enquanto d<>d2 ou m<>m2 ou a<>a2 faca se d=31 ou (d=30 e (m=4 ou m=6 ou m=9 ou m=11)) ou (d=29 e m=2) ou (d=28 e m=2 e a%4<>0) entao d<-1 m<-m+1 se m=13 entao m<-1 a<-a+1 fimse senao d<-d+1 fimse cont<-cont+1 fimenquanto escreva(cont) fimalgoritmo I00003950 - Faça um algoritmo que leia duas datas, cada uma formada por dia, mês e ano, e escreva todas as datas entre as duas, incluindo a data inicial e a data final. Considere que ano bissexto é aquele divisível por 4. Considere também que a data inicial é menor ou igual à data final. algoritmo "I001_I00003950" var d,m,a,d1,m1,a1:inteiro inicio leia(d,m,a,d1,m1,a1) escreva(d,",",m,",",a) enquanto d<>d1 ou m<>m1 ou a<>a1 faca se d=31 ou (d=30 e (m=4 ou m=6 ou m=9 ou m=11)) ou (d=29 e m=2) ou (d=28 e m=2 e a%4<>0) entao d<-1 m<-m+1 se m=13 entao m<-1 a<-a+1 fimse senao d<-d+1 fimse escreva(",",d,",",m,",",a) fimenquanto fimalgoritmo I00003960 - Faça um algoritmo que leia 4 valores d,m,a,ds, onde d,m,a representam uma data (dia,mês,ano) e ds representa um dia da semana (1-domingo, 2-segunda, 3-terça, 4-quarta, 5-quinta, 6-sexta, 7-sábado), e escreva as datas das próximas 3 sextas-feiras 13, a partir da data digitada, incluindo a própria data, se for o caso. Considere que ano bissexto é o ano divisível por 4. algoritmo "I001_I00003960" var d,m,a,ds,cont:inteiro inicio leia(d,m,a,ds) cont<-0 enquanto cont<3 faca se d=13 e ds=6 entao cont<-cont+1 escreval(d,"/",m,"/",a) fimse se d=31 ou (d=30 e (m=4 ou m=6 ou m=9 ou m=11)) ou (d=29 e m=2) ou (d=28 e m=2 e a%4<>0) entao d<-1 m<-m+1 se m=13 entao m<-1 a<-a+1 fimse senao d<-d+1 fimse se ds=7 entao ds<-1 senao ds<-ds+1 fimse fimenquanto fimalgoritmo I00003970 - Faça um algoritmo que leia o mês e o ano de uma sexta-feira 13 e escreva o mês e ano das próximas 5 ocorrências de sexta-feira 13. Considere que ano bissexto é o ano divisível por 4. algoritmo var d,m,a,cont:inteiro inicio leia(m,a) d<-13 cont<-0 enquanto cont<5 faca d<-d+7 se d>28 e m=2 e a%4<>0 entao d<-d-28 m<-m+1 senao se d>29 e m=2 entao d<-d-29 m<-m+1 senao se d>30 e (m=4 ou m=6 ou m=9 ou m=11) entao d<-d-30 m<-m+1 senao se d>31 entao d<-d-31 se m=12 entao m<-1 a<-a+1 senao m<-m+1 fimse fimse fimse fimse fimse se d=13 entao escreval(m," ",a) cont<-cont+1 fimse fimenquanto fimalgoritmo I00004000 - Faça um algoritmo que calcule e escreva a soma dos 100 primeiros termos da sequência a seguir: 1+3+5+7+9.... algoritmo var termo,soma,i:inteiro inicio soma<-0 termo<-1 para i de 1 ate 100 faca soma<-soma+termo termo<-termo+2 fimpara escreva(soma) fimalgoritmo I00004100 (não está no portal porque o resultado é real) Faça um algoritmo que calcule e escreva a soma dos 100 primeiros termos da sequência a seguir: 1/1 + 1/3 + 1/5 + 1/7 + 1/9 +. I00004200 (não está no portal porque o resultado é real) Faça um algoritmo que leia um valor X e calcule e escreva a soma dos 100 primeiros termos da sequência a seguir: X/1 + X/3 + X/5 + X/7 + X/9 +... I00004300 (não está no portal porque o resultado é real) Faça um algoritmo que leia um valor X e calcule e escreva a soma dos 100 primeiros termos da sequência a seguir: X/1 - X/3 + X/5 - X/7 + X/9 -... I00004400 (não está no portal porque o resultado é real) Faça um algoritmo que leia um valor N e escreva a soma dos N primeiros termos da série a seguir: 1/2 + 1/3 + 1/5 + 1/7 + 1/11 + 1/13 + 1/17... ou seja, a série onde os denominadores são os números primos I00004500 - Um número piramidal é um número que é igual à soma de 3 números primos consecutivos (ex: 15 = 3 + 5 + 7). Faça um algoritmo que leia um valor N e escreva os 10 primeiros números piramidais maiores ou iguais a N. algoritmo "I001_I00004500" var min,p2,p3,n,pir,cont,cd,i:inteiro inicio leia(min) p2<-3 p3<-5 n<-7 cont<-0 enquanto cont<10 faca cd<-0 para i de 1 ate n faca se n%i=0 entao cd<-cd+1 fimse fimpara se cd<=2 entao pir<-p2+p3+n p2<-p3 p3<-n se pir >= min entao escreval(pir) cont<-cont+1 fimse fimse n<-n+1 fimenquanto fimalgoritmo I00004600 - Faça um algoritmo que leia 30 números. O algoritmo deve escrever ao final a média dos números pares digitados (soma dos pares dividido pela quantidade de pares); quantos números são primos e o produto (multiplicação) de todos os números lidos que são múltiplos de 5. algoritmo var qpar,qprim,somapar,i,n,cd,prod,j:inteiro inicio qpar<-0 qprim<-0 somapar<-0 prod<-1 para i de 1 ate 20 faca leia (n) se n%2=0 entao somapar<-somapar+n qpar<-qpar+1 fimse cd<-0 para j de 1 ate n faca se n%j=0 entao cd<-cd+1 fimse fimpara se cd<=2 entao qprim<-qprim+1 fimse se n%5=0 entao prod<-prod*n fimse fimpara escreva(somapar/qpar," ",qprim," ",prod) fimalgoritmo I00004700 - Faça um algoritmo que leia 20 números e verifique qual a maior sequência estritamente crescente (isso é, cada número é maior que o anterior) dentre os números digitados, escrevendo ao final o primeiro e último valor da sequência. algoritmo var n,tm,im,ia,fm,fa,ta,b,j:inteiro inicio leia (n) tm<-1 ta<-1 im<-n fm<-n ia<-n fa<-n para j de 1 ate 19 faca leia(b) se b>n entao fa<-b ta<-ta+1 senao se ta>tm entao tm<-ta im<-ia fm<-fa fimse ta<-1 ia<-b fa<-b fimse n<-b fimpara se ta>tm entao tm<-ta im<-ia fm<-fa fimse escreva(im," ",fm) fimalgoritmo I00004800 - Faça um algoritmo que leia uma sequência de 20 números e escreva: 0 - Se todos os números são iguais; 1 - Se a sequência é não-decrescente (cada número é maior OU IGUAL ao anterior); 2 - se a sequência é estritamente crescente (cada número é MAIOR que o anterior); 3 - Se a sequência é não-crescente (cada número é menor OU IGUAL ao anterior); 4 - Se a sequência é estritamente decrescente (cada número é MENOR que o anterior); 5 - A sequência é desordenada (há partes crescentes e partes decrescentes) algoritmo var c,d,i,b,a,j:inteiro inicio c<-0 d<-0 i<-0 leia(a) para j de 1 ate 9 faca leia(b) se b=a entao i<-1 fimse se a<b entao c<-1 fimse se a>b entao d<-1 fimse a<-b fimpara se c=0 e d=0 entao escreva(0) fimse se i=1 e c=1 e d=0 entao escreva(1) fimse se i=0 e c=1 e d=0 entao escreva(2) fimse se i=1 e c=0 e d=1 entao escreva(3) fimse se i=0 e c=0 e d=1 entao escreva(4) fimse se c=1 e d=1 entao escreva(5) fimse fimalgoritmo I00004850 - Faça um algoritmo que leia 15 números e identifique a maior sequência de números pares dentre os números lidos, escrevendo ao final o comprimento da sequência identificada, bem como o primeiro e o último valor da sequência. No caso de mais de uma sequência do mesmo comprimento, o algoritmo deve considerar a primeira delas. algoritmo var CMS,PMS,UMS,CSA,PSA,USA,i,N:inteiro inicio CMS<-0 CSA<-0 PMS<-0 UMS<-0 para i de 1 ate 15 faca Leia(N) se N%2=0 entao CSA<-CSA+1 USA<-N se PSA=0 entao PSA<-N fimse se CSA>CMS entao CMS<-CSA PMS<-PSA UMS<-USA fimse senao CSA<-0 PSA<-0 USA<-0 fimse fimpara escreva(CMS,PMS,UMS) fimalgoritmo I00004900 - Faça um algoritmo que leia a média e a quantidade de faltas para cada alunode um grupo de 20 alunos, e escreva ao final o percentual de alunos aprovados. Os alunos serão considerados reprovados se não atingirem média 6.0. Também serão reprovados os alunos que tiverem mais de 20 faltas. Os alunos com uma quantidade de faltas entre 10 e 20 serão aprovados se obtiverem uma média mínima de 7.5. algoritmo var i,f:inteiro cont,m:real inicio cont<-0 para i de 1 ate 10 faca leia(m,f) se m<6 ou f>20 ou (f>=10 e m<7.5) entao cont<-cont+1 fimse fimpara escreva(100-cont*10) fimalgoritmo I00005000 - Faça um algoritmo que leia um número inteiro qualquer e escreva os dígito desse número em ordem crescente do valor de cada dígito. algoritmo var n,dig,d,a:inteiro inicio leia(n) para dig de 0 ate 9 faca a<-n enquanto a>0 faca d<-a%10 se d=dig entao escreva(d) fimse a<-a\10 fimenquanto fimpara fimalgoritmo I00005100 - Faça um algoritmo que leia um número inteiro qualquer e verifique se possui algum dígito repetido escrevendo ao final: 0 - se ele não contem nenhum dígito repetido; 1 - se ele contem algum dígito repetido. algoritmo var rep,n,dig,d,cont,a:inteiro inicio rep<-0 leia(n) para dig de 0 ate 9 faca a<-n cont<-0 enquanto a>0 faca d<-a%10 se d=dig entao cont<-cont+1 fimse a<-a\10 fimenquanto se cont>1 entao rep<-1 fimse fimpara escreva(rep) fimalgoritmo I00005120 - Faça um algoritmo que leia um número inteiro e escreva quantas vezes ocorre o dígito 2. algoritmo var N,C:inteiro inicio leia(N) c<-0 enquanto N>0 faca se N%10=2 entao c<-c+1 fimse N<-N\10 fimenquanto escreva(c) fimalgoritmo I00005150 - Faça um algoritmo que leia um número inteiro (máximo 5 casas - não maior que 99999) e mostre quantos dígitos contem de cada número de 0 a 9 algoritmo var N,M,dig,C:inteiro inicio leia(M) para dig de 0 ate 9 faca c<-0 N<-M enquanto N>0 faca se N%10=dig entao c<-c+1 fimse N<-N\10 fimenquanto escreva(dig,c) fimpara fimalgoritmo I00005160 - Faça um algoritmo que leia um número inteiro (máximo 5 casas - não maior que 99999). Mostre o número que mais se repete. Em caso de empate, mostre o menor deles. algoritmo "I001_I00005160" var contmax,digmax,dig,naux,n,cont:inteiro inicio leia(naux) contmax<-0 digmax<-0 para dig de 0 ate 9 faca n<-naux cont<-0 enquanto n>0 faca se n%10=dig entao cont<-cont+1 fimse n<-n\10 fimenquanto se cont>contmax entao contmax<-cont digmax<-dig fimse fimpara escreva(digmax) fimalgoritmo I00005170 - Um número inteiro é dito ascendente se cada um dos seus algaristmos é maior do que o algarismo imediatamente à sua esquerda. Por exemplo, o número 3589. Faça um algoritmo que leia um número inteiro e verifique se ele é ou não ascendente escrevendo: 1 - se ele é ascendente; 0 - se ele não é ascendente. algoritmo "I001_I00005170" var dec,n,d,ant:inteiro inicio dec<-1 leia(n) ant<-n%10 n<-n\10 enquanto n>0 faca d<-n%10 se d>=ant entao dec<-0 fimse n<-n\10 ant<-d fimenquanto escreva(dec) fimalgoritmo I00005200 - Faça um algoritmo que leia o dia e mês de uma data, e o dia da semana (1 - domingo, 2 - segunda... 7 - sábado) e escreva o dia da semana correspondente ao dia primeiro do mês digitado. algoritmo var d,ds:inteiro inicio leia(d,ds) d<-(d-1)%7+1 ds<-ds-(d-1) se ds<1 entao ds<-ds+7 fimse escreva(ds) fimalgoritmo I00005300 - Faça um algoritmo que leia um número de 8 dígitos e calcule a soma ponderada dos seus dígitos, com peso 1 para o dígito menos significativo, peso 2 para o segundo dígito, peso 3 para o terceiro e assim por diante. Escreva a soma calculada. I00005400 - Faça um algoritmo que leia 20 números e escreva a maior sequência de valores iguais entre os números digitados. I00005450 - Faça um algoritmo que leia um número inteiro positivo N não maior que 1000000000000000000 (1E18), calcule e escreva o maior inteiro menor ou igual a sua raiz quadrada, ou seja, calcule e escreva a parte inteira da raiz quadrada no número informado. I00005500 Georg Cantor demonstrou que os números racionais são enumeráveis pela sequência: 1 1 2 1 2 3 1 2 3 4 1 2 ---,---,---,---,---,---,---,---,---,---,---,---, 1 2 1 3 2 1 4 3 2 1 5 4 Fazer um algoritmo que leia N (no intervalo de 1 até 1000000) e escreva o enésimo número dessa sequência (escreva o numerador e o denominador). I00005501 Georg Cantor demonstrou que os números racionais são enumeráveis pela sequência: 1 1 2 1 2 3 1 2 3 4 1 2 ---,---,---,---,---,---,---,---,---,---,---,---, 1 2 1 3 2 1 4 3 2 1 5 4 Fazer um algoritmo que leia N (no intervalo de 1 até 1000000000000000000 = 1E18) e escreva o enésimo número dessa sequência (escreva o numerador e o denominador). algoritmo var N,soma,num,den,r1,X,ult,pen,atu:inteiro inicio leia(N) X<-1+8*N ult<-1 atu<-ult pen<-0 enquanto atu<>pen faca pen<-ult ult<- atu atu <- (ult + X \ ult) \2 fimenquanto se ult<atu entao atu<-ult fimse r1<-(-1+atu)\2 soma<-(1+r1)*r1\2 se N>soma entao num<-N-soma den<-r1-num+2 senao num<-r1 den<-1 fimse escreval(num," ",den) fimalgoritmo I00005600 - O CPF é formado por onze dígitos (999999999-99), dos quais os dois últimos são verificadores (controle), ou seja, a partir dos nove primeiros dígitos pode-se determinar os últimos dois. Considerando o CPF no formato abcdefghi-jk, onde cada letra representa um dígito, pode-se: - calcular o primeiro dígito verificador (j), da seguinte forma: - somar: 10a + 9b + 8c + 7d + 6e + 5f + 4g + 3h + 2i - encontrar o resto da divisão dessa soma por 11. - se o resto for igual a zero ou um, o dígito é zero, senão o dígito é onze menos esse resto. - calcular o segundo dígito verificador (k): - somar: 11a + 10b + 9c + 8d + 7e + 6f + 5g + 4h + 3i + 2j - encontrar o resto da divisão dessa soma por 11. - se o resto for igual a zero ou um, o dígito é zero, senão o dígito é onze menos esse resto. Fazer um algoritmo que leia o CPF (somente primeiros nove dígitos) e escreva separadamente os verificadores (dois últimos). algoritmo "I001_I00005600" var d1,d2,cpf,r,soma,soma2,p:inteiro inicio leia(cpf) soma<-0 soma2<-0 para p de 2 ate 10 faca soma<-soma+cpf%10*p soma2<-soma2+cpf%10*(p+1) cpf<-cpf\10 fimpara r<-soma%11 se r=0 ou r=1 entao d1<-0 senao d1<-11-r fimse soma2<-soma2+2*d1 r<-soma2%11 se r=0 ou r=1 entao d2<-0 senao d2<-11-r fimse escreva(d1,d2) fimalgoritmo I00005700 - Foram entrevistados 500 alunos de uma universidade. Para cada aluno entrevistado foi registrado o código do curso que ele frequenta (1: engenharia; 2: computação; 3: administração) e sua idade. Faça um algoritmo que processe tais dados fornecendo: (a) número de alunos por curso; (b) número de alunos com idade entre [20 25] anos por curso; e (c) código do curso com a menor média de idade. Dica:são necessários vários contadores. algoritmo "I001_I00005700" var cod,idade,i,c1,c2,c3,ci1,ci2,ci3,s1,s2,s3:inteiro m1,m2,m3:real inicio c1<-0 c2<-0 c3<-0 ci1<-0 ci2<-0 ci3<-0 s1<-0 s2<-0 s3<-0 para i de 1 ate 500 faca leia(idade,cod) se cod=1 entao c1<-c1+1 se idade>=20 e idade<=25 entao ci1<-ci1+1 fimse s1<-s1+idade senao se cod=2 entao c2<-c2+1 se idade>=20 e idade<=25 entao ci2<-ci2+1 fimse s2<-s2+idade senao c3<-c3+1 se idade>=20 e idade<=25 entao ci3<-ci3+1 fimse s3<-s3+idade fimse fimse fimpara escreva(c1," ",c2," ",c3," ",ci1," ",ci2," ",ci3," ") se c1=0 entao m1<-0 senao m1<-s1/c1 fimse se c2=0 entao m2<-0 senao m2<-s2/c2 fimse se c3=0 entao m3<-0 senao m3<-s3/c3 fimse se m1<=m2 e m1<=m3 entao escreva(1) senao se m2<=m3 entao escreva(2) senao escreva(3) fimse fimse fimalgoritmo I00005800 - O quociente da operação de divisão pode ser obtido subtraindo-se o divisor do dividendo. Da diferença, subtraímos novamente o divisor e assim sucessivamente até que a diferença seja menor do que o divisor. A quantidade de subtrações é o quociente. Assim, por exemplo; -21 /4 = 21 - 4 = 17 (1) 17 - 4 = 13 (2) 13 - 4 = 9 (3) 9 - 4 = 5 (4) 5 - 4 = 1 (5) Para o exemplo acima,o número de subtrações é 5. Logo, o quociente é -5 (divisor e dividendo têm sinais diferentes). Faça um algoritmo que leia o dividendo (0, positivo ou negativo) e o divisor (positivo ou negativo) e escreva o quociente usando o algoritmo acima. não deve ser usado o operador de divisão. Dica: Registre, de alguma forma, os sinais dos operandos e transforme-os para positivo. algoritmo "I001_I00005800" var n,i,q,k:real inicio leia (n,i) se (n>0 e i>0) ou (n<0 e i<0) entao k <- 1 senao k <- -1 fimse n <- raizq(n^2) i <- raizq(i^2) q <- 0 enquanto n>=i faca n <- n-i q <- q+1 fimenquanto q <- q*k escreva (q) fimalgoritmo I00005810 - A operação de multiplicação, quando o multiplicador é um número inteiro, nada mais é do que uma sucessão de somas. Assim, por exemplo, 4X5= 5+5+5+5= 20. Escreva um algoritmo que leia o multiplicando e o multiplicador e, através de uma sucessão de somas, calcule e escreva o produto. O multiplicador é, necessariamente, um número inteiro. porém, multiplicador e multiplicando podem ser 0 ou negativos. 17 - 4 = 13 (2) 13 - 4 = 9 (3) 9 - 4 = 5 (4) 5 - 4 = 1 (5) Para o exemplo acima, o número de subtrações é 5. Logo, o quociente é -5 (divisor e dividendo têm sinais diferentes). Faça um algoritmo que leia o dividendo (0, positivo ou negativo) e o divisor (positivo ou negativo) e escreva o quociente usando o algoritmo acima. não deve ser usado o operador de divisão. Dica: Registre, de alguma forma, os sinais dos operandos e transforme-os para positivo. I00005900 - Um número N é dito um Meridiano Perfeito se existe um número M para o qual a soma dos números de 1 a N-1 é igual à soma dos números de N+1 a M. Assim, 6 é um Meridiano Perfeito porque 1+2+3+4+5=7+8. Faça um algoritmo que leia um número e verifique se é um meridiano perfeito, escrevendo 1, se o número é um meridiano perfeito, e 0, se não for. algoritmo var N,soma1,soma2,M:inteiro inicio leia(N) soma1<-0 para M de 1 ate N-1 faca soma1<-soma1+M fimpara soma2<-0 M<-N enquanto soma2<soma1 faca M<-M+1 soma2<-soma2+M fimenquanto se soma2=soma1 entao escreva(1) senao escreva(0) fimse fimalgoritmo I00006000 - Um número N é dito um Meridiano Perfeito se existe um número M para o qual a soma dos números de 1 a N-1 é igual à soma dos números de N+1 a M. Assim, 6 é um Meridiano Perfeito porque 1+2+3+4+5=7+8. Faça um algoritmo que leia um valor N, e escreva os N primeiros Meridianos Perfeitos maiores que 1. algoritmo var qtde,soma1,soma2,n,j:inteiro inicio leia(qtde) n<-6 soma1<-15 soma2<-15 j<-9 enquanto qtde<>0 faca enquanto soma2<soma1 faca soma2<-soma2+j j<-j+1 fimenquanto se soma2=soma1 entao escreval(n) qtde<-qtde -1 fimse n<-n+1 soma1<-soma1+(n-1) soma2<-soma2-n fimenquanto fimalgoritmo I00006100 - Um número é dito regular, ou número de hamming (ou "5-smooth number" ou "ugly number") se tem como fatores primos apenas 2, 3 e 5, ou seja, é divisível somente por múltiplos de 2, 3 ou 5. Assim, os primeiros números regulares são 1 (é regular por definição, 2^0 * 3^0 * 5^0), 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27,30,32.... Faça um algoritmo que leia um número N, menor ou igual a 100, e escreva os N primeiros números regulares. algoritmo var N,N1,Quant,i:inteiro inicio leia(Quant) escreva(1) i<-1 N<-2 enquanto i<Quant faca N1<-N enquanto N1%2=0 faca N1<-N1\2 fimenquanto enquanto N1%3=0 faca N1<-N1\3 fimenquanto enquanto N1%5=0 faca N1<-N1\5 fimenquanto se N1=1 entao escreval(N) i<-i+1 fimse N<-N+1 fimenquanto fimalgoritmo I00006200 - Faça um algoritmo que para 10 cartas de baralho leia o seu valor (entre 1 e 13) e naipe (1 - ouros, 2 - copas, 3 - paus, 4 - espadas) em sequência, e escreva: 1 - se as cartas contem uma canastra; 0 - se não contem. Considere como canastra apenas uma sequência crescente de 7 cartas do mesmo naipe de numeração contínua (cuja diferença entre duas cartas seja igual a 1). Dica:Considere que podem ocorrer cartas de mesmo número e naipe (uso de mais de um baralho). Nesse caso a carta de mesmo número e naipe não é contada, mas não quebra a sequência. algoritmo var tem,vant,nant,seq,n,v,i:inteiro inicio tem<-0 leia(vant,nant) seq<-1 para i de 1 ate 9 faca leia(v,n) se n=nant e v=vant+1 entao seq<-seq+1 se seq=7 entao tem<-1 fimse senao se n<>nant ou v<>vant entao seq<-1 fimse fimse nant<-n vant<-v fimpara escreva(tem) fimalgoritmo I00006201 - Faça um algoritmo que leia em sequencia "decrescente": O número de uma carta (de 1 até 13) e seu naipe (de 1 até 4); Escreva a maior sequência decrescente formada a partir da primeira carta, omitindo cartas repetidas. Caso a sequencia seja quebrada em dado ponto, coloque um "0", omitindo todos os demais dados que vierem. Dica:Considere que todas as entradas serão sequenciadas, não havendo necessidade de qualquer reorganização ou armazenamento de dados. algoritmo "I001_I00006201" var v,n,vant,nant,seq,fim,i:inteiro inicio leia(vant,nant) escreval(vant," ",nant) seq<-1 fim<-0 para i de 1 ate 9 faca leia(v,n) se fim=0 entao se n=nant e v=vant-1 entao escreval(v," ",n) seq<-seq+1 se seq=7 entao fim<-1 fimse senao se n<>nant ou v<>vant entao escreval(0) fim<-1 fimse fimse fimse nant<-n vant<-v fimpara fimalgoritmo I00006300 - Faça um algoritmo que leia inicialmente duas "cartas" e em seguida, leia a opção de jogo: (1) dar mais uma carta, (0) encerrar jogo. O jogo também acaba, caso a soma das cartas na mão do jogador atinja ou ultrapasse "21". Ao fim do jogo, diga a quantia de cartas que o jogador recebeu (incluindo as duas cartas iniciais) e qual é a soma das cartas que ele recebeu em mãos caso esta não ultrapasse 21, pois neste caso, deve-se devolver "0" como resposta. Dica: Neste caso, nada impede o jogador de encerra o jogo com as duas cartas iniciais, ou de perder com elas; algoritmo "I001_I00006301" var a,b,soma,opcao,cont:inteiro inicio leia(a,b) a<-(a-1)%13+1 b<-(b-1)%13+1 se a>10 entao a<-10 fimse se b>10 entao b<-10 fimse se a=1 e b>=10 ou b=1 e a>=10 entao escreva(21) senao soma<-a+b leia(opcao) cont<-2 enquanto opcao=1 e soma<21 faca leia(a) a<-(a-1)%13+1 se a>10 entao a<-10 fimse soma<-soma+a cont<-cont+1 se soma<21 entao leia(opcao) fimse fimenquanto escreva(cont) se soma<=21 entao escreva(soma) senao escreva(0) fimse fimse fimalgoritmo I00006301 - Continuação do exercício <I6300>. Considere que agora, há um total de 52 cartas (Baralho inteiro) e as cartas valete, rainha e rei, valem uma pontuação igual a 10; E que caso inicialmente o jogador receba um "ás" e outra carta de valor igual a 10, ele vence o jogo instantaneamente, e neste caso, deve-se devolver o valor "21" como resposta. Nos demais casos, devolva o número de cartas que ele recebeu, e a soma delas, caso não ultrapasse 21, pois neste caso deve-se devolver "0" como resposta. Dica:Resto de uma divisão; I00006302 - Continuação do exercício <I6301>. O motivo pelo qual o jogador recebe vitoria automática no caso de receber inicialmente "um As e uma carta de valor 10", se deve ao fato de que o "As" pode assumir dois valores "1" e "11", de acordo com a situação; Logo um As e outra carta de valor 10, equivalem a soma "11+10=21", entretanto, se o jogador possuísse em mãos uma soma desfavorável: Um ás, um nove e um dez. O ás assume seu menor valor "1+9+10", pois "11+9+10" geraria derrota. A partir destes dados, construa um algoritmo que integre o jogo de blackjack, averiguando esta nova informação. I00006303 - Continuação do exercício <I6302>. O jogador, nunca joga "sozinho" como talvez você possa ter imaginado, afinal, ele poderia parar com o menor número de cartas e sempre vencer! Por isto, ele tem neste caso, como concorrente, a "casa", porem, esta não joga para "vencer" o jogo, e sim, para simplesmente impedir o jogador de vencer. Funciona da seguinte forma: O jogador faz todas as suas jogadas, até parar, se ele não tiver passado de 21 ou ganho automaticamente (tirando21 com as duas primeiras cartas), passa para a "casa", que diferente do jogador, só precisa ter uma quantia "maior" ou "igual" de pontos na mão, pois em caso de "empate" nenhum dos dois ganha. Ao fim, diga, se o jogador venceu(1), se a "casa" venceu(2) ou se houve empate(3). Considere que serão dados inicialmente, o numero de pontos que o jogador fez (podendo este ser maior que 21. Neste caso, dá a resposta de vitoria para a "casa"), em seguida, virão os dados com os quais a mesa joga. Considere também que as cartas não passam do valor 13. I00006400 - Baseando-se na sequência de fibonacci (0,1,1,2,3...), verifique se uma sequência de cinco números, faz parte da sequência, devolvendo como resposta "0" se faz parte, ou "1" se não faz parte. Dica:Considere que números "repetidos" fazem parte da sequência proposta, ou seja, devem ser analisados individualmente como os demais números fornecidos. algoritmo "I001_I00006400" var a,b,c,d,f,tn,t1,t2,t3,t4,t5:inteiro inicio leia(a,b,c,d,f) t1<-0 t2<-1 t3<-1 t4<-2 t5<-3 enquanto d>t4 faca tn<-t4+t5 t1<-t2 t2<-t3 t3<-t4 t4<-t5 t5<-tn fimenquanto se a=t1 e b=t2 e c=t3 e d=t4 e f=t5 entao escreva(0) senao escreva(1) fimse fimalgoritmo I00006500 - Leia um termo n que define o tamanho máximo dos lados de um triangulo retângulo podem assumir, sendo que os lados começam com tamanho 3, 4 e 5 (a,b,c). Em sequencia escreva todos os triângulos retângulos em que o valor máximo do lado é n e os três lados são inteiros. Cada triangulo deve ser escrito uma única vez em ordem crescente dos lados. Dica:O triângulo retângulo é dado como válido pela formula (a^2 + b^2 = c^2) algoritmo "I001_I00006500" var n,a,b:inteiro hip:real inicio leia(N) para a de 1 ate N faca para b de a+1 ate N faca hip<-raizq(a*a+b*b) se hip=int(hip) e hip<=N entao escreval(a," ",b," ",int(hip)) fimse fimpara fimpara fimalgoritmo I00006600 - Fazer um algoritmo que leia o sexo (1=masculino, 2=feminino), a idade e o salário dos 10 funcionários de uma empresa, calcule e escreva (nessa ordem): a média dos salários dos funcionários menores que 30 anos, dos que tem de 30 a 45 anos e dos maiores que 45 anos, escreva também 1, se o menor salário é de um homem ou 2, se for de uma mulher. Todos os valores devem ser do tipo inteiro, inclusive as médias, portanto utilizar o operador de divisão inteira para efetuar o cálculo da média. Escrever média zero quando não houver nenhum funcionário no respectivo intervalo de idade. algoritmo var salario30,salario3045,salario45,conta30,conta3045,conta45,idade,salario,sexo,i,maiorsalario,sexomaior:inteiro inicio salario30<-0 conta30<-0 salario3045<-0 conta3045<-0 salario45<-0 conta45<-0 para i de 1 ate 10 faca leia(sexo,idade,salario) se i=1 entao maiorsalario<- salario sexomaior<-sexo fimse se idade<30 entao salario30<-salario30+salario conta30<-conta30+1 senao se idade>=30 e idade<=45 entao salario3045<-salario3045+salario conta3045<-conta3045+1 senao salario45<-salario45+salario conta45<-conta45+1 fimse fimse se salario<maiorsalario entao maiorsalario<-salario sexomaior<-sexo fimse fimpara se conta30>0 entao escreva(salario30\conta30) senao escreva(0) fimse se conta3045>0 entao escreva(salario3045\conta3045) senao escreva(0) fimse se conta45>0 entao escreva(salario45\conta45) senao escreva(0) fimse escreva(sexomaior) fimalgoritmos I00006700 - Fazer um algoritmo que leia 100 números inteiros e escreva os últimos 2 números primos informados. Escreva primeiramente o penúltimo depois o último. Caso não seja informado nenhum número primo, escreva 0; caso seja informado apenas um primo, escreva apenas esse. algoritmo "I001_I00006700" var p1,p2,i,j,n:inteiro inicio p1<-0 p2<-0 para i de 1 ate 100 faca leia(N) se n>1 entao j<-2 enquanto n%j<>0 faca j<-j+1 fimenquanto se n=j entao p1<-p2 p2<-n fimse fimse fimpara se p1<>0 entao escreva(p1) fimse escreva(p2) fimalgoritmo I00006800 - Fazer um algoritmo que leia números inteiros até que seja informado 0, descartando os números negativos. Escrever o menor número com a maior quantidade de dígitos. algoritmo "I001_I00006800 var n,maiordigito,n1,cont,valor:inteiro inicio maiordigito<-0 valor<-0 leia(n) enquanto n<>0 faca se n>0 entao n1<-n cont<-0 enquanto n1<>0 faca n1<-n1\10 cont<-cont+1 fimenquanto se cont>maiordigito entao maiordigito<-cont valor<-n senao se cont=maiordigito e n<valor entao valor<-n fimse fimse fimse leia(n) fimenquanto escreva(valor) fimalgoritmo Vetores V00000100 - Escrever um algoritmo que lê um vetor V(10) e o escreve. Conte, a seguir, quantos valores de V são negativos e escreva esta informação. algoritmo "V001_V00000100" var v :vetor[1..10]de inteiro i ,cont:inteiro inicio para i de 1 ate 10 faca leia(v[i]) fimpara para i de 1 ate 10 faca escreva(v[i]) fimpara cont<-0 para i de 1 ate 10 faca se v[i]<0 entao cont<-cont+1 fimse fimpara escreva(cont) fimalgoritmo V00000200 - Faça um algoritmo que leia 10 valores e os escreva na ordem contrária à que foram digitados. algoritmo var v :vetor [1..10] de inteiro i :inteiro inicio para i de 1 ate 10 faca leia(v[i]) fimpara para i de 1 ate 10 faca escreva(v[11-i]) fimpara fimalgoritmo ou algoritmo var v :vetor [1..10] de inteiro i :inteiro inicio para i de 1 ate 10 faca leia(v[i]) fimpara para i de 10 ate 1 passo -1 faca escreva(v[i]) fimpara fimalgoritmo ou algoritmo var v :vetor [1..10] de inteiro i :inteiro inicio para i de 1 ate 10 faca leia(v[i]) fimpara i<-10 enquanto i>0 faca escreva(v[i]) i<-i-1 fimenquanto fimalgoritmo V00000250 - Faça um algoritmo que leia os conceitos (1, 2, 3, 4 ou 5) dos alunos de uma turma de 20 alunos. após, o algoritmo desenha um histograma com os conceitos na forma 111 2222 3333333333 44 5 se houveram três alunos com conceito 1, quatro com conceito 2, dez com conceito 3, dois com conceito 4 e um com conceito 5. V00000300 - Faça um algoritmo que leia 10 valores e escreva primeiramente todos os números pares digitados e em seguida os números ímpares. algoritmo var v :vetor [1..10] de inteiro i :inteiro inicio para i de 1 ate 10 faca leia(v[i]) fimpara para i de 1 ate 10 faca se v[i]% 2=0 entao escreva(v[i]) fimse fimpara para i de 1 ate 10 faca se v[i]% 2=1 entao escreva(v[i]) fimse fimpara fimalgoritmo V00000320 - Faça um algoritmo que leia uma quantidade indeterminada de números até que sejam informados 10 números positivos (maiores que zero) e em seguida escreva esses números positivos em ordem contrária à ordem de leitura. V00000400 - Escrever um algoritmo que lê um vetor V(10) e o escreve. Conte, a seguir, quantos valores de V são primos e escreva esta informação. V00000500 - Faça um algoritmo que leia dez números inteiros armazenando-os em um vetor. após, escreva a posição de cada número menor que zero desse vetor. algoritmo var v :vetor[1..10] de inteiro i :inteiro inicio para i de 1 ate 10 faca leia(v[i]) fimpara para i de 1 ate 10 faca se v[i]<0 entao escreva(i) fimse fimpara fimalgoritmo V00000600 - Escreva um algoritmo que lê um vetor A(10) e escreva a posição de cada elemento primo deste vetor. algoritmo var v:vetor[1..10] de inteiro i,j:inteiro inicio para i de 1 ate 10 faca escreva("Digite:") leia(v[i]) j<-2 enquanto v[i]% j<>0 faca j<-j+1 fimenquanto se j=v[i] entao escreval("pos=",i) fimse fimpara fimalgoritmo V00000700 - Escrever um algoritmo que lê um vetor X(10) e o escreve. Substitua, a seguir, todos os valores negativos de X pelos seu módulo e escreva novamente o vetor X. algoritmo var v :vetor[1..10] de inteiro i :inteiro inicio para i de 1 ate 10 faca leia(v[i]) escreva(v[i]) fimpara para i de 1 ate 10 faca se v[i]<0 entao v[i]<-abs(v[i]) fimse fimpara para i de 1 ate 10 faca escreva(v[i]) fimpara fimalgoritmo V00000800 - Escrever um algoritmo que lê um vetor C(50) e o escreve. Encontre, a seguir,o maior elemento de C e o escreva. algoritmo "V001_V00000800" var v:vetor[1..30] de inteiro i,maior:inteiro inicio para i de 1 ate 30 faca leia(v[i]) escreva(v[i]) fimpara maior<-v[1] para i de 2 ate 30 faca se v[i]>maior entao maior<-v[i] fimse fimpara escreva("O maior é ",maior) fimalgoritmo V00000900 - Escrever um algoritmo que lê um vetor N(80) e o escreve. Encontre, a seguir, o menor elemento e a sua posição no vetor N e escreva: "O menor elemento de N é = ... e a sua posição é... ". algoritmo var v:vetor[1..30] de inteiro i,menor,pos:inteiro inicio para i de 1 ate 30 faca leia(v[i]) escreva(v[i]) fimpara pos<-1 menor<-v[1] para i de 2 ate 30 faca se v[i]< menor entao menor<-v[i] pos<-i fimse fimpara escreva(menor,pos) fimalgoritmo V00001000 - Faça um algoritmo que leia 10 valores, calcule sua média e escreva os valores que estão acima da média calculada. algoritmo var v:vetor[1..10] de inteiro soma,media:real i:inteiro inicio soma<-0 para i de 1 ate 10 faca leia(v[i]) soma<-soma+v[i] fimpara media <- soma/10 para i de 1 ate 10 faca se v[i]>media entao escreval(v[i]) fimse fimpara fimalgoritmo V00001010 - Faça um algoritmo que leia 10 valores, calcule sua média e escreva o valor do menor elemento maior ou igual à média calculada. algoritmo "V001_V00001010" var v:vetor[1..10]de inteiro media:real i,menor:inteiro inicio media<-0 para i de 1 ate 10 faca leia(V[i]) media<-media+v[i] fimpara media<-media/10 i<-1 enquanto v[i]<media faca i<-i+1 fimenquanto menor<-v[i] enquanto i<10 faca i<-i+1 se v[i]<menor e v[i]>=media entao menor<-v[i] fimse fimenquanto escreva(menor) fimalgoritmo V00001050 - Faça um algoritmo que leia um vetor de 10 elementos. Leia, a seguir, um valor N e verifique se o valor aparece no vetor escrevendo: 0 - se o valor N não aparece no vetor; 1 - se o valor N aparece no vetor algoritmo var v : vetor [ 1 .. 10 ] de inteiro i , N , tem : inteiro inicio para i de 1 ate 10 faca leia ( v [ i ] ) fimpara leia ( N ) tem <- 0 para i de 1 ate 10 faca se v [ i ] = N entao tem <- 1 fimse fimpara escreva ( tem ) fimalgoritmo V00001100 - Escrever um algoritmo que lê um vetor N(10) e o escreve. Troque, a seguir, o 1° elemento com o último, o 2° com o penúltimo, etc até o 5° com o 6° e escreva o vetor N assim modificado. algoritmo var v:vetor[1..10] de inteiro i,aux:inteiro inicio para i de 1 ate 10 faca leia(v[i]) escreva(v[i]) fimpara para i de 1 ate 5 faca aux<-v[i] v[i]<-v[11-i] v[11-i]<-aux fimpara para i de 1 ate 10 faca escreva(v[i]) fimpara fimalgoritmo V00001200 - Escrever um algoritmo que lê um vetor N(10) e o escreve. Troque, a seguir, cada elemento que estiver em posição ímpar (o primeiro, o terceiro...) pelo elemento da posição imediatamente a seguir. Escreva o vetor modificado. algoritmo var v:vetor[1..10] de inteiro i,aux:inteiro inicio para i de 1 ate 10 faca leia(v[i]) escreva(v[i]) fimpara para i de 1 ate 9 passo 2 faca aux<-v[i] v[i]<-v[i+1] v[i+1]<-aux fimpara para i de 1 ate 10 faca escreva(v[i]) fimpara fimalgoritmo V00001250 - Escreva um algoritmo que lê em um vetor de 20 posições números positivos, até que o vetor esteja completo ou que tenha sido fornecido o valor 0 (zero). Nesse último caso, o valor zero não deve fazer parte do vetor. Após, escreva o vetor. A seguir, o algoritmo deve ler um número positivo qualquer e, caso ele se encontre no vetor, deve remover todas suas ocorrências, através de um deslocamento para a esquerda dos elementos que encontram-se à direita daquele a ser removido. Escreva o vetor modificado. algoritmo var i,j,k,x:inteiro v:vetor[1..20] de inteiro inicio i<-1 leia(v[i]) enquanto v[i]<>0 e i<20 faca i<-i+1 leia(v[i]) fimenquanto se v[i]=0 entao i<-i-1 fimse leia(X) para j de 1 ate i faca escreva(v[j]," ") fimpara j<-1 enquanto j<=i faca se v[j]=X entao para k de j ate i-1 faca v[k]<-v[k+1] fimpara i<-i-1 senao j<-j+1 fimse fimenquanto para j de 1 ate i faca escreva(v[j]) fimpara fimalgoritmo V00001300 - Escrever um algoritmo que lê um vetor G(10) contendo o gabarito de uma prova. Leia a seguir, para cada aluno de um conjunto de 5 alunos suas 10 respostas e verifique quantas questões acertou, escrevendo para cada aluno o número de acertos. algoritmo "V001_V00001300" var g:vetor[1..10] de inteiro i,j,r,acertos:inteiro inicio para i de 1 ate 10 faca leia (g[i]) fimpara para i de 1 ate 5 faca acertos<-0 para j de 1 ate 10 faca leia(r) se r=g[j] entao acertos<-acertos+1 fimse fimpara escreva(acertos) fimpara fimalgoritmo V00001400 - Faça um algoritmo que leia 10 valores e verifique se algum dos valores aparece repetido. Escreva 1 se algum valor aparece repetido e 0 se não houver nenhum valor repetido. algoritmo "V001_V00001300" var g:vetor[1..10] de inteiro i,j,tem:inteiro inicio para i de 1 ate 10 faca leia (g[i]) fimpara tem<-0 para i de 1 ate 10 faca para j de 1 ate 10 faca se g[i]=g[j] e i<>j entao tem<-1 fimse fimpara fimpara escreva(tem) fimalgoritmo ou algoritmo "V001_V00001300" var g:vetor[1..10] de inteiro i,j,tem:inteiro inicio para i de 1 ate 10 faca leia (g[i]) fimpara tem<-0 para i de 1 ate 10 faca para j de i+1 ate 10 faca se g[i]=g[j] entao tem<-1 fimse fimpara fimpara escreva(tem) fimalgoritmo V00001450 - Faça um algoritmo que leia um vetor de 10 elementos. Leia, a seguir, 10 valores N e, para cada um, verifique se o valor aparece no vetor escrevendo: 0 - se o valor N não aparece no vetor; 1 - se o valor N aparece no vetor algoritmo var v:vetor[1..10] de inteiro i,N,j,tem:inteiro inicio para i de 1 ate 10 faca leia(v[i]) fimpara para j de 1 ate 10 faca leia(N) tem<-0 para i de 1 ate 10 faca se v[i]=N entao tem<-1 fimse fimpara escreva(tem) fimpara fimalgoritmo V00001500 - Escrever um algoritmo que lê um vetor X(10) e, após, leia um vetor Y(10). Crie, a seguir, um terceiro vetor Z com os elementos que aparecem nos dois vetores (intersecção). Os elementos devem aparecer no vetor Z na mesma ordem em que aparecem no vetor X. Considere que não há repetição de valores dentro do mesmo vetor. Escreva o vetor Z (apenas as posições que foram preenchidas). algoritmo var x,y,z:vetor[1..10] de inteiro i,k,j:inteiro inicio para i de 1 ate 10 faca leia(x[i]) fimpara para j de 1 ate 10 faca leia(y[j]) fimpara k<-0 para j de 1 ate 10 faca para i de 1 ate 10 faca se x[j]=y[i] entao k<-k+1 z[k]<-x[j] fimse fimpara fimpara para i de 1 ate k faca escreva(z[i]) fimpara fimalgoritmo V00001501 - Escrever um algoritmo que lê um vetor X(10) e, após, leia um vetor Y(10). Crie, a seguir, um terceiro vetor Z com os elementos que aparecem em um X ou em Y (união); elementos que aparecem em X e Y simultaneamente devem aparecer apenas uma vez em Z. Os elementos devem aparecer no vetor Z na mesma ordem em que aparecem no vetor X e Y. Considere que não há repetição de valores dentro do mesmo vetor. Escreva o vetor Z (apenas as posições que foram preenchidas). V00001600 - Faça um algoritmo que leia um vetor V(5), com os valores sorteados em um sorteio de Loto. Leia, a seguir, para um conjunto de 5 apostadores, seus 5 palpites e escreva, para cada um, o número de acertos que teve. algoritmo var v:vetor[1..5] de inteiro i,n,acertos,j,k:inteiro inicio para i de 1 ate 5 faca leia(v[i]) fimpara para i de 1 ate 5 faca acertos<-0 para k de 1 ate 5 faca leia(N) para j de 1 ate 5 faca se N=v[j] entao acertos<-acertos+1 fimse fimpara fimpara escreval(acertos," acertos") fimpara fimalgoritmo V00001650 - Faça um algoritmo que leia um número N e escreva os N primeiros números primos em ordem decrescente. Considere que N é no máximo igual a 100. Ex: Se N=5, escreva 11,7,5,3,2. algoritmo "V001_V00001650" var v:vetor[1..100] de inteiro p,i,N,cont:inteiro inicio p<-2 cont<-0 leia(N) enquanto cont<N faca i<-2 enquanto p% i<>0 facai<-i+1 fimenquanto se i=p entao cont<-cont+1 v[cont]<-p fimse p<-p+1 fimenquanto para i de N ate 1 passo -1 faca escreva(v[i]) fimpara fimalgoritmo V00001700 - Escrever um algoritmo que lê 2 vetores X(10) e Y(10), e escreva os elementos que aparecem no vetor X e não aparecem no vetor Y (diferença de conjuntos). Escreva os valores na ordem em que eles aparecem no vetor X. Os dois vetores devem ser lidos separadamente (em primeiro lugar, todo o vetor X, após, o vetor Y). algoritmo var X,Y:vetor[1..10] de inteiro i,achou,j:inteiro inicio para i de 1 ate 10 faca leia(X[i]) fimpara para i de 1 ate 10 faca leia(Y[i]) fimpara para i de 1 ate 10 faca achou<-0 para j de 1 ate 10 faca se X[i]=Y[j] entao achou<-1 fimse fimpara se achou=0 entao escreva(X[i]) fimse fimpara fimalgoritmo V00001710 - Escrever um algoritmo que lê 3 vetores A[1..10], B[1.10] e C[1..10] e escreve os elementos que estão em A e B (interseção) mas não estão em C. Escreva os valores na ordem em que eles aparecem no vetor A. Os três vetores devem ser lidos separadamente (em primeiro lugar, todo o vetor A, após, o vetor B e por fim o vetor C). V00001720 - Escrever um algoritmo que lê 3 vetores A[1..10], B[1.10] e C[1..10] e escreve os elementos que são comuns aos três vetores (intersecção). Escreva os valores na ordem em que eles aparecem no vetor A. Os três vetores devem ser lidos separadamente (em primeiro lugar, todo o vetor A, após, o vetor B e por fim o vetor C). V00001730 - Escrever um algoritmo que lê 2 vetores A[1..10] e B[1.10] e escreve os elementos que estão somente em A ou somente em B. Escreva os valores na ordem em que eles aparecem no vetor A, e em seguida os que aparecem no vetor B. Os dois vetores devem ser lidos separadamente (em primeiro lugar, todo o vetor A e, após, o vetor B). V00001790 - Faça um algoritmo que leia valores inteiros entre 1 e 10 até que seja digitado um valor igual a 0, e escreva, ao final, quais dos valores entre 1 e 10 que não foram digitados nenhuma vez. V00001800 - Faça um algoritmo que leia um vetor X(10). Compare a seguir cada elemento com o elemento da posição seguinte, trocando-os entre si se o elemento de maior valor estiver antes do elemento de menor valor. O que se pode dizer sobre a ordem dos elementos dentro do vetor após essa operação? algoritmo var X:vetor[1..10] de inteiro i,aux:inteiro inicio para i de 1 ate 10 faca leia(X[i]) fimpara para i de 1 ate 9 faca se x[i]>x[i+1] entao aux<-x[i] x[i]<-x[i+1] x[i+1]<-aux fimse fimpara para i de 1 ate 10 faca escreva(x[i]) fimpara fimalgoritmo V00001900 - Faça um algoritmo que leia um vetor X(10) e ordene seus elementos em ordem crescente. Escreva o vetor ordenado. Dica: o que acontece se o procedimento descrito no exercício V00001800 for executado repetidamente sobre o vetor? algoritmo var X:vetor[1..10] de inteiro i,j,aux:inteiro inicio para i de 1 ate 10 faca leia(X[i]) fimpara para j de 1 ate 9 faca para i de 1 ate 9 faca se x[i]>x[i+1] entao aux<-x[i] x[i]<-x[i+1] x[i+1]<-aux fimse fimpara fimpara para i de 1 ate 10 faca escreva(x[i]) fimpara fimalgoritmo V00002000 - Faça um algoritmo que leia, para cada pessoa de um conjunto de 10 pessoas, o seu peso (inteiro) e altura (real), e escreva a lista de pesos e alturas em ordem crescente de altura. Os dois dados referentes a cada pessoa devem ser lidos juntos (ou seja, o algoritmo não deve ler todos os pesos e em seguida todas as alturas) algoritmo var P:vetor[1..10] de inteiro A:vetor[1..10] de real i,j,auxi:inteiro aux:real inicio para i de 1 ate 10 faca leia(P[i],A[i]) fimpara para j de 1 ate 9 faca para i de 1 ate 9 faca se A[i]>A[i+1] entao aux<-A[i] A[i]<-A[i+1] A[i+1]<-aux auxi<-P[i] P[i]<-P[i+1] P[i+1]<-auxi fimse fimpara fimpara para i de 1 ate 10 faca escreva(P[i],A[i]) fimpara fimalgoritmo V00002100 - Faça um algoritmo que leia dois vetores V(10) e W(10), ordenando cada um em ordem crescente. Gere, a seguir, um vetor Z(20) com os elementos de V e W, também em ordem crescente. Escreva o vetor Z. algoritmo var V,W:vetor[1..10] de inteiro z:vetor[1..20] de inteiro i,j,iv,iz,iw,aux:inteiro inicio para i de 1 ate 10 faca leia(V[i]) fimpara para i de 1 ate 10 faca leia(W[i]) fimpara para j de 1 ate 9 faca para i de 1 ate 9 faca se V[i]>V[i+1] entao aux<-V[i] V[i]<-V[i+1] V[i+1]<-aux fimse fimpara fimpara para j de 1 ate 9 faca para i de 1 ate 9 faca se W[i]>W[i+1] entao aux<-W[i] W[i]<-W[i+1] W[i+1]<-aux fimse fimpara fimpara iv<-1 iw<-1 para iz de 1 ate 20 faca se iv>10 entao z[iz]<-w[iw] iw<-iw+1 senao se iw>10 entao z[iz]<-v[iv] iv<-iv+1 senao se v[iv]<w[iw] entao z[iz]<-v[iv] iv<-iv+1 senao z[iz]<-w[iw] iw<-iw+1 fimse fimse fimse fimpara para i de 1 ate 20 faca escreva(z[i]," ") fimpara fimalgoritmo V00002200 - Escrever um algoritmo que gera os 10 primeiros números primos acima de 100 e os armazena em um vetor X(10) escrevendo, no final, o vetor X. algoritmo var primos:vetor[1..10] de inteiro i,n,ip:inteiro inicio N<-100 ip<-1 enquanto ip<=10 faca i<-2 enquanto n%i<>0 faca i<-i+1 fimenquanto se n=i entao primos[ip]<-n ip<-ip+1 fimse n<-n+1 fimenquanto para i de 1 ate 10 faca escreva(primos[i]," ") fimpara fimalgoritmo V00002250 - Escrever um algoritmo que leia 20 números inteiros em um vetor e escreva o elemento que aparece MENOS vezes no vetor com o número de ocorrências. Suponha que não haverão dois ou mais números com o mesmo número mínimo de ocorrências. V00002300 - Escrever um algoritmo que lê um vetor X(20) possivelmente contento repetições e o escreve. Escreva, a seguir, cada um dos valores que aparecem em X dizendo quantas vezes cada valor aparece em X. algoritmo var x:vetor[1..20] de inteiro i,j,aux,cont,n:inteiro inicio para i de 1 ate 20 faca leia(x[i]) fimpara para j de 1 ate 19 faca para i de 1 ate 19 faca se x[i]>x[i+1] entao aux<-x[i] x[i]<-x[i+1] x[i+1]<-aux fimse fimpara fimpara escreval(" ") cont<-1 N<-x[1] para i de 2 ate 20 faca se x[i]>N entao escreval(N ," ",cont) N<-x[i] cont<-1 senao cont<-cont+1 fimse fimpara escreva(N," ",cont) fimalgoritmo V00002400 - Faça um algoritmo para gerar um vetor com os números primos de 1 a 1000 através do crivo de eratóstenes. Neste método o vetor (inicializado com zeros) é percorrido da segunda posição até o fim e para cada posição n que contem 0, n é um número primo e todas as posições múltiplas de n devem receber 1. Escreva ao final os números primos. Eles são indicados pelas posições do vetor que contem 0. algoritmo var x:vetor[1..200] de inteiro i,j:inteiro inicio para i de 1 ate 200 faca x[i]<-0 fimpara para i de 2 ate 100 faca se x[i]=0 entao j<-i*2 enquanto j<=200 faca x[j]<-1 j<-j+i fimenquanto fimse fimpara para i de 2 ate 200 faca se x[i]=0 entao escreva(i," ") fimse fimpara fimalgoritmo V00002500 - Faça um algoritmo que leia 30 valores inteiros entre 1 e 10 e escreva o número de vezes que ocorre cada valor. algoritmo var cont:vetor[1..10] de inteiro i,n:inteiro inicio para i de 1 ate 10 faca cont[i]<-0 fimpara para i de 1 ate 30 faca leia(n) cont[n]<-cont[n]+1 fimpara para i de 1 ate 10 faca escreva(cont[i]," ") fimpara fimalgoritmo V00002550 - Faça um algoritmo que leia 20 datas de aniversário, cada uma formada por dia e mês, e escreva os números dos dois meses em que mais ocorrem aniversários. Escreva primeiro o mês de maior número de aniversários. algoritmo var c:vetor[1..12] de inteiro d,m,mm,i:inteiro inicio para i de 1 ate 12 faca c[i]<-0 fimpara para i de 1 ate 20 faca leia(d,m) c[m]<-c[m]+1 fimpara mm<-1 para i de 2 ate 12 faca se c[i]>c[mm] entao mm<-i fimse fimpara escreva(mm) c[mm]<-0 mm<-1 para i de 2 ate 12 faca se c[i]>c[mm] entao mm<-i fimse fimpara escreva(mm) fimalgoritmo V00002600 - Faça um algoritmo que leia 10 números reais armazenando-os em um vetor. Desloque, a seguir, todosos elementos do vetor uma posição para a esquerda (colocando na última posição o elemento que estava na primeira posição). Repita isso até o que o maior elemento esteja ocupando a primeira posição. algoritmo "V001_V00002600" var v:vetor [1..10] de real i,k,pm:inteiro maior,prim:real inicio para i de 1 ate 10 faca leia(v[i]) fimpara maior<-v[1] pm<-1 para i de 2 ate 10 faca se v[i]>maior entao maior<-v[i] pm<-i fimse fimpara para k de 1 ate pm-1 faca prim<-v[1] para i de 1 ate 9 faca v[i]<-v[i+1] fimpara v[10]<-prim fimpara para i de 1 ate 10 faca escreva(v[i]) fimpara fimalgoritmo V00002700 - Faça um algoritmo que coloque em um vetor os 20 primeiros números primos da série de Fibonacci algoritmo "V001_V00002700" var cont,a,b,p,d,N,i:inteiro v:vetor [1..10] de inteiro fim:real inicio a<-1 b<-1 cont<-0 leia(N) enquanto cont<N faca p<-a+b a<-b b<-p d<-2 fim<-raizq(p) enquanto p%d<>0 e d<fim faca d<-d+1 fimenquanto se d>fim entao cont<-cont+1 v[cont]<-p fimse fimenquanto para i de N ate 1 passo -1 faca escreva(v[i]," ") fimpara fimalgoritmo V00002800 - Faça um algoritmo que leia uma quantidade indeterminada de números até que sejam digitados 10 números distintos e escreva esses 10 números. algoritmo "V001_V00002800" var n,pos,tem,i:inteiro v:vetor[1..10] de inteiro inicio pos<-0 enquanto pos<10 faca leia(N) tem<-0 para i de 1 ate pos faca se n=v[i] entao tem<-1 fimse fimpara se tem=0 entao pos<-pos+1 v[pos]<-n fimse fimenquanto para i de 1 ate 10 faca escreva(v[i]," ") fimpara fimalgoritmo V00002900 - Faça um algoritmo que preencha um vetor com os 20 primeiros números primos e após escreva os elementos desse vetor. Para identificar se um número é primo, verifique se é divisível por algum dos primos já colocados no vetor. algoritmo "V001_V00002900" var p:vetor[1..20] de inteiro pos,n,tem,i:inteiro inicio p[1]<-2 pos<-2 n<-3 enquanto pos<=20 faca tem<-0 para i de 1 ate pos-1 faca se n% p[i]=0 entao tem<-1 fimse fimpara se tem=0 entao p[pos]<-n pos<-pos+1 fimse n<-n+1 fimenquanto para i de 1 ate 20 faca escreva(p[i]," ") fimpara fimalgoritmo V00003000 - Faça um algoritmo que leia dois vetores V(15) e W(15), contendo, cada um, um número de 15 dígitos, cada dígito ocupando uma posição do vetor, o dígito menos significativo do número ocupando a posição 15, e calcule a soma dos dois números, colocando o resultado em um vetor S(16). Escreva ao final o vetor S. Os dois vetores de entrada devem ser lidos separadamente, primeiro o vetor V e, após, o vetor W. algoritmo var v,w:vetor[1..15] de inteiro s:vetor[1..16] de inteiro i,vaium,sum:inteiro inicio para i de 1 ate 15 faca leia(v[i]) fimpara para i de 1 ate 15 faca leia(w[i]) fimpara vaium<-0 para i de 15 ate 1 passo -1 faca sum<-v[i]+w[i]+vaium s[i+1]<-sum% 10 vaium<-sum\10 fimpara s[1]<-vaium para i de 1 ate 16 faca escreva(s[i]," ") fimpara fimalgoritmo V00003050 - Faça um algoritmo que leia dois vetores V(15) e W(15), contendo, cada um, um número de 15 dígitos, cada dígito ocupando uma posição do vetor, e efetue a comparação entre os dois números de quinze dígitos em V e W, escrevendo: -1 se o número em V é menor. 0 (zero) se os números em V e W são iguais. 1, se o número em V é maior. Leia inicialmente os 15 dígitos de V e, após, os 15 dígitos de W. V00003100 - Faça um algoritmo que leia dois vetores V(15) e W(15), contendo, cada um, um número de 15 dígitos, cada dígito ocupando uma posição do vetor, o dígito menos significativo do número ocupando a posição 15, e calcule a diferença dos dois números (V-W), colocando o resultado em um vetor S(16). Escreva ao final o vetor S. Considere que o número de 15 dígitos no vetor V é maior que o número contido no vetor W. algoritmo var v,w,s:vetor[1..15] de inteiro i:inteiro inicio para i de 1 ate 15 faca leia(v[i]) fimpara para i de 1 ate 15 faca leia(w[i]) fimpara para i de 15 ate 1 passo -1 faca se v[i]>=w[i] entao s[i]<-v[i]-w[i] senao v[i-1]<-v[i-1]-1 s[i]<-v[i]+10-w[i] fimse fimpara para i de 1 ate 15 faca escreva(s[i]," ") fimpara fimalgoritmo V00003200 - Faça um algoritmo que leia um vetor V(15) contendo um número de 15 dígitos, e um valor N entre 0 e 9, e calcule o produto (multiplicação) do número em V pelo valor N, colocando o resultado em um vetor P(16). Escreva o vetor P. algoritmo var v:vetor[1..15] de inteiro s:vetor[1..16] de inteiro i,n,vaium,sum:inteiro inicio para i de 1 ate 15 faca leia(v[i]) fimpara leia(N) vaium<-0 para i de 15 ate 1 passo -1 faca sum<-n*v[i]+vaium s[i+1]<-sum% 10 vaium<-sum\10 fimpara s[1]<-vaium para i de 1 ate 16 faca escreva(s[i]," ") fimpara fimalgoritmo V00003250 - Faça um algoritmo que leia, para 5 candidatos a deputado, o seu cadastro. Leia, a seguir, um número não determinado de votos (termina ao ser digitado 0) e escreva ao final o cadastro e número de votos de cada candidato (em ordem crescente de cadastro). Escreva também, ao final, o número de votos nulos (ou seja, votos que não são iguais ao cadastro de nenhum candidato). algoritmo "V001_V00003250" var cad,votos:vetor[1..5] de inteiro nulos,aux,i,j,voto:inteiro inicio para i de 1 ate 5 faca leia(cad[i]) votos[i]<-0 fimpara leia(voto) nulos<-0 enquanto voto<>0 faca j<-1 enquanto cad[j]<>voto e j<5 faca j<-j+1 fimenquanto se cad[j]=voto entao votos[j]<-votos[j]+1 senao nulos<-nulos+1 fimse leia(voto) fimenquanto para i de 1 ate 4 faca para j de 1 ate 4 faca se cad[j]>cad[j+1] entao aux<-cad[j] cad[j]<-cad[j+1] cad[j+1]<-aux aux<-votos[j] votos[j]<-votos[j+1] votos[j+1]<-aux fimse fimpara fimpara para i de 1 ate 5 faca escreva(cad[i],votos[i]) fimpara escreva(nulos) fimalgoritmo V00003300 - Faça um algoritmo que leia, para 20 candidatos a deputado, seu cadastro, partido (inteiro entre 1 e 10) e número de votos, e escreva o total de votos de cada partido. Os 3 dados correspondentes a cada candidato devem ser lidos juntos, antes de passar para o próximo candidato. algoritmo "V001_V00003300" var tp:vetor[1..10] de inteiro pt,cad,votos,i:inteiro inicio para i de 1 ate 10 faca tp[i]<-0 fimpara para i de 1 ate 20 faca leia(cad,pt,votos) tp[pt]<-tp[pt]+votos fimpara para i de 1 ate 10 faca escreva(tp[i]," ") fimpara fimalgoritmo V00003350 - Faça um algoritmo que leia, para 20 candidatos a deputado, seu cadastro, partido (inteiro entre 1 e 10) e número de votos, e escreva, para os 10 partidos, o número do partido e o total de votos, em ordem decrescente de votação. Os 3 dados correspondentes a cada candidato devem ser lidos juntos, antes de passar para o próximo candidato. algoritmo "V001_V00003350" var vp,np:vetor[1..10]de inteiro i,j,c,p,v,aux:inteiro inicio para i de 1 ate 10 faca vp[i]<-0 np[i]<-i fimpara para i de 1 ate 20 faca leia(c,p,v) vp[p]<-vp[p]+v fimpara para i de 1 ate 10 faca para j de 1 ate 9 faca se vp[j]<vp[j+1] entao aux<-vp[j] vp[j]<-vp[j+1] vp[j+1]<-aux aux<-np[j] np[j]<-np[j+1] np[j+1]<-aux fimse fimpara fimpara para i de 1 ate 10 faca escreval(np[i]," ",vp[i]) fimpara fimalgoritmo V00003400 - Faça um algoritmo que leia, para 20 candidatos a deputado, seu cadastro, partido (inteiro entre 1 e 10) e número de votos, e escreva o cadastro, partido e número de votos do candidato mais votado de cada partido, em ordem crescente de partido. algoritmo "V001_V00003300" var pt,cad,votos:vetor[1..20] de inteiro p,cadm,votm,i:inteiro inicio para i de 1 ate 20 faca leia(cad[i],pt[i],votos[i]) fimpara para p de 1 ate 10 faca votm<-0 para i de 1 ate 20 faca se pt[i]=p e votos[i]>votm entao cadm<-cad[i] votm<-votos[i] fimse fimpara escreva(cadm," ",p," ",votm," ") fimpara fimalgoritmo V00003410 - Faça um algoritmo que leia, para 20 candidatos a deputado, seu cadastro, partido (inteiro entre 1 e 10) e número de votos, e escreva o cadastro, partido e número de votos do candidato mais votado de cada partido,
Compartilhar