Sei sulla pagina 1di 67

Sequenciais

S00000050 - Faa um algoritmo que leia um valor N, representando o lado de um


quadrado, e calcule e escreva a rea do quadrado.
algoritmo "S001_S00000050"
var N,area:inteiro
inicio
Escreval("Digite o valor do lado")
leia (N)
area<-n*n
escreval("A area ",area)
fimalgoritmo
S00000100 - Faa um algoritmo que leia dois valores inteiros e escreva a sua
soma.
algoritmo "S001_S00000100"
var a,b:real
inicio
leia(a,b)
escreva(a+b)
fimalgoritmo
S00000150 - Faa um algoritmo que leia 3 valores reais, notas de um aluno, e
escreva sua mdia aritmtica. A mdia aritmtica de um conjunto de valores
dada pela soma dos valores dividido pela quantidade de valores considerados.
algoritmo "S002_S00000150"
var a,b,c,media:real
inicio
leia(a,b,c)
media<-(a+b+c)/3
escreva("a mdia ",media)
fimalgoritmo
S00000200 - Faa um algoritmo que leia 2 valores reais v1 e v2 e calcule e
escreva a rea do tringulo que tem base igual a v1 e altura igual a v2. Dica:A
rea de um tringulo dada pela expresso: (base x altura)/2
S00000210 - O produto vetorial AxB de dois vetores A=[ax,ay] e B=[bx,by] um
vetor perpendicular ao plano formado pelos vetores A e B, de mdulo igual a |
ax*by-ay*bx|. Faa um algoritmo que leia as componentes ax,ay,bx e by dos
vetores A e B, e calcule e escreva o mdulo do vetor resultante do produto
vetorial.
algoritmo
var ax,ay,bx,by:real
inicio
leia(ax,ay,bx,by)
escreva(abs(ax*by-ay*bx))
fimalgoritmo
S00000220 - O produto escalar A.B de dois vetores A=[a1,a2,a3...] e
B=[b1,b2,b3...] dado pelo somatrio a1*b1+a2*b2+a3*b3+... Faa um algoritmo
que leia as coordenadas ax,ay,az,bx,by,bz de dois vetores no espao
tridimensional e calcule e escreva seu produto escalar.
algoritmo "S001_S00000220"
var ax,ay,az,bx,by,bz:real
inicio
leia(ax,ay,az,bx,by,bz)
escreva(ax*bx+ay*by+az*bz)
fimalgoritmo
S00000300 - Faa um algoritmo que leia 3 valores a, b e c, coeficientes de uma
equao de segundo grau, e calcule e escreva a soma das razes da equao.
Dica:As razes de uma equao podem ser calculadas pela frmula de Baskhara.
algoritmo
var a,b,c,delta,x1,x2:real
inicio
leia(a,b,c)
delta<-raizq(b^2-4*a*c)
x1<-(-b+delta)/(2*a)
x2<-(-b-delta)/(2*a)
escreva(x1+x2)
fimalgoritmo
S00000350 - Faa um algoritmo que leia 3 valores a, b e c, coeficientes de uma
equao de segundo grau, e calcule e escreva o produto (multiplicao) das
razes da equao. Dica:As razes de uma equao podem ser calculadas pela
frmula de Baskhara.
algoritmo
var a,b,c,delta,x1,x2:real
inicio
leia(a,b,c)
delta<-raizq(b^2-4*a*c)
x1<-(-b+delta)/(2*a)
x2<-(-b-delta)/(2*a)
escreva(x1*x2)
fimalgoritmo
S00000400 - Faa um algoritmo que leia 2 valores e escreva o maior deles. Dica:O
maior entre dois valores quaisquer v1 e v2 pode ser calculado pela expresso
(v1+v2+|v1-v2|)/2. O operador matemtico de mdulo ( |x| ) representado na
nossa linguagem pela funo abs(x)
algoritmo
var a,b,c,valor:real
inicio
escreva ("digite 3 valores")
leia (a,b,c)
valor <- (a+b+abs(a-b))/2
valor <- (valor+c+abs(valor-c))/2
escreva ("o maior nmero ",valor)
fimalgoritmo
S00000500 - Faa um algoritmo que leia 2 valores e escreva o menor deles.
Dica:O menor entre dois valores pode ser obtido a partir do maior valor e da
soma dos dois (por exemplo: Se a soma de dois valores 15 e o valor do maior
10, como pode ser calculado o valor do menor?).
algoritmo
var a,b,maior,menor:real
inicio
escreva ("digite 2 valores")
leia (a,b)
maior <- (a+b+abs(a-b))/2
menor <- a + b - maior
escreva ("o menor nmero ",menor)
fimalgoritmo
algoritmo
var a,b,menor:real
inicio
leia(a,b)
menor<-(a+b-abs(a-b))/2
escreva(menor)
fimalgoritmo
S00000600 - Faa um algoritmo que leia 3 valores escreva o maior deles. Dica:O
maior entre trs valores pode ser encontrado pela aplicao repetida da
expresso para encontrar o maior entre dois valores.
algoritmo
var a,b,c,valor:real
inicio
escreva ("digite 3 valores")
leia (a,b,c)
valor <- (a+b+abs(a-b))/2
valor <- (valor+c+abs(valor-c))/2
escreva ("o maior nmero ",valor)
fimalgoritmo
S00000700 - Faa um algoritmo que l um valor inteiro em reais e calcula e
escreve qual o menor nmero possvel de notas de 100,50,20,10,5,2 e 1 real em
que o valor pode ser decomposto. Dica:Isso pode ser calculado a partir de
operaes de diviso inteira.
algoritmo "S001_S00000700"
var n:inteiro
inicio
escreval("Digite um valor")
leia(n)
escreval(n\100," notas de 100")
n<-n%100
escreval(n\50," notas de 50")
n<-n%50
escreval(n\10," notas de 10")
n<-n%10
escreval(n\5," notas de 5")
n<-n%5
escreval(n," notas de 1")
fimalgoritmo
S00000800 - Faa um algoritmo que l uma quantia inteira em segundos e escreva o
nmero de horas, minutos e segundos correspondente. Dica:Para converter segundos
para minutos usa-se a diviso inteira por 60.
S00000900 - Faa um algoritmo que l 3 valores, lados de um tringulo, e calcule
e escreva a rea do tringulo formado. Dica: A rea de um tringulo de lados l1,
l2 e l3 pode ser calculada pela expresso rea=raiz(S*(S-l1)*(S-l2)*(S-l3)),
onde S o semi-permetro, ou seja, a metade da soma dos lados
algoritmo "C001_C00000100"
var a,b,c,s,area:real
inicio
leia(a,b,c)
s<-(a+b+c)/2
area<-raizq(s*(s-a)*(s-b)*(s-c))
escreva(area)
fimalgoritmo
S00001000 - Faa um algoritmo que le um valor entre 0 e 9999 e calcula a soma
dos seus dgitos. Dica: O dgito menos significativo de um nmero inteiro pode
ser obtido pelo resto da diviso do nmero por 10. Os dgitos restantes podem
ser obtidos pela diviso inteira por 10.
S00001100 - Faa um algoritmo que leia 3 valores v1, v2 e v3, e troque os
valores entre si de modo que ao final a varivel v2 contenha o valor que foi
lido para v1, a varivel v3 contenha o valor que foi lido para v2, e a varivel
v1 contenha o valor que foi lido para a varivel v3. Dica:Para trocar os valores
de duas variveis (digamos v1 e v2) entre si, salva-se o valor de uma delas
(p.ex., v1) em uma varivel auxiliar qualquer (p.ex., aux) , copia-se o valor da
segunda (v2) para a varivel que foi salva (v1), e copia-se o valor da varivel
auxiliar (que contem o valor original da primeira), para a segunda varivel.
S00001200 - Faa um algoritmo que leia 4 valores, Hi, Mi, Hf, Mf, representando
respectivamente a hora e minuto inicial e final de um evento, e calcule a
durao do mesmo em horas e minutos. Considere que o evento inicia e termina no
mesmo dia. Dica: Para simplificar o problema, converta cada par de valores em um
nico valor em minutos.
algoritmo "S001_S00001200"
var hi,mi,hf,mf,dh,dm,d:inteiro
inicio
leia(hi,mi,hf,mf)
d<-hf*60+mf-hi*60-mi
dh<-d\60
dm<-d%60
escreva(dh," horas e ",dm," minutos")
fimalgoritmo
S00001300 - Faa um algoritmo que leia dois horrios (hora, minuto e segundo) e
escreva quantos segundos transcorreram entre esses dois horrios.
algoritmo "S001_S00001300"
var hi,mi,si,hf,mf,sf:inteiro
inicio
leia(hi,mi,si,hf,mf,sf)
escreva(hf*3600+mf*60+sf-(hi*3600+mi*60+si))
fimalgoritmo
S00001350 - Faa um algoritmo que leia um horrio (hora, minuto e segundo) e
escreva o horrio correspondente ao segundo seguinte. Ex: se for lido, 17,21,36
escrever 17,21,37. Considere que os horrios (lido e escrito) esto na faixa de
00:00:00 a 23:59:59.
algoritmo
var h,m,s:inteiro
inicio
leia(h,m,s)
s<-3600*h+60*m+s+1
h<-(s\3600)%24
m<-s%3600\60
s<-s%60
escreva(h,m,s)
fimalgoritmo
S00001400 - Faa um algoritmo que a partir de um horrio (hora, minuto, segundo)
e uma quantidade de segundos transcorridos, calcule o segundo horrio.
algoritmo "S001_S00001400"
var h,m,s,st:inteiro
inicio
leia(h,m,s,st)
s<-s+st
m<-m+s\60
s<-s%60
h<-h+m\60
m<-m%60
escreva(h,m,s)
fimalgoritmo
S00001500 - Faa um algoritmo que leia a quantidade de alunos em uma sala de
aula e a quantidade de alunos por grupo, e calcule e escreva quantos grupos
sero formados e o resto de alunos que no foram suficientes para formar mais um
grupo.
algoritmo "S001_S00001500"
var N,Ag,g,r:inteiro
inicio
leia(N,Ag)
g<-N\Ag
r<-N%Ag
escreva(g,r)
fimalgoritmo
S00001600 - Faa um algoritmo que leia um valor em binrio at 6 dgitos e
escreva o nmero correspondente em decimal.
Dica: Multiplique cada dgito binrio pelo seu peso (1,2,4,8...) e some os
produtos.
algoritmo "Binrio"
var
n0,n1,n2,n3,n4,n5,n6,resto,decimal:inteiro
inicio
escreval("Fornea um n binrio com no mximo 6 dgitos")
leia(n0)
n1<-n0\100000
resto<-n0%100000
n2<-resto\10000
resto<-resto%10000
n3<-resto\1000
resto<-resto%1000
n4<-resto\100
resto<-resto%100
n5<-resto\10
resto<-resto%10
n6<-resto\1
decimal<- n6 +2*n5 + 4*n4 + 8*n3 + 16*n2 + 32*n1
escreva("O n binrio corresponde ao n decimal ",decimal)
fimalgoritmo
S00001650 - Faa um algoritmo que leia um nmero de 10 dgitos e rotacione os
dgitos uma posio para a esquerda, de modo que o primeiro dgito passe a
ocupar a ltima posio. Ex: 1234561234 deve gerar 2345612341 (todos os dgitos
foram uma posio para a esquerda e o 1 da primeira posio passou a ocupar a
ltima posio).
algoritmo "S001_S00001650"
var a:inteiro
inicio
leia(a)
escreva(a%1000000000*10+a\1000000000)
fimalgoritmo
S00001700 - Faa um algoritmo que leia 5 nmeros inteiros e escreva a quantidade
deles que so pares. Dica:Um nmero par se o resto da sua diviso por 2
zero.

algoritmo "S001_S00001700"
var a,b,c,d,f:inteiro
inicio
leia(a,b,c,d,f)
escreva(5-(a%2+b%2+c%2+d%2+f%2))
fimalgoritmo
S00001800 - Faa um algoritmo que leia 5 nmeros inteiros e escreva a soma dos
que forem mpares. Dica:Um nmero mpar se o resto da sua diviso por 2 um.
algoritmo "S001_S00001800"
var n1,n2,n3,n4,n5,soma:inteiro
inicio
leia(n1,n2,n3,n4,n5)
n1<-n1 % 2 * n1
n2<-n2 % 2 * n2
n3<-n3 % 2 * n3
n4<-n4 % 2 * n4
n5<-n5 % 2 * n5
soma<-n1+n2+n3+n4+n5
escreva(soma)
fimalgoritmo
Condicionais
C00000020 - Faa um algoritmo que leia um valor e escreva: 0, se o valor zero;
1, se o valor maior que zero; -1 - se o valor negativo.
C00000040 - Faa um algoritmo que leia um valor e escreva: 0, se o valor par;
1, se o valor mpar.
C00000060 - Faa um algoritmo que leia dois valores e, atravs de uma
comparao, escreva o maior deles. Considere que os dois valores so diferentes.
C00000080 - Faa um algoritmo que leia dois valores e escreva os dois em ordem
crescente.
C00000100 - Faa um algoritmo que leia 3 valores v1, v2 e v3, e escreva-os em
ordem crescente.
algoritmo "C001_C00000100"
var a,b,c,aux:inteiro
inicio
leia(a,b,c)
se a>b
entao aux<-a
a<-b
b<-aux
fimse
se a>c
entao aux<-a
a<-c
c<-aux
fimse
se b>c
entao aux<-b
b<-c
c<-aux
fimse
escreva(a,b,c)
fimalgoritmo
C00000200 - Faa um algoritmo que leia 3 valores v1, v2 e v3 e coloque-os em
ordem crescente, de forma que v1 contenha o menor, v2 contenha o elemento do
meio (nem o maior, nem o menor), e v3 contenha o maior. Escreva os valores
ordenados.
C00000250 - Escreva um algoritmo que leia os valores das quatro provas de um
aluno e escreva a mdia aritmtica considerando apenas as trs melhores notas.
Por exemplo, se o valores lidos foram 9, 9.5, 7, e 8, a mdia ser (9 + 9.5 +
8)/3 (a prova de nota 7 descartada). Dica:No esquea de considerar a
possibilidade de ocorrerem notas iguais.
C00000300 - Faa um algoritmo que leia 3 valores a, b e c, coeficientes de uma
equao de segundo grau, e verifique se a equao tem razes reais. Se a equao
tiver razes reais, calcule e escreva as razes da equao (em ordem crescente).
Se no tiver, escreva "A equao no possui razes reais". Dica: As razes de
uma equao podem ser calculadas pela frmula de Baskhara. Uma equao no
possui razes se reais se B*B-4*a*c < 0
algoritmo "C001_C00000300"
var a,b,c,delta,x1,x2:real
inicio
leia(a,b,c)
delta<-b^2-4*a*c
se delta<0
entao escreva("no tem")
senao
x1<-(-b-raizq(delta))/(2*a)
x2<-(-b+raizq(delta))/(2*a)
se x1<x2 entao escreva(x1,x2)
senao escreva(x2,x1)
fimse
fimse
fimalgoritmo
C00000350 - Faa um algoritmo que leia 3 valores a, b e c, lados de um
tringulo, e verifique o tipo de tringulo formado escrevendo: 0 - se o
tringulo equiltero (os trs lados so iguais); 1 - se o tringulo
issceles (dois lados iguais e um diferente);2 - escaleno (3 lados diferentes).
C00000360 - Faa um algoritmo que leia 3 valores a, b e c, lados de um
tringulo, e verifique o tipo de tringulo formado escrevendo: 0 - se o
tringulo retngulo (A^2=B^2+C^2); 1 - se o tringulo acutngulo (A^2 > B^2
+ C^2) ;2 - obtusngulo (A^2 < B^2 + C^2). Lembre que, para aplicar as relaes
mostradas, o algoritmo deve garantir que o maior dos 3 lados estar em A.
algoritmo
var a,b,c,aux:inteiro
inicio
leia(a,b,c)
se a<b
entao aux<-a
a<-b
b<-aux
fimse
se a<c
entao aux<-c
c<-a
a<-aux
fimse
se a^2=b^2+c^2
entao escreva(0)
senao se a^2>b^2+c^2
entao escreva(1)
senao escreva(2)
fimse
fimse
fimalgoritmo
C00000400 - Faa um algoritmo que leia 3 valores l1,l2 e l3 e verifique se
formam um tringulo. Se formarem, calcule e escreva a rea do tringulo formado
(veja exerccio S00000900). Se no formarem, escreva -1.
algoritmo "C001_C00000400"
var l1,l2,l3,s,area:numerico
inicio
escreval("Os Valores dos 3 lados do triangulo so:")
leia (l1,l2,l3)
se ((l1<l2+l3)e(l2<l1+l3)e(l3<l2+l1)) entao
s<-(l1+l2+l3)/2
area<-raizq(s*(s-l1)*(s-l2)*(s-l3))
escreval(" A area do triangulo :",area)
senao
escreval(-1)
fimse
fimalgoritmo
C00000410 - Faa um algoritmo que leia 3 valores l1,l2 e l3 e verifique se
formam um tringulo e, se formarem, o tipo de tringulo formado, escreva: 0 - se
no formarem tringulo; 1 - se formarem um tringulo equilatero (os trs lados
so iguais); 2 - se formarem um tringulo issceles (dois lados iguais e um
diferente); 3 - se formarem um tringulo escaleno (3 lados diferentes)
C00000450 - Faa um algoritmo que implemente uma calculadora de 4 operaes. O
algoritmo deve ler, nessa ordem: o primeiro operando, o operador (+,-,*,/) e o
segundo operando, e deve escrever o resultado da operao. Por exemplo, se o
usurio digitar 2,+,3 o algoritmo deve escrever 5. Dica: Para que uma varivel
possa receber um texto (mesmo que seja apenas o caracter "+") ela deve ser
declarada como "literal".
algoritmo "C001_C00000450"
var a,b,resultado:numerico
op:literal
inicio
escreval("Os valores de A, operador e B so:")
leia (a,op,b)
se (op="+") entao
resultado<-a+b
senao se (op="-") entao
resultado<-a-b
senao se (op="*") entao
resultado<-a*b
senao se (op="/") entao
resultado<-a/b
fimse
fimse
fimse
fimse
escreval("O resultado :", resultado)
fimalgoritmo
C00000460 - Faa um algoritmo que leia um literal contendo uma expresso com 3
caracteres, onde o primeiro caractere um dgito entre 0 e 9, o segundo um
operador (+,-,*,/) e o terceiro caractere um dgito entre 0 e 9, e efetue o
clculo da expresso escrevendo o resultado. Dica:Use a funo subliteral para
separar os 3 caracteres e a funo val para converter os operandos em seus
valores numricos.
algoritmo "C001_C00000460"
var lit,op1,op2,op:literal
n1,n2:inteiro
inicio
leia(lit)
op1<-subliteral(lit,1,1)
op<-subliteral(lit,2,1)
op2<-subliteral(lit,3,1)
se val(op1,n1)=falso ou val(op2,n2)=falso
entao escreva("Expresso invlida")
senao
se op="+" entao escreva(n1+n2)
senao se op="-" entao escreva(n1-n2)
senao se op="/" entao escreva(n1/n2)
senao escreva(n1*n2)
fimse
fimse
fimse
fimse
fimalgoritmo
C00000500 - Faa um algoritmo que leia 3 notas de um aluno e escreva sua mdia
harmnica. Dica: A mdia harmnica entre trs valores N1, N2 e N3 calculada
pela expresso 3/(1/N1+1/N2+1/N3). O que acontece se alguma das notas for igual
a 0? Que resultado o algoritmo deve emitir?
algoritmo "C001_C00000500"
var n1,n2,n3:real
inicio
leia(n1,n2,n3)
se n1=0 ou n2=0 ou n3=0
entao escreva(0)
senao escreva(3/(1/n1+1/n2+1/n3))
fimse
fimalgoritmo
C00000600 - Faa um algoritmo que leia 3 notas de um aluno e escreva sua mdia
harmnica. Se o aluno obteve mdia abaixo de 6.0, E SOMENTE NESSE CASO, leia uma
quarta nota (da prova de recuperao) e substitua a menor das trs notas pela
nota da recuperao e recalcule a mdia harmnica. Escreva a mdia harmnica
final e o conceito obtido (0, se mdia harmnica (MH) < 6.0; 1 se 6.0 <= MH
<7.0; 2 se 7.0 <= MH < 8.0; 3 se 8.0 <= MH < 9.0; 4 se MH>=9.0).
algoritmo "C001_C00000600"
var n1,n2,n3,media1,media2,media3,aux,mediaharmonica,recuperacao:real
inicio
escreval("Digite as tres notas de um aluno")
leia(n1,n2,n3)
Se n1=0 ou n2=0 ou n3=0
entao mediaharmonica<-0
senao
media1<-1/n1
media2<-1/n2
media3<-1/n3
mediaharmonica<- 3/(media1+media2+media3)
fimse
se mediaharmonica<6
entao escreval("Digite a nota da recuperacao")
leia(recuperacao)
se n1>n2
entao aux<-n1
n1<-n2
n2<-aux
fimse
se n1>n3
entao aux<-n3
n1<-n3
n3<-aux
fimse
Se recuperacao=0 ou n2=0 ou n3=0
entao mediaharmonica<-0
senao
media1<-1/recuperacao
media2<-1/n2
media3<-1/n3
mediaharmonica<- 3/(media1+media2+media3)
fimse
fimse
se mediaharmonica<6
entao escreval("A mdia harmonica ", mediaharmonica,"O aluno foi reprovado, o
conceito obtido ",0)
senao se mediaharmonica>=6 e mediaharmonica<7
entao escreval("a media harmonica ",mediaharmonica,"O conceito obtido
",1)
senao se mediaharmonica>=7 e mediaharmonica<8
entao escreval("a media harmonica ",mediaharmonica,"O
conceito obtido ",2)
senao se mediaharmonica >=8 e mediaharmonica<9
entao escreval("a media harmonica
",mediaharmonica,"O conceito obtido ",3)
senao se mediaharmonica>=9
entao escreval("a media harmonica
",mediaharmonica,"O conceito obtido ",4)
fimse
fimse
fimse
fimse
fimse
fimalgoritmo
C00000625 - Faa um algoritmo que leia os cdigos e as votaes dos 5 candidatos
da eleio para presidente em 1o turno. O algoritmo deve escrever, para cada
candidato, seu cdigo e seu percentual de votos. Se a eleio foi decidida no 1o
turno, i.e., um candidato obteve 50% dos votos vlidos + 1, o algoritmo deve
escrever o cdigo e o percentual de votos do eleito. Em caso contrrio, o
algoritmo deve escrever os cdigos e os percentuais de votos dos dois candidatos
que disputaro o segundo turno.
algoritmo "C004_C00000625"
var c1,v1,c2,v2,c3,v3,c4,v4,c5,v5,soma,aux1:inteiro
p1,p2,p3,p4,p5,aux:real
inicio
leia(c1,v1,c2,v2,c3,v3,c4,v4,c5,v5)
soma<-v1+v2+v3+v4+v5
p1<-(v1/soma)*100
p2<-(v2/soma)*100
p3<-(v3/soma)*100
p4<-(v4/soma)*100
p5<-(v5/soma)*100
escreva(c1," ",p1," ",c2," ",p2," ",c3," ",p3," ",c4," ",p4," ",c5," ", p5)
se p1>50 ou p2>50 ou p3>50 ou p4>50 ou p5>50
entao
se p1>50
entao
escreva(" ",c1," ",p1)
fimse
se p2>50
entao
escreva(" ",c2," ",p2)
fimse
se p3>50
entao
escreva(" ",c3," ",p3)
fimse
se p4>50
entao
escreva(" ",c4," ",p4)
fimse
se p5>50
entao
escreva(" ",c5," ",p5)
fimse
senao
se p1>p2
entao
aux1<-c1
c1<-c2
c2<-aux1

aux<-p1
p1<-p2
p2<-aux
fimse
se p2>p3
entao
aux1<-c2
c2<-c3
c3<-aux1

aux<-p2
p2<-p3
p3<-aux
fimse

se p3>p4
entao
aux1<-c3
c3<-c4
c4<-aux1

aux<-p3
p3<-p4
p4<-aux
fimse
se p4>p5
entao
aux1<-c4
c4<-c5
c5<-aux1

aux<-p4
p4<-p5
p5<-aux
fimse

se p1>p2
entao
aux1<-c1
c1<-c2
c2<-aux1

aux<-p1
p1<-p2
p2<-aux
fimse
se p2>p3
entao
aux1<-c2
c2<-c3
c3<-aux1

aux<-p2
p2<-p3
p3<-aux
fimse

se p3>p4
entao
aux1<-c3
c3<-c4
c4<-aux1

aux<-p3
p3<-p4
p4<-aux
fimse
escreva(" ",c5," ",p5," ",c4," ",p4)


fimse
fimalgoritmo
C00000650 - Faa um algoritmo que leia 3 notas de um aluno e escreva sua mdia
harmnica (MH). Caso alguma das notas seja 0 (zero), MH deve receber 0 (zero).
Se o aluno obteve uma MH abaixo de 6.0 e AINDA PUDER OBTER mdia igual ou
superior a 6.0, o algoritmo deve ler uma quarta nota (da prova de recuperao)
e substituir a menor das trs notas pela nota da recuperao, recalculando MH. O
algoritmo deve escrever a MH final e o conceito obtido (0, se MH < 6.0; 1 se 6.0
<= MH <7.0; 2 se 7.0 <= MH < 8.0; 3 se 8.0 <= MH < 9.0; 4 se MH>=9.0).
Dica:No caso do aluno ter obtido mdia inferior a 6.0, uma forma de verificar se
ele pode alcanar mdia 6.0 atravs da prova de recuperao substituindo a
menor nota por 10 e verificando se a MH resultante igual ou superior a 6.0.
algoritmo "C001_C00000500"
var n1,n2,n3,n4,m1,m2,m3,media,mx:real
inicio
leia(n1,n2,n3)
se n1=0 ou n2=0 ou n3=0
entao media<-0
senao media<-3/(1/n1+1/n2+1/n3)
fimse
se media<6
entao m1<-n1 m2<-n2 m3<-n3
se n1<=n2 e n1<=n3
entao n1<-10
senao se n2<=n1 e n2<=n3
entao n2<-10
senao n3<-10
fimse
fimse
se n1>0 e n2>0 e n3>0
entao mx<- 3/(1/n1+1/n2+1/n3)
senao mx<-0
fimse
n1<-m1 n2<-m2 n3<-m3
se mx>=6
entao
leia(n4)
se n1<=n2 e n1<=n3
entao n1<-n4
senao se n2<=n1 e n2<=n3
entao n2<-n4
senao n3<-n4
fimse
fimse
se n1=0 ou n2=0 ou n3=0
entao media<-0
senao media<-3/(1/n1+1/n2+1/n3)
fimse
fimse
fimse
escreva(media)
se media<6
entao escreva(0)
senao se media <7
entao escreva(1)
senao se media<8
entao escreva(2)
senao se media<9
entao escreva(3)
senao escreva(4)
fimse
fimse
fimse
fimse
fimalgoritmo
C00000660 - Faa um algoritmo que leia 4 valores, Hi, Mi, Hf, Mf, representando
respectivamente a hora e minuto inicial e final de um evento, e calcule a
durao do mesmo em horas e minutos. Considere que o evento pode iniciar em um
dia e terminar no dia seguinte.
C00000700 - As tarifas de um estacionamento so definidas assim: A primeira e a
segunda hora custam 5 reais cada. A terceira e a quarta hora custam 2 reais
cada. A partir da quinta hora, cada hora custa 1 real cada. Assim, se um carro
ficar 5 horas no estacionamento, o motorista pagar 15 reais (5+5+2+2+1). Faa
um algoritmo que leia dois valores He e Hs, respectivamente a hora de entrada e
sada no estacionamento (horas inteiras, sem minutos), e escreva o valor a ser
pago. Considere que o
C00000750 - Faa um algoritmo que leia, para duas barras de ouro, o seu peso e
seu valor. O algoritmo deve ler tambm o limite de peso de uma mochila, e
verificar e escrever que barra (s) devem ir na mochila de modo a maximizar o
valor dentro dela, sem exceder seu limite de peso. O algoritmo deve escrever:
0 - Se nenhuma das barras puder ser colocada na mochila sem exceder o limite de
peso
1 - Se apenas a barra 1 puder ir na mochila
2 - Se apenas a barra 2 puder ir na mochila
3 - Se ambas as barras puderem ir na mochila simultaneamente
algoritmo "C001_C00000750"
var p1,v1,p2,v2,ps:real
inicio
leia(p1,v1,p2,v2,ps)
se p1+p2<=ps
entao escreva(3)
senao se p1>ps e p2>ps
entao escreva(0)
senao se p1<=ps e p2>ps
entao escreva(1)
senao se p2<=ps e p1>ps
entao escreva(2)
senao se v1>=v2
entao escreva(1)
senao escreva(2)
fimse
fimse
fimse
fimse
fimse
fimalgoritmo
C00000800 - Faa um algoritmo que leia 4(quatro) valores e escreva os 3 (tres)
maiores em ordem decrescente. Considere que podem ocorrer valores iguais.
C00000810 - O nmero 3025 tem a seguinte caracterstica: 30+25=55 e 55^2=3025.
Faa um algoritmo que leia um nmero de quatro dgitos e verifique se tem essa
caracterstica, escrevendo:
0 - se no tem essa caracterstica;
1 - se tem essa caracterstica.
algoritmo "C001_C00000810"
var a,b,N:inteiro
inicio
leia(N)
a<-N\100
b<-N%100
a<-a+b
se a^2=N entao escreva(1)
senao escreva(0)
fimse
fimalgoritmos
C00000850 - Faa um algoritmo que leia as trs dimenses (largura, comprimento e
altura) de duas caixas, e verifique se a primeira caixa pode ser colocada dentro
da segunda, escrevendo 1 se possvel coloc-la, e 0 se no possvel.
Considere que as caixas no podem ser rotacionadas em nenhuma direo.
Dica: Para que uma caixa caiba na outra, cada dimenso dela deve ser menor (no
pode ser igual ou maior) que a dimenso correspondente na segunda caixa
C00000860 - Faa um algoritmo que leia as trs dimenses (largura, comprimento e
altura) de duas caixas, e verifique se a primeira caixa pode ser colocada dentro
da segunda, escrevendo 1 se possvel coloc-la, e 0 se no possvel.
Considere que as caixas podem ser rotacionadas em qualquer direo.
algoritmo
var l1,c1,a1,l2,c2,a2:real
inicio
leia(l1,c1,a1,l2,c2,a2)
se (l1<l2 e c1<c2 e a1<a2) ou
(l1<l2 e c1<a2 e a1<c2) ou
(l1<a2 e c1<c2 e a1<l2) ou
(l1<a2 e c1<l2 e a1<c2) ou
(l1<c2 e c1<l2 e a1<a2) ou
(l1<c2 e c1<a2 e a1<l2)
entao escreva(1)
senao escreva(0)
fimse
fimalgoritmos
C00000865 - Uma fbrica produz um recipiente de plstico com sua tampa (tambm
de plstico). Ambos os componentes utilizam o mesmo equipamento para fabricao
(ou seja, no podem ser fabricados ao mesmo tempo). A fabricao do recipiente
consome duas horas; a fabricao a tampa consome meia hora. Um cliente deseja o
mximo de recipientes (com tampa) para 10 dias. A fbrica trabalha 24 horas/dia
e j dispe de uma quantidade r de recipientes e t de tampas em seu estoque (no
necessariamente iguais). Faa um algoritmo que leia os valores de r e t e
informe o mximo de conjuntos recipiente-tampa que ela pode fornecer em 10 dias.
Dica:Considere 3 casos: os nmeros de recipientes e de tampas no estoque so
iguais; os nmeros de recipientes e de tampas no estoque so diferentes e H
tempo para igual-los; os nmeros de recipientes e de tampas no estoque so
diferentes e NO H tempo para igual-los (para as duas ltimas situaes, deve-
se analisar separadamente o que h a mais).
algoritmo "C001_C00000865"
var r,t,vm,tr:real
inicio
escreva ("escreva o nmero de recipientes e tampas")
leia (r,t)
se r=t
entao vm <- (r+96)
senao se r<t
entao se (t-r)<=120
entao
tr <- 240-((t-r)*2)
vm <- t + (2*tr/5)
senao vm <- 120 + r
fimse
senao se (r-t)<=480
entao tr <- 240-((r-t)/2)
vm <- r + (2*tr/5)
senao vm <- 480 + t
fimse
fimse
fimse
escreva("O Valor mximo de produtos "," ",vm)
fimalgoritmo
C00000866 - Faa um algoritmo que leia a data de nascimento de uma pessoa e a
data atual (cada data com dia, ms e ano). O algoritmo deve escrever 1 se a
pessoa maior de idade, e 0 se ela menor de idade (maioridade: 18 anos).
C00000900 - Faa um algoritmo que leia para um trabalhador o valor que ganha por
hora, a hora de entrada e a hora de sada (valores inteiros, sem minutos) e
calcule quanto ele ganhou pelo turno. Considere que ele entra e sai no mesmo
dia.
C00001000 - Faa um algoritmo que leia para um trabalhador o valor que ganha por
hora, a hora de entrada e a hora de sada (valores inteiros, sem minutos) e
calcule quanto ele ganhou pelo turno. Considere que ele entra e sai no mesmo
dia, e que as horas a partir das 20:00 valem 20% a mais (adicional noturno).
C00001100 - Faa um algoritmo que leia para um trabalhador o valor que ganha por
hora, a hora de entrada e a hora de sada (valores inteiros, sem minutos) e
calcule quanto ele ganhou pelo turno. Considere que ele entra e sai no mesmo
dia, e que as horas antes das 6:00 da manh e a partir das 20:00 valem 20% a
mais (adicional noturno).
C00001200 - Faa um algoritmo que leia para um trabalhador o valor que ganha por
hora, a hora de entrada e a hora de sada (valores inteiros, sem minutos) e
calcule quanto ele ganhou pelo turno. Considere que ele pode entrar em um dia e
sair no outro, mas que o total de horas trabalhadas no excede 23 horas.
C00001250 - Faa um algoritmo que leia para um trabalhador o valor que ganha por
hora, a hora de entrada e a hora de sada (valores inteiros, sem minutos) e
calcule quanto ele ganhou pelo turno. Considere que ele pode entrar em um dia e
sair no dia seguinte, e que se ele permanecer mais do que 8 horas, as duas horas
a partir da nona hora valem 20% a mais, e as horas a partir da dcima primeira
hora valem 50% a mais (horas extras).
C00001300 - Faa um algoritmo que leia para um trabalhador o valor que ganha por
hora, a hora de entrada e a hora de sada (valores inteiros, sem minutos) e
calcule quanto ele ganhou pelo turno. Considere que ele pode entrar em um dia e
sair no outro, mas que o total de horas trabalhadas no excede 23 horas.
Considere que as horas a partir das 20:00 valem 20% a mais (adicional noturno).
C00001400 - Faa um algoritmo que leia para um trabalhador o valor que ganha por
hora, a hora de entrada e a hora de sada (valores inteiros, sem minutos) e
calcule quanto ele ganhou pelo turno. Considere que ele pode entrar em um dia e
sair no outro, mas que o total de horas trabalhadas no excede 23 horas.
Considere tambm que as horas antes das 6:00 da manh e a partir das 20:00 valem
20% a mais (adicional noturno).
C00001500 - Faa um algoritmo que leia 5 valores entre 1 e 6, j ordenados,
correspondente ao arremesso de 5 dados no jogo do general, e escreva:
1 - Se os 5 valores s o iguais
2 - Se h 4 valores iguais e um diferente
3 - Se os 5 valores formam uma sequncia (1,2,3,4,5 ou 2,3,4,5,6)
4 - Se os valores formam um full-hand (3 valores iguais entre si, e os outros
dois valores tambm iguais entre si)
5 - Nenhuma das combinaes acima
C00001550 - Faa um algoritmo que leia trs valores Dia, Ms e Ano, e verifique
se formam uma data vlida. O algoritmo deve escrever 1 se a data for vlida, 0
em caso contrrio. Considere que ano bissexto aquele divisvel por 4 e que
abril, junho, setembro e novembro tem 30 dias, fevereiro tem 28 (29 em ano
bissexto) e todos os outros meses tem 31 dias.
C00001600 - Faa um algoritmo que leia a data de nascimento de uma pessoa e a
data atual, cada uma com dia, ms e ano, e escreva quantos anos completos a
pessoa tem.
C00001700 - Escreva um algoritmo que leia duas datas, cada uma composta de Dia,
Ms e Ano, e as escreva em ordem cronolgica crescente. Ex:se as datas so
01/04/2000 e 17/05/1988, o algoritmo deve escrever 17/05/1988 01/04/2000.
C00001750 - Escreva um algoritmo que leia trs datas, cada uma composta de Dia,
Ms e Ano, e as escreva em ordem cronolgica crescente. Ex:se as datas so
01/04/2000, 17/05/1988 e 23/10/1969, o algoritmo deve escrever 23/10/1969
17/05/1988 01/04/2000.
C00001790 - Escreva um algoritmo que leia uma data, composta por dia, ms e ano,
e verifique se a data corresponde ao ltimo dia do ms, escrevendo 1, se for o
ltimo dia do ms, e 0 se no for o ltimo dia do ms. Considere, para
simplificar o problema, que ano bissexto aquele divisvel por 4, e que
fevereiro tem 28 dias (29 em ano bissexto), setembro, abril, junho e novembro
tm 30 dias e todos os outros meses tem 31 dias.
C00001800 - Escreva um algoritmo que leia uma data, composta por dia, ms e ano,
e escreva a data correspondente ao dia seguinte. Considere, para simplificar o
problema, que ano bissexto aquele divisvel por 4, e que fevereiro tem 28 dias
(29 em ano bissexto), setembro, abril, junho e novembro tm 30 dias e todos os
outros meses tem 31 dias.
C00001850 - Escreva um algoritmo que leia uma data, composta por dia, ms e ano,
e escreva quantos dias passaram-se desde o incio do ano. Considere, para
simplificar o problema, que ano bissexto aquele divisvel por 4, e que
fevereiro tem 28 dias (29 em ano bissexto), setembro, abril, junho e novembro
tm 30 dias e todos os outros meses tem 31 dias.
C00001900 - Para enviar uma carta so necessrios um selo e um envelope. O selo
custa 12 centavos e o envelope custa 5 centavos. Faa um algoritmo que leia uma
quantia inicial de selos, envelopes e centavos, e escreva o nmero de cartas que
podem ser enviadas com esses selos, envelopes e centavos (utilizando-os para
comprar mais selos e envelopes). Considere que no possvel converter selos ou
envelopes em dinheiro.
C00001925 - Para enviar uma carta so necessrios um selo e um envelope. O selo
custa 12 centavos e o envelope custa 5 centavos. Faa um algoritmo que leia uma
quantia inicial de selos, envelopes e dinheiro (em reais), e escreva o nmero de
cartas que podem ser enviadas com esses selos, envelopes e centavos (utilizando-
os para comprar mais selos e envelopes). Escreva tambm, nessa ordem, a
quantidade de selos, envelopes e dinheiro (em centavos), que restar aps
enviadas as cartas. Considere que no possvel converter selos ou envelopes em
dinheiro.
C00001950 - Uma fbrica produz um recipiente de plstico com sua tampa (tambm
de plstico). Ambos os componentes utilizam o mesmo equipamento para fabricao
(ou seja, no podem ser fabricados ao mesmo tempo). A fabricao do recipiente
consome duas horas; a fabricao da tampa consome meia hora. Um cliente deseja
o mximo de recipientes (com tampa) para 10 dias. A fbrica trabalha 24
horas/dia e j dispe de uma quantidade r de recipientes e t de tampas em seu
estoque (no necessariamente iguais). Faa um algoritmo que leia os valores de r
e t e informe o mximo de conjuntos recipiente-tampa que ela pode fornecer em 10
dias.
C00002000 - Em uma empresa existem 5 faixas de horrios 0-8 8-12 12-14 14-18
18-24, nas faixas 0-8 12-14 18-24 o valor pago por hora trabalhada dobrado.
Faa um algoritmo que leia o valor ganho por hora pelo funcionrio, a hora de
entrada e a hora de sada, e calcule e escreva o salrio deste empregado.
Considere que ele entra e sai no mesmo dia.
C00002001 - Em uma empresa existem 5 faixas de horrios 0-8 8-12 12-14 14-18
18-24, nas faixas 0-8 12-14 18-24 o valor pago por hora trabalhada dobrado.
Faa um algoritmo que leia o valor que o funcionrio ganha por hora, a hora de
entrada e a hora de sada, calcule e escreva o salrio deste empregado. (Pode
entrar em um dia e sair no outro, mas no pode trabalhar mais de 23 horas)
C00002100 - A distncia entre dois pontos definidos pelas coordenadas (X1,Y1) e
(X2,Y2) dada por raizq((X1-X2)^2+(Y1-Y2)^2). Faa um algoritmo que leia 8
valores representando as coordenadas X e Y de 4 pontos e verifique se os pontos
formam um quadrado, escrevendo:
1 - se formam um quadrado;
0 - se no formam.
Considere que os pontos so lidos no sentido horrio, seguindo o permetro do
quadrado.
C00002150 - Faa um algoritmo que leia oito valores correspondentes s
coordenadas dos quatro vrtices de um quadriltero convexo no espao cartesiano
(X0,Y0, X1,Y1, X2,Y2, X3,Y3). O algoritmo deve identificar o tipo de polgono
formado escrevendo: 1 - se os 4 pontos formam um quadrado. 2 - se formam um
retngulo; 3 - se formam um losango; 4 - se formam um paralelograma; 5 - se
formam um papagaio (2 pares de lados adjacentes iguais. Ex: lados de tamanhos
3,3,4 e 4); 6 - se no formam nenhum dos anteriores. A distncia (tamanho dos
lados) entre dois pontos quaisquer (Xi,Yi) e (Xj,Yj) pode ser obtida atravs da
frmula distXiYiXjYj = raizq((Xi-Xj)^2 + (Yi-Yj)^2). Por exemplo, se os pontos
lidos foram (3,2), (0,5), (3,8) e (6,5), a figura formada um quadrado e o
algoritmo escreve 1. Para que a figura seja um quadrado, os comprimentos das
duas diagonais devem ser iguais, bem como os 4 lados. Se os pontos lidos foram
(4,2), (1,4), (4,6) e (7,4), a figura formada um losango. Se os pontos lidos
foram (2,3), (0,5), (3,8) e (5,6), a figura formada um retngulo. Se os pontos
lidos foram (7,3), (0,3), (2,5) e (5,5), a figura formada um trapzio e o
algoritmo escreve 6 (ao menos um lado diferente dos demais). Os pontos so
fornecidos em sentido horrio ao longo do permetro do quadriltero.
C00003000 - Escreva um algoritmo que leia dois valores D e DS, correspondentes a
um dia do mes, e ao dia da semana que corresponde a ele (1-domingo 2-segunda 3-
tera 4-quarta 5-quinta 6-sexta 7-sbado). Calcule e escreva em que dia da
semana caiu o dia primeiro do ms do dia digitado.
Exemplo: dia 10 no ms e 3 (tera) na semana. Resposta 1 (domingo)
Exemplo: dia 30 no ms e 4 (quarta) na semana. Resposta 3 (tera feira)
C00003100 - Faa um algoritmo que leia as dimenses (altura, largura e
profundidade) de duas caixas e verifique se a primeira caixa pode ser colocada
dentro da segunda. Considere que as caixas podem ser rotacionadas em qualquer
direo. Se a primeira caixa couber dentro da segunda escreva 1, caso contrrio
escreva 0.
C00003200 - Faa um algoritmo que leia dois nmeros de trs dgitos cada um, e
verifique se possuem os mesmos dgitos. Considere que pode haver dgitos
repetidos em um nmero, e que a cada dgito de um nmero deve corresponder
exatamente um dgito do outro nmero. Assim, os nmeros 221 e 112 no tem os
mesmos dgitos, porque apesar de ambos terem somente os dgitos 1 e 2, aos dois
dgitos 2 do primeiro nmero corresponde o mesmo dgito no segundo nmero. O
algoritmo deve escrever 1, caso os nmeros tenham os mesmos dgitos, e 0 em caso
contrrio.
C00003250 - Faa um algoritmo que leia um nmero de trs dgitos e escreva o
maior nmero que possui os mesmos dgitos do nmero lido. Se um dgito aparecer
repetido no nmero lido, deve ser repetido o mesmo nmero de vezes no nmero
gerado.
C00003300 - Faa um algoritmo que leia 4 valores X1,Y1,X2,Y2, correspondendo s
coordenadas do canto inferior esquerdo e canto superior direito de uma regio
retangular no plano. Leia a seguir dois valores X,Y correspondendo a um ponto no
plano e escreva: 0 - Se o ponto est fora da regio retangular; 1 - Se o ponto
est dentro da regio retangular; 2 - Se o ponto est exatamente na borda da
regio retangular.
C00003400 - Faa um algoritmo que leia um nmero de 8 dgitos e verifica se ele
palndromo. Ou seja, se a leitura da direita para a esquerda igual a leitura
da esquerda para a direita. Escrever 0 se for palndromo e 1 se no for.
C00003500 - Um nmero primo se divisvel somente por ele mesmo e por 1. Faa
um algoritmo que leia um nmero inteiro entre 2 e 100 e determine se ele ou
no um nmero primo escrevendo 1, se for primo, e 0 em caso contrrio.
C00003600 - Faa um algoritmo que leia 6 valores inteiros e escreva ao final a
quantidade de valores mpares lidos, e a soma dos valores pares lidos.
C0003650 - A locadora S Filmassos classifica os filmes em "lanamentos" e
"acervo", sendo que a diria do lanamento 5 reais e a diria do acervo 3
reais. A locadora est com uma promoo, ao locar 2 lanamentos o cliente tem
direito a um filme de acervo grtis. Faa um algoritmo que leia a quantidade de
lanamentos e a quantidade de filmes de acervo a serem locados, e calcule o
valor (mnimo) a ser pago.
C00003700 - A locadora S Filmassos classifica os filmes em "lanamentos" e
"acervo", sendo que a diria do lanamento 5 reais e a diria do acervo 3
reais. A locadora est com uma promoo, ao locar 2 lanamentos o cliente tem
direito a um filme grtis, podendo ser de acervo ou lanamento. Faa um
algoritmo que leia a quantidade de lanamentos e a quantidade de filmes de
acervo a serem locados, e calcule o valor (mnimo) a ser pago.
Iterativos
I00000100 - Faa um algoritmo que escreva os nmeros 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 - Faa um algoritmo que escreva todos os nmeros 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 - Faa um algoritmo que escreva todos os nmeros entre 1 e 200 que so
mltiplos 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 - Faa um algoritmo que leia 10 nmeros e escreva os que forem pares.
Dica: Um nmero inteiro par se o resto da sua diviso 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 - Faa um algoritmo que leia nmeros at que seja digitado um nmero
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 - Faa um algoritmo que leia 30 valores e conte quantos esto no
intervalo [10,20], escrevendo ao final essa informao.
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
Faa um algoritmo que leia 30 valores e conte quantos esto em cada um dos
intervalos [0,25],(25,50], (50,75], (75..100], escrevendo ao final essa
informao.
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 - Faa um algoritmo que leia um valor N. Escreva a seguir os nmeros
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 - Faa 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 - Faa 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 - Faa um algoritmo que leia um valor N, e conte quantos divisores
possui, escrevendo ao final essa informao.
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 - Faa 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 - Faa 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 - Faa 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 nmero inteiro maior do que 1 primo se ele possui como
divisores somente o 1 e ele mesmo. Faa um algoritmo que leia um nmero e
verifique se primo escrevendo: 1 - se o nmero primo; 0 - se o nmero no
primo. Dica:Pode-se tambm verificar se um nmero primo encontrando seu
primeiro divisor maior que 1. Se o primeiro divisor for o prprio nmero, 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 nmeros n1 e n2 so ditos amigos entre si se a soma dos
divisores de n1 (excluindo o prprio n1) igual a n2, e a soma dos divisores de
n2 (excluindo o prprio n2) igual a n1. Ex: 220 e 284. Faa um algoritmo que
leia 2 valores e verifique se so amigos entre si escrevendo: 1 - se so amigos;
0 - se no so 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 - Faa um algoritmo que leia 10 nmeros 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 - Faa um algoritmo que leia 10 nmeros, 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 - Faa um algoritmo que leia 10 nmeros 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 - Faa um algoritmo que leia um valor n (n>=1) correspondente ao
nmero de alunos de uma turma. Aps, o algoritmo l as notas das provas dos n
alunos dessa turma. As notas devero ser lidas at que sejam informadas n notas
vlidas, ou seja, no intervalo [0, 10], descartando as notas fora desse
intervalo. As notas somente podero 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 no , 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)
se n=1
entao
cont2 <- 1
escreva("Digite a nota")
leia(menor)
senao repita
escreval("Digite a nota")
leia(menor)
ate menor>=0 E menor<=10
cont1 <- 1
cont2 <- 1
repita
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
ate cont1=n
fimse
porcent <- (cont2/n)*100
escreva(menor,",",porcent)
fimalgoritmo
I00001700 - Faa 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 relao
peso/(altura^2). Faa 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 - Faa um algoritmo que leia o cdigo e a votao de cada um dos
candidatos a uma vaga no senado, at que o cdigo digitado seja 0 (no dever
ser lida a votao neste caso). O algoritmo deve escrever os cdigos e as
votaes dos dois senadores eleitos (assuma que no havero trs candidatos com
igual votao e que seja a maior votao).
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 - Faa um algoritmo que leia 10 nmeros 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<-1
rn<-raizq(n)
repita
i<-i+1
ate n%i=0 ou i>rn
se i>rn
entao escreva(n)
fimse
fimpara
fimalgoritmo
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 - Faa um algoritmo que escreva os 50 primeiros nmeros 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 - Faa um algoritmo que leia 2 nmeros N1 e N2 e escreva a soma dos
nmeros 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 - Faa um algoritmo que leia 2 nmeros N1 e N2 e escreva o produto dos
nmeros 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 - Faa um algoritmo que leia um nmero N e escreva os N primeiros
nmeros primos maiores que 100.
algoritmo
var n,i,cont,quant:inteiro
inicio
leia(quant)
n<-101
repita
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
ate quant=0
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 - Faa um algoritmo que leia um nmero inteiro N e escreva o maior
nmero primo menor do que N.
algoritmo "I001_I00002250"
var N,d:inteiro
inicio
leia(N)
repita
d<-1
N<-N-1
repita
d<-d+1
ate n%d=0
ate n=d
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 - Faa um algoritmo que leia um nmero inteiro N e escreva o menor
nmero primo maior do que N.
algoritmo "I001_I00002260"
var N,d:inteiro
inicio
leia(N)
repita
N<-N+1
d<-2
enquanto N%d<>0 faca
d<-d+1
fimenquanto
ate d=N
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 nmero primo um nmero natural maior que 1, que divisvel
somente por 1 e por ele mesmo. Faa um algoritmo que leia um nmero inteiro N e
escreva o nmero mais prximo a ele. Se N for primo, considere que o mais
prximo o prprio N. Se houver dois nmeros mesma distncia, escreva os dois
em ordem crescente.
algoritmo "I001_I00002270"
var N,A,B,i,fim:inteiro
inicio
leia(N)
i<-1
repita
i<-i+1
ate N%i=0
se N=i
entao escreva(N)
senao fim<-0
A<-N-1
B<-N+1
repita
se A>1
entao i<-1
repita
i<-i+1
ate A%i=0
se i=A
entao escreva(A)
fim<-1
fimse
fimse
se B>1
entao i<-1
repita
i<-i+1
ate B%i=0
se i=B
entao escreva(B)
fim<-1
fimse
fimse
A<-A-1
B<-B+1
ate fim=1
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 nmero par maior que 2 pode
ser representado como a soma de dois nmeros primos. Assim, 4=2+2, 6=3+3,
8=3+5... Faa um algoritmo que leia um nmero N, par, e escreva, em ordem
crescente, os dois nmeros primos que o compem. No caso de haver mais de um par
de nmeros (p.ex:20=3+17 e 20=7+13) escreva o par que tiver o menor nmero
primo.
algoritmo "I001_I00002280"
var d1,d2,achei,i,n:inteiro
inicio
leia(n)
d1<-2
achei<-0
repita
i<-1
repita
i<-i+1
ate d1%i=0
se d1=i
entao d2<-n-d1
i<-1
repita
i<-i+1
ate d2%i=0
se d2=i entao
escreva(d1,d2)
achei<-1
fimse
fimse
d1<-d1+1
ate achei=1
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 nmero perfeito o nmero que igual soma de seus divisores,
exceto o prprio nmero (ex: 6 = 1 + 2 + 3. Faa um algoritmo que leia 10
nmeros e verifique para cada um se perfeito ou no, escrevendo: 1 - se o
nmero perfeito; 0 - se o nmero no 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 - Faa um algoritmo que leia, para um funcionrios: o valor que ganha
por hora e 30 pares de valores (hora de entrada e hora de sada, inteiros, sem
minutos) e calcule o quanto ganhou no ms. O funcionrio no pode trabalhar mais
de 23 horas seguidas e pode iniciar em um dia e terminar no dia seguinte. Para o
funcionrio deve ser escrito o quanto ganhou no ms.
I00002400 - Faa um algoritmo que leia, para um nmero no determinado de
funcionrios, seu cdigo (inteiro), o valor que ganha por hora e 30 pares de
valores (hora de entrada e hora de sada, inteiros, sem minutos) e calcule o
quanto ganhou no ms. O funcionrio no pode trabalhar mais de 23 horas seguidas
e pode iniciar em um dia e terminar no dia seguinte. Para cada funcionrio deve
ser escrito seu cdigo e o quanto ganhou no ms. O algoritmo termina ao ser
digitado um cdigo igual a -1 (aps o que, no 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 srie de fibonacci uma sequncia de nmeros que inicia por 0 e
1, e a partir do terceiro valor cada nmero dado pela soma dos dois
anteriores. Assim, os 10 primeiros termos da srie so: 0, 1, 1, 2, 3, 5, 8, 13,
21, 34. Faa um algoritmo que escreva os 100 primeiros termos da srie 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 sequncia de Fibonacci formada pelos nmeros: 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; ...
Faa um algoritmo que leia um nmero (N) e escreva o ensimo nmero da srie 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 sequncia de fibonacci uma sequncia de nmeros que inicia por 0
e 1, e a partir do terceiro valor cada nmero dado pela soma dos dois
anteriores. Assim, os 10 primeiros termos da srie so: 0, 1, 1, 2, 3, 5, 8, 13,
21, 34. Faa um algoritmo que escreva entre os 20 primeiros termos da srie de
fibonacci apenas os que so 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 (mximo divisor comum) entre dois nmeros n1 e n2 o maior
nmero que divisor de n1 e de n2. Faa um algoritmo que leia dois nmeros 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 nmero N (representado por N!) o produto de todos
os nmeros de 1 a N. Assim, 4! = 1 x 2 x 3 x 4 = 24. Faa um algoritmo que leia
um nmero 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 nmero de combinaes de N diferentes objetos em grupos de P
objetos, dado por N!/(P!(N-P)!). Faa 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 - Faa 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 (mnimo mltiplo comum) entre dois nmeros n1 e n2 o menor
nmero que mltiplo de n1 e de n2. Faa um algoritmo que leia dois nmeros 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 - Faa um algoritmo que leia um nmero N e efetue sua fatorao,
escrevendo os fatores que o compem. 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
repita
se n%d=0
entao escreva(d)
n<-n\d
senao d<-d+1
fimse
ate n=1
fimalgoritmo
I00003050 - Faa um algoritmo que leia um nmero e escreva seus dgitos na ordem
contrria em que aparecem no nmero. Por exemplo, se o numero lido foi 32417, o
algoritmo escreve 7,1,4,2,3.
I00003100 - Faa um algoritmo que leia 10 nmeros e para cada um escreva a soma
dos seus dgitos formantes.
algoritmo
var i,soma,n:inteiro
inicio
para i de 1 ate 10 faca
leia(n)
soma<-0
repita
soma<-soma+n%10
n<-n\10
ate n=0
escreva(soma)
fimpara
fimalgoritmo
I00003200 - Faa um algoritmo que leia um nmero N e o escreva com seus dgitos
invertidos.
algoritmo
var soma,n:inteiro
inicio
leia(n)
soma<-0
repita
soma<-soma*10+n%10
n<-n\10
ate n=0
escreva(soma)
fimalgoritmo
I00003300 - Faa um algoritmo que leia um nmero N at (at 9 dgitos) e retira
os dgitos 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 - Faa um algoritmo que leia nmeros at que seja fornecido um nmero
negativo. O algoritmo deve escrever a mdia aritmtica dos 3 ltimos nmeros
fornecidos (excetuando o negativo indicando fim da sequncia).
I00003400 - Faa um algoritmo que leia um nmero N at 100.000.000 e verifique
se palndromo, ou seja, se se igual quando lido da esquerda para a direita e
da direita para a esquerda. Ex: 13731. Escreva 1 se for palndromo e 0 se no
for.
algoritmo
var soma,n,naux:inteiro
inicio
leia(n)
naux<-n
soma<-0
repita
soma<-soma*10+n%10
n<-n\10
ate n=0
se naux=soma
entao escreva(1)
senao escreva(0)
fimse
fimalgoritmo
I00003500 - Faa um algoritmo que escreva os primeiros 20 nmeros cuja soma dos
dgitos formantes 10.
algoritmo
var cont,n,a,s:inteiro
inicio
cont<-0
n<-1
repita
a<-n
s<-0
repita
s<-s+a%10
a<-a\10
ate a=0
se s=10
entao escreva(n)
cont<-cont+1
fimse
n<-n+1
ate cont=20
fimalgoritmo
I00003600 - Uma pessoa aplicou um determinado valor em um banco. Sabe-se que o
banco pagar 5% ao ms de juros. Fazer um algoritmo que leia o valor aplicado e
calcule e escreva a quantidade mnima de meses necessrios 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 ms ter
algoritmo "I001_I00003600"
var valor,valinic,m:real
inicio
leia(valor)
valinic<-valor
m<-0
repita
m<-m+1
valor<-valor * 1.05
ate valor-valinic>=1000
escreva(m)
fimalgoritmo
I00003700 - Faa um algoritmo que leia 20 nmeros inteiros e escreva quantos
nmeros so iguais ao menor nmero 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)
fimalgoritmo
I00003800 - Data juliana o nmero 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 divisvel 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 - Faa um algoritmo que leia duas datas, cada uma formada por dia, ms
e ano, e escreva o nmero de dias entre as duas, incluindo a data inicial e a
data final. Considere que ano bissexto aquele divisvel 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 - Faa um algoritmo que leia duas datas, cada uma formada por dia, ms
e ano, e escreva todas as datas entre as duas, incluindo a data inicial e a data
final. Considere que ano bissexto aquele divisvel por 4. Considere tambm 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 - Faa um algoritmo que leia 4 valores d,m,a,ds, onde d,m,a
representam uma data (dia,ms,ano) e ds representa um dia da semana (1-domingo,
2-segunda, 3-tera, 4-quarta, 5-quinta, 6-sexta, 7-sbado), e escreva as datas
das prximas 3 sextas-feiras 13, a partir da data digitada, incluindo a prpria
data, se for o caso. Considere que ano bissexto o ano divisvel 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 - Faa um algoritmo que leia o ms e o ano de uma sexta-feira 13 e
escreva o ms e ano das prximas 5 ocorrncias de sexta-feira 13. Considere que
ano bissexto o ano divisvel por 4.
algoritmo
var d,m,a,cont:inteiro
inicio
leia(m,a)
d<-13
cont<-0
repita
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
ate cont=5
fimalgoritmo
I00004000 - Faa um algoritmo que calcule e escreva a soma dos 100 primeiros
termos da sequncia 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 (no est no portal porque o resultado real)
Faa um algoritmo que calcule e escreva a soma dos 100 primeiros termos da
sequncia a seguir: 1/1 + 1/3 + 1/5 + 1/7 + 1/9 +...
I00004200 (no est no portal porque o resultado real)
Faa um algoritmo que leia um valor X e calcule e escreva a soma dos 100
primeiros termos da sequncia a seguir: X/1 + X/3 + X/5 + X/7 + X/9 +...
I00004300 (no est no portal porque o resultado real)
Faa um algoritmo que leia um valor X e calcule e escreva a soma dos 100
primeiros termos da sequncia a seguir: X/1 - X/3 + X/5 - X/7 + X/9 -...
I00004400 (no est no portal porque o resultado real)
Faa um algoritmo que leia um valor N e escreva a soma dos N primeiros termos da
srie a seguir:
1/2 + 1/3 + 1/5 + 1/7 + 1/11 + 1/13 + 1/17... ou seja, a srie onde os
denominadores so os nmeros primos
I00004500 - Um nmero piramidal um nmero que igual soma de 3 nmeros
primos consecutivos (ex: 15 = 3 + 5 + 7). Faa um algoritmo que leia um valor N
e escreva os 10 primeiros nmeros 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
repita
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
ate cont=10
fimalgoritmo
I00004600 - Faa um algoritmo que leia 30 nmeros. O algoritmo deve escrever ao
final a mdia dos nmeros pares digitados (soma dos pares dividido pela
quantidade de pares); quantos nmeros so primos e o produto (multiplicao) de
todos os nmeros lidos que so mltiplos 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 - Faa um algoritmo que leia 20 nmeros e verifique qual a maior
sequncia estritamente crescente (isso , cada nmero maior que o anterior)
dentre os nmeros digitados, escrevendo ao final o primeiro e ltimo valor da
sequncia.
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 - Faa um algoritmo que leia uma sequncia de 20 nmeros e escreva: 0
- Se todos os nmeros so iguais; 1 - Se a sequncia no-decrescente (cada
nmero maior OU IGUAL ao anterior); 2 - se a sequncia estritamente
crescente (cada nmero MAIOR que o anterior); 3 - Se a sequncia no-
crescente (cada nmero menor OU IGUAL ao anterior); 4 - Se a sequncia
estritamente decrescente (cada nmero MENOR que o anterior); 5 - A sequncia
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 - Faa um algoritmo que leia 15 nmeros e identifique a maior
sequncia de nmeros pares dentre os nmeros lidos, escrevendo ao final o
comprimento da sequncia identificada, bem como o primeiro e o ltimo valor da
sequncia. No caso de mais de uma sequncia 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 - Faa um algoritmo que leia a mdia e a quantidade de faltas para
cada aluno de um grupo de 20 alunos, e escreva ao final o percentual de alunos
aprovados. Os alunos sero considerados reprovados se no atingirem mdia 6.0.
Tambm sero reprovados os alunos que tiverem mais de 20 faltas. Os alunos com
uma quantidade de faltas entre 10 e 20 sero aprovados se obtiverem uma mdia
mnima 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 - Faa um algoritmo que leia um nmero inteiro qualquer e escreva os
dgito desse nmero em ordem crescente do valor de cada dgito.
algoritmo
var n,dig,d,a:inteiro
inicio
leia(n)
para dig de 0 ate 9 faca
a<-n
repita
d<-a%10
se d=dig
entao escreva(d)
fimse
a<-a\10
ate a=0
fimpara
fimalgoritmo
I00005100 - Faa um algoritmo que leia um nmero inteiro qualquer e verifique se
possui algum dgito repetido escrevendo ao final: 0 - se ele no contem nenhum
dgito repetido; 1 - se ele contem algum dgito 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
repita
d<-a%10
se d=dig
entao cont<-cont+1
fimse
a<-a\10
ate a=0
se cont>1
entao rep<-1
fimse
fimpara
escreva(rep)
fimalgoritmo
I00005120 - Faa um algoritmo que leia um nmero inteiro e escreva quantas vezes
ocorre o dgito 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 - Faa um algoritmo que leia um nmero inteiro (mximo 5 casas - no
maior que 99999) e mostre quantos dgitos contem de cada nmero 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 - Faa um algoritmo que leia um nmero inteiro (mximo 5 casas - no
maior que 99999). Mostre o nmero 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 nmero inteiro dito ascendente se cada um dos seus algaristmos
maior do que o algarismo imediatamente sua esquerda. Por exemplo, o nmero
3589. Faa um algoritmo que leia um nmero inteiro e verifique se ele ou no
ascendente escrevendo: 1 - se ele ascendente; 0 - se ele no 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 - Faa um algoritmo que leia o dia e ms de uma data, e o dia da
semana (1 - domingo, 2 - segunda... 7 - sbado) e escreva o dia da semana
correspondente ao dia primeiro do ms 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 - Faa um algoritmo que leia um nmero de 8 dgitos e calcule a soma
ponderada dos seus dgitos, com peso 1 para o dgito menos significativo, peso 2
para o segundo dgito, peso 3 para o terceiro e assim por diante. Escreva a soma
calculada.
I00005400 - Faa um algoritmo que leia 20 nmeros e escreva a maior sequncia de
valores iguais entre os nmeros digitados.
I00005450 - Faa um algoritmo que leia um nmero inteiro positivo N no 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 nmero informado.
I00005500
Georg Cantor demonstrou que os nmeros racionais so enumerveis pela sequncia:
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
ensimo nmero dessa sequncia (escreva o numerador e o denominador).
I00005501
Georg Cantor demonstrou que os nmeros racionais so enumerveis pela sequncia:
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 ensimo nmero dessa sequncia (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
repita
pen<-ult
ult<- atu
atu <- (ult + X \ ult) \2
ate atu=pen
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 dgitos (999999999-99), dos quais os dois
ltimos so verificadores (controle), ou seja, a partir dos nove primeiros
dgitos pode-se determinar os ltimos dois. Considerando o CPF no formato
abcdefghi-jk, onde cada letra representa um dgito, pode-se:
- calcular o primeiro dgito verificador (j), da seguinte forma:
- somar: 10a + 9b + 8c + 7d + 6e + 5f + 4g + 3h + 2i
- encontrar o resto da diviso dessa soma por 11.
- se o resto for igual a zero ou um, o dgito zero, seno o dgito onze
menos esse resto.
- calcular o segundo dgito verificador (k):
- somar: 11a + 10b + 9c + 8d + 7e + 6f + 5g + 4h + 3i + 2j
- encontrar o resto da diviso dessa soma por 11.
- se o resto for igual a zero ou um, o dgito zero, seno o dgito onze
menos esse resto.
Fazer um algoritmo que leia o CPF (somente primeiros nove dgitos) 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 cdigo do curso que ele frequenta (1: engenharia;
2: computao; 3: administrao) e sua idade. Faa um algoritmo que processe
tais dados fornecendo: (a) nmero de alunos por curso; (b) nmero de alunos com
idade entre [20 25] anos por curso; e (c) cdigo do curso com a menor mdia de
idade.
Dica:So necessrios vrios 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 operao de diviso pode ser obtido subtraindo-se o
divisor do dividendo. Da diferena, subtramos novamente o divisor e assim
sucessivamente at que a diferena seja menor do que o divisor. A quantidade se
subtraes 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 nmero de subtraes 5. Logo, o quociente -5
(divisor e dividendo tm sinais diferentes). Faa um algoritmo que leia o
dividendo (0, positivo ou negativo) e o divisor (positivo ou negativo) e escreva
o quociente usando o algoritmo acima. NO deve ser usado o operador de diviso.
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 operao de multiplicao, quando o multiplicador um nmero
inteiro, nada mais do que uma sucesso de somas. Assim, por exemplo,
4X5= 5+5+5+5= 20.
Escreva um algoritmo que leia o multiplicando e o multiplicador e, atravs de
uma sucesso de somas, calcule e escreva o produto. O multiplicador ,
necessariamente, um nmero inteiro. Porm, 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 nmero de subtraes 5. Logo, o quociente -5
(divisor e dividendo tm sinais diferentes). Faa um algoritmo que leia o
dividendo (0, positivo ou negativo) e o divisor (positivo ou negativo) e escreva
o quociente usando o algoritmo acima. NO deve ser usado o operador de diviso.
Dica: Registre, de alguma forma, os sinais dos operandos e transforme-os para
positivo.
I00005900 - Um nmero N dito um Meridiano Perfeito se existe um nmero M para
o qual a soma dos nmeros de 1 a N-1 igual soma dos nmeros de N+1 a M.
Assim, 6 um Meridiano Perfeito porque 1+2+3+4+5=7+8. Faa um algoritmo que
leia um nmero e verifique se um meridiano perfeito, escrevendo 1, se o nmero
um meridiano perfeito, e 0, se no 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
repita
M<-M+1
soma2<-soma2+M
ate soma2>=soma1
se soma2=soma1
entao escreva(1)
senao escreva(0)
fimse
fimalgoritmo
I00006000 - Um nmero N dito um Meridiano Perfeito se existe um nmero M para
o qual a soma dos nmeros de 1 a N-1 igual soma dos nmeros de N+1 a M.
Assim, 6 um Meridiano Perfeito porque 1+2+3+4+5=7+8. Faa 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 nmero dito regular, ou nmero de hamming (ou "5-smooth number"
ou "ugly number") se tem como fatores primos apenas 2, 3 e 5, ou seja,
divisvel somente por mltiplos de 2, 3 ou 5. Assim, os primeiros nmeros
regulares so 1 ( regular por definio, 2^0 * 3^0 * 5^0), 2, 3, 4, 5, 6, 8, 9,
10, 12, 15, 16, 18, 20, 24, 25, 27,30,32.... Faa um algoritmo que leia um
nmero N, menor ou igual a 100, e escreva os N primeiros nmeros 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 - Faa 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
sequncia, e escreva: 1 - se as cartas contem uma canastra; 0 - se no contem.
Considere como canastra apenas uma sequncia crescente de 7 cartas do mesmo
naipe de numerao contnua (cuja diferena entre duas cartas seja igual a 1).
Dica:Considere que podem ocorrer cartas de mesmo nmero e naipe (uso de mais de
um baralho). Nesse caso a carta de mesmo nmero e naipe no contada, mas no
quebra a sequncia.
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 - Faa um algoritmo que leia em sequencia "decrescente": O nmero de
uma carta (de 1 at 13) e seu naipe (de 1 at 4); Escreva a maior sequncia
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 sero
sequenciadas, no havendo necessidade de qualquer reorganizao 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 - Faa um algoritmo que leia inicialmente duas "cartas" e em seguida,
leia a opo de jogo: (1) dar mais uma carta, (0) encerrar jogo. O jogo tambm
acaba, caso a soma das cartas na mo 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 mos caso esta
no 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 - Continuao do exerccio <I6300>. Considere que agora, h um total
de 52 cartas (Baralho inteiro) e as cartas valete, rainha e rei, valem uma
pontuao 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 nmero
de cartas que ele recebeu, e a soma delas, caso no ultrapasse 21, pois neste
caso deve-se devolver "0" como resposta.
Dica:Resto de uma diviso;
I00006302 - Continuao do exerccio <I6301>. O motivo pelo qual o jogador
recebe vitoria automtica 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 situao; Logo um As e outra carta de valor 10, equivalem a soma
"11+10=21", entretanto, se o jogador possusse em mos uma soma desfavorvel: 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 est nova informao.
I00006303 - Continuao do exerccio <I6302>. O jogador, nunca joga "sozinho"
como talvez voc possa ter imaginado, afinal, ele poderia parar com o menor
nmero de cartas e sempre vencer! Por isto, ele tem neste caso, como
concorrente, a "casa", porem, esta no 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 no tiver passado de 21 ou ganho
automaticamente (tirando 21 com as duas primeiras cartas), passa para a "casa",
que diferente do jogador, s precisa ter uma quantia "maior" ou "igual" de
pontos na mo, 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
sero 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,
viro os dados com os quais a mesa joga. Considere tambm que as cartas no
passam do valor 13.
I00006400 - Baseando-se na sequncia de fibonacci (0,1,1,2,3...), verifique se
uma sequncia de cinco nmeros, faz parte da sequncia, devolvendo como resposta
"0" se faz parte, ou "1" se no faz parte. Dica:Considere que nmeros
"repetidos" fazem parte da sequncia proposta, ou seja, devem ser analisados
individualmente como os demais nmeros 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 mximo dos lados de um
triangulo retngulo podem assumir, sendo que os lados comeam com tamanho 3, 4 e
5 (a,b,c). Em sequencia escreva todos os tringulos retngulos em que o valor
mximo do lado n e os trs lados so inteiros. Cada triangulo deve ser escrito
uma nica vez em ordem crescente dos lados. Dica:O triangulo retngulo dado
como valido pela formula (a + b = c)
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 salrio dos 10 funcionrios de uma empresa, calcule e escreva (nessa
ordem): a mdia dos salrios dos funcionrios menores que 30 anos, dos que tem
de 30 a 45 anos e dos maiores que 45 anos, escreva tambm 1, se o menor salrio
de um homem ou 2, se for de uma mulher. Todos os valores devem ser do tipo
inteiro, inclusive as mdias, portanto utilizar o operador de diviso inteira
para efetuar o clculo da mdia. Escrever mdia zero quando no houver nenhum
funcionrio no respectivo intervalo de idade.
algoritmo
var
salario30,salario3045,salario45,conta30,conta3045,conta45,idade,salario,sexo,i,m
aiorsalario,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 nmeros inteiros e escreva os
ltimos 2 nmeros primos informados. Escreva primeiramente o penltimo depois o
ltimo. Caso no seja informado nenhum nmero 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<-1
repita
j<-j+1
ate n%j=0
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 nmeros inteiros at que seja informado
0, descartando os nmeros negativos. Escrever o menor nmero com a maior
quantidade de dgitos.
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
repita
n1<-n1\10
cont<-cont+1
ate n1=0
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 so negativos e escreva esta informao.
V00000200 - Faa um algoritmo que leia 10 valores e os escreva na ordem
contrria que foram digitados.
V00000250 - Faa um algoritmo que leia os conceitos (1, 2, 3, 4 ou 5) dos alunos
de uma turma de 20 alunos. Aps, o algoritmo desenha um histograma com os
conceitos na forma
111
2222
3333333333
44
5
se houveram trs alunos com conceito 1, quatro com conceito 2, dez com conceito
3, dois com conceito 4 e um com conceito 5.
V00000300 - Faa um algoritmo que leia 10 valores e escreva primeiramente todos
os nmeros pares digitados e em seguida os nmeros mpares.
V00000320 - Faa um algoritmo que leia uma quantidade indeterminada de nmeros
at que sejam informados 10 nmeros positivos (maiores que zero) e em seguida
escreva esses nmeros positivos em ordem contrria ordem de leitura.
V00000400 - Escrever um algoritmo que l um vetor V(10) e o escreve. Conte, a
seguir, quantos valores de V so primos e escreva esta informao.
V00000500 - Faa um algoritmo que leia dez nmeros inteiros armazenando-os em um
vetor. Aps, escreva a posio de cada nmero menor que zero desse vetor.
V00000600 - Escreva um algoritmo que l um vetor A(10) e escreva a posio de
cada elemento primo deste vetor.
V00000700 - Escrever um algoritmo que l um vetor X(10) e o escreve. Substitua,
a seguir, todos os valores negativos de X pelos seu mdulo e escreva novamente o
vetor X.
V00000800 - Escrever um algoritmo que l um vetor C(50) e o escreve. Encontre, a
seguir, o maior elemento de C e o escreva.
V00000900 - Escrever um algoritmo que l um vetor N(80) e o escreve. Encontre, a
seguir, o menor elemento e a sua posio no vetor N e escreva: "O menor elemento
de N = ... e a sua posio ... ".
V00001000 - Faa um algoritmo que leia 10 valores, calcule sua mdia e escreva
os valores que esto acima da mdia calculada.
V00001010 - A conjectura de Goldbach diz que todo nmero par maior que 2 pode
ser representado como a soma de dois nmeros primos. Assim, 4=2+2, 6=3+3,
8=3+5... Faa um algoritmo que leia um nmero N, par, e escreva, em ordem
crescente, os dois nmeros primos que o compem. No caso de haver mais de um par
de nmeros (p.ex:20=3+17 e 20=7+13) escreva o par que tiver o menor nmero
primo.
V00001050 - Faa 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
no aparece no vetor; 1 - se o valor N aparece no vetor
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 penltimo, etc at o 5 com o 6
e escreva o vetor N assim modificado.
V00001200 - Escrever um algoritmo que l um vetor N(10) e o escreve. Troque, a
seguir, cada elemento que estiver em posio mpar (o primeiro, o terceiro...)
pelo elemento da posio imediatamente a seguir. Escreva o vetor modificado.
V00001250 - Escreva um algoritmo que l em um vetor de 20 posies nmeros
positivos, at que o vetor esteja completo ou que tenha sido fornecido o valor 0
(zero). Aps, escreva o vetor. A seguir, o algoritmo deve ler um nmero positivo
qualquer e, caso ele se encontre no vetor, deve remover todas suas ocorrncias,
atravs de um deslocamento para a esquerda dos elementos que encontram-se
direita daquele a ser removido. Escreve o vetor modificado.
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 questes acertou, escrevendo para cada aluno o
nmero de acertos.
V00001400 - Faa um algoritmo que leia 10 valores e verifique se algum dos
valores aparece repetido. Escreva 1 se algum valor aparece repetido e 0 se no
houver nenhum valor repetido.
V00001450 - Faa 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 no aparece no vetor; 1 - se o valor N aparece no vetor
V00001500 - Escrever um algoritmo que l um vetor X(10) e, aps, leia um vetor
Y(10). Crie, a seguir, um terceiro vetor Z com os elementos que aparecem nos
dois vetores (interseco). Os elementos devem aparecer no vetor Z na mesma
ordem em que aparecem no vetor X. Considere que no h repetio de valores
dentro do mesmo vetor. Escreva o vetor Z (apenas as posies que foram
preenchidas).
V00001501 - Escrever um algoritmo que l um vetor X(10) e, aps, leia um vetor
Y(10). Crie, a seguir, um terceiro vetor Z com os elementos que aparecem em um X
ou em Y (unio); 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 no h repetio de valores dentro do
mesmo vetor. Escreva o vetor Z (apenas as posies que foram preenchidas).
V00001600 - Faa 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 nmero de acertos que teve.
V00001650 - Faa um algoritmo que leia um nmero N e escreva os N primeiros
nmeros primos em ordem decrescente. Considere que N no mximo igual a 100.
Ex: Se N=5, escreva 11,7,5,3,2.
V00001700 - Escrever um algoritmo que l 2 vetores X(10) e Y(10), e escreva os
elementos que aparecem no vetor X e no aparecem no vetor Y (diferena 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, aps,
o vetor Y).
V00001710 - Escrever um algoritmo que l 3 vetores A[1..10], B[1.10] e C[1..10]
e escreve os elementos que esto em A e B (interseo) mas no esto em C.
Escreva os valores na ordem em que eles aparecem no vetor A. Os trs vetores
devem ser lidos separadamente (em primeiro lugar, todo o vetor A, aps, 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 so comuns aos trs vetores (interseco). Escreva os
valores na ordem em que eles aparecem no vetor A. Os trs vetores devem ser
lidos separadamente (em primeiro lugar, todo o vetor A, aps, 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 esto 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,
aps, o vetor B).
V00001790 - Faa 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 no foram digitados nenhuma vez.
V00001800 - Faa um algoritmo que leia um vetor X(10). Compare a seguir cada
elemento com o elemento da posio 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 aps essa operao?
V00001900 - Faa 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 exerccio V00001800 for executado repetidamente sobre o
vetor?
V00002000 - Faa 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 no deve ler todos os pesos e em
seguida todas as alturas)
V00002100 - Faa 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, tambm em ordem crescente. Escreva o vetor Z.
V00002200 - Escrever um algoritmo que gera os 10 primeiros nmeros primos acima
de 100 e os armazena em um vetor X(10) escrevendo, no final, o vetor X.
V00002250 - Escrever um algoritmo que leia 20 nmeros inteiros em um vetor e
escreva o elemento que aparece MENOS vezes no vetor com o nmero de ocorrncias.
Suponha que no havero dois ou mais nmeros com o mesmo nmero mnimo de
ocorrncias.
V00002300 - Escrever um algoritmo que l um vetor X(20) possivelmente contento
repeties e o escreve. Escreva, a seguir, cada um dos valores que aparecem em X
dizendo quantas vezes cada valor aparece em X.
V00002400 - Faa um algoritmo para gerar um vetor com os nmeros primos de 1 a
1000 atravs do crivo de eratstenes. Neste mtodo o vetor (inicializado com
zeros) percorrido da segunda posio at o fim e para cada posio n que
contem 0, n um nmero primo e todas as posies mltiplas de n devem receber
1. Escreva ao final os nmeros primos. Eles so indicados pelas posies do
vetor que contem 0.
V00002500 - Faa um algoritmo que leia 30 valores inteiros entre 1 e 10 e
escreva o nmero de vezes que ocorre cada valor.
V00002600 - Faa um algoritmo que leia 10 nmeros reais armazenando-os em um
vetor. Desloque, a seguir, todos os elementos do vetor uma posio para a
esquerda (colocando na ltima posio o elemento que estava na primeira
posio). Repita isso at o que o maior elemento esteja ocupando a primeira
posio.
V00002700 - Faa um algoritmo que coloque em um vetor os 20 primeiros nmeros
primos da srie de Fibonacci
V00002800 - Faa um algoritmo que leia uma quantidade indeterminada de nmeros
at que sejam digitados 10 nmeros distintos e escreva esses 10 nmeros.
V00002900 - Faa um algoritmo que preencha um vetor com os 20 primeiros nmeros
primos e aps escreva os elementos desse vetor. Para identificar se um nmero
primo, verifique se divisvel por algum dos primos j colocados no vetor.
V00003000 - Faa um algoritmo que leia dois vetores V(15) e W(15), contendo,
cada um, um nmero de 15 dgitos, cada dgito ocupando uma posio do vetor, o
dgito menos significativo do nmero ocupando a posio 15, e calcule a soma dos
dois nmeros, 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, aps, o vetor W.
V00003050 - Faa um algoritmo que leia dois vetores V(15) e W(15), contendo,
cada um, um nmero de 15 dgitos, cada dgito ocupando uma posio do vetor, e
efetue a comparao entre os dois nmeros de quinze dgitos em V e W,
escrevendo: -1 se o nmero em V menor. 0 (zero) se os nmeros em V e W so
iguais. 1, se o nmero em V maior. Leia inicialmente os 15 dgitos de V e,
aps, os 15 dgitos de W.
V00003100 - Faa um algoritmo que leia dois vetores V(15) e W(15), contendo,
cada um, um nmero de 15 dgitos, cada dgito ocupando uma posio do vetor, o
dgito menos significativo do nmero ocupando a posio 15, e calcule a
diferena dos dois nmeros (V-W), colocando o resultado em um vetor S(16).
Escreva ao final o vetor S. Considere que o nmero de 15 dgitos no vetor V
maior que o nmero contido no vetor W.
V00003200 - Faa um algoritmo que leia um vetor V(15) contendo um nmero de 15
dgitos, e um valor N entre 0 e 9, e calcule o produto (multiplicao) do nmero
em V pelo valor N, colocando o resultado em um vetor P(16). Escreva o vetor P.
V00003250 - Faa um algoritmo que leia, para 5 candidatos a deputado, o seu
cadastro. Leia, a seguir, um nmero no determinado de votos (termina ao ser
digitado 0) e escreva ao final o cadastro e nmero de votos de cada candidato
(em ordem crescente de cadastro). Escreva tambm, ao final, o nmero de votos
nulos (ou seja, votos que no so iguais ao cadastro de nenhum candidato).
V00003300 - Faa um algoritmo que leia, para 20 candidatos a deputado, seu
cadastro, partido (inteiro entre 1 e 10) e nmero 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 prximo candidato.
V00003350 - Faa um algoritmo que leia, para 20 candidatos a deputado, seu
cadastro, partido (inteiro entre 1 e 10) e nmero de votos, e escreva, para os
10 partidos, o nmero do partido e o total de votos, em ordem decrescente de
votao. Os 3 dados correspondentes a cada candidato devem ser lidos juntos,
antes de passar para o prximo candidato.
V00003400 - Faa um algoritmo que leia, para 20 candidatos a deputado, seu
cadastro, partido (inteiro entre 1 e 10) e nmero de votos, e escreva o
cadastro, partido e nmero de votos do candidato mais votado de cada partido, em
ordem crescente de partido.
V00003410 - Faa um algoritmo que leia, para 20 candidatos a deputado, seu
cadastro, partido (inteiro entre 1 e 10) e nmero de votos, e escreva o
cadastro, partido e nmero de votos do candidato mais votado de cada partido, em
ordem decrescente de votao.
V00003450 - Faa um algoritmo que leia, para 20 candidatos a deputado, seu
cadastro, partido (inteiro entre 1 e 10) e nmero de votos, e escreva o
cadastro, partido e nmero de votos de todos os candidatos, em ordem crescente
de partido e, para o mesmo partido, em ordem crescente de nmero de votos.
V00003500 - Faa um algoritmo que leia 20 nmeros reais. Escreva a quantidade
mnima de elementos cuja soma seja maior ou igual metade da soma total. Dica:
Classifique o vetor e some os primeiros (ou ltimos) elementos at atingir a
metade da soma total.
V00003600 - Faa um algoritmo que leia 10 datas, cada uma composta por dia, ms
e ano, e escreva as 10 datas em ordem cronolgica crescente.
V00003700 - Faa 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), e ordene-
as em ordem crescente de naipe e, para cada naipe, em ordem crescente de valor.
Escreva a lista de cartas ordenada.
V00003750 - Faa um algoritmo que para 9 cartas de baralho leia o seu valor
(entre 1 e 13). O algoritmo deve escrever quantas trincas a "mo" contm. Uma
trinca composta de trs cartas com o mesmo valor. O naipe das cartas no
importa. Cada carta pode aparecer no mximo em uma trinca.
V00003800 - Faa 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), e escreva:
1 - se as cartas contem uma canastra; 0 - se no contem. Considere como canastra
apenas uma sequencia crescente de 7 cartas do mesmo naipe de numerao contnua
(cuja diferena entre duas cartas seja igual a 1). Considere que podem ocorrer
cartas de mesmo nmero. Nesse caso a carta de mesmo nmero no contada, mas
no quebra a sequncia.
V00003900 - Faa um algoritmo que leia os 5 nmeros obtidos em um arremesso de 5
dados no jogo de General, e verifique se os nmeros contm um full-hand (3
nmeros iguais, e os outros dois nmeros iguais entre si, mas diferentes dos 3
primeiros. Ex. 3,3,3,2,2), e escreva: 1 - se os nmeros contem um full-hand; 0 -
se no contem.
V00004000 - Faa um algoritmo que encontre a maior subsequncia de elementos,
no necessariamente contguos, de um vetor de no mximo 100 elementos de tal
forma que cada elemento desta subsequncia seja menor ou igual ao anterior. Os
dados do vetor devem ser lidos at que seja digitado um valor negativo (que deve
ser descartado). O algoritmo deve escrever, ao final, o comprimento da maior
subsequncia encontrada.
V00004100 - Faa um algoritmo que encontre e escreva a maior subsequncia de
elementos, no necessariamente contguos, de um vetor de no mximo 100 elementos
de tal forma que cada elemento desta subsequncia seja menor ou igual ao
anterior. Os dados do vetor devem ser lidos at que seja digitado um valor
negativo (que deve ser descartado).
V00004150 - Faa um algoritmo que leia um vetor V(10) e um vetor W(3), e
verifique e escreva a primeira posio do vetor V a partir da qual so
encontrados, de forma contgua, os trs elementos do vetor W. Caso o vetor W no
ocorra em V, o algoritmo deve escrever -1.

V00004200 - Faa um algoritmo que leia um vetor de inteiros W[30]. Leia a seguir
um vetor V[10] e verifique se a sequncia de 10 nmeros no vetor V ocorre no
vetor W, escrevendo a posio do vetor W onde inicia a sequencia, caso ela
exista, ou 0, caso a sequencia em V no exista em W.
V00006000 - Faa um algoritmo que l os conceitos de uma turma de N alunos,
notas inteiras, de 0 a 10, at que seja digitado um valor < 0 (que deve ser
descartado) e escreva, para os valores de 0 a 10, o valor e o nmero de
ocorrncias do mesmo.
V00006100 - Crie um algoritmo que l um vetor G(13) representando o resultado de
um teste de loteria esportiva, contendo os valores 1 (coluna 2), 2 (coluna do
meio) e 4 (coluna 1). A seguir, para cada apostador, o algoritmo l o n de seu
carto e suas apostas para cada um dos 13 jogos, sendo vlidos os seguintes
valores: 1 (coluna 2), 2 (coluna do meio), 3 (coluna 2 e do meio), 4 (coluna 1),
5 (coluna 1 e 2), 6 (coluna 1 e do meio) e 7 (triplo). O algoritmo calcula, para
cada apostador, o n de acertos e escreve o n do apostador e seu nmero de
acertos. O algoritmo para de ler quando o nmero do apostador for 0.
V00006200 - Faa um algoritmo que leia valores at que seja digitado um valor
negativo e escreva os 10 ltimos valores positivos digitados. Considere que
sero digitados pelo menos 10 valores positivos. O algoritmo deve escrever os
valores na mesma ordem em que foram digitados pelo usurio.
V00006300 - Crie um algoritmo que l o nmero de matrcula de cada aluno e suas
respectivas notas em trs provas, em uma turma de 10 alunos. Aps, calcular a
mdia harmnica (MH) de cada aluno e verificar o conceito obtido (se MH<6.0,
conceito 0. Se MH<7.0, conceito 1. Se MH<8.0 o conceito 2. Se MH<9.0 o
conceito 3. Se MH>=9.0, conceito 4). Escrever seu nmero de matrcula e seu
conceito. Dica:Lembre que se uma das trs notas 0, a mdia harmnica 0.
V00006400 - Na apurao de um processo de eleio as vagas disponveis so
distribudos entre os partidos proporcionalmente aos votos obtidos pelo partido.
As sobras so distribudas da seguinte forma: enquanto houver sobras, calcula-se
para cada partido a razo entre o nmero de votos e o nmero de cadeiras j
obtidas + 1. Uma das sobras atribuda ao partido de maior razo. Isso se
repete at que no haja mais sobras. Faa um algoritmo que leia, para 10
partidos, de 1 a 10, o seu nmero de votos. Leia, a seguir, o total de vagas e
escreva, ao final, para os partidos de 1 a 10, o nmero do partido e o nmero de
cadeiras obtidas.
V00006500 - Faa um algoritmo que leia o cdigo de 5 carros com seus respectivos
preos. Ao final, escreva o cdigo do carro mais caro com seu respectivo preo.
V00006600 - Escreva um algoritmo que l um vetor V[10] e escreva, para cada
valor diferente que aparece no vetor, o valor e o nmero de vezes que o mesmo
ocorre no vetor. Escreva os valores em ordem crescente de valor.
V00006700 - Faa um algoritmo que leia um vetor V[10] e ao final escreva o
elemento que aparece mais vezes neste vetor.
V00006800 - Faa um algoritmo que leia um vetor V[15], j ordenado. Leia, a
seguir, um valor N e verifique se ele se encontra no vetor escrevendo a posio
em que se encontra. Caso o valor no esteja no vetor, escreva -1. Tente escrever
um algoritmo da forma mais eficiente possvel.
V00006900 - Faa um algoritmo que leia os 10 primeiros valores de um vetor
V[20], valores estes j ordenados em ordem crescente. Leia, a seguir, 10 valores
e insira cada um deles na posio correta do vetor V, de modo a mant-lo
ordenado, deslocando em uma posio para a direita todos os valores que vm aps
ele. Escreva, ao final, o vetor V (ordenao por insero).
V00007000 - Na ordenao por contagem, conta-se, para cada elemento do vetor, o
nmero de elementos menores ou iguais a ele. O valor da contagem a posio que
o elemento ocupar no vetor ordenado. Faa um algoritmo que leia um vetor V[20]
e ordene-o em ordem crescente, escrevendo o vetor ordenado. Considere que no h
repetio de valores no vetor.
V00007100 - Escreva um algoritmo que leia caracteres em dois vetores A[5] e
B[5]. Aps os dois vetores terem sido lidos, o algoritmo dever colocar em um
terceiro vetor C o resultado da unio dos dois primeiros, ou seja, os caracteres
que esto contidos em um ou outro vetor. Assuma que em um mesmo vetor no haver
caracteres repetidos, mas um caractere contido em A poder tambm estar contido
em B. Nesse caso, apenas uma ocorrncia colocada em C.
V00007150 - Uma loja decidiu fazer um sorteio de prmios para seus clientes.
Sero sorteados 10 nmeros, porm, a loja no quer que um mesmo nmero receba
mais do que um prmio. Faa um algoritmo que leia cada nmero sorteado at que
tenham sido sorteados 10 nmeros diferentes. O algoritmo escreve os 10 nmeros
(distintos) sorteados.
V00007160 - Faa um algoritmo que leia nmeros at que tenham sido lidos 5
nmeros distintos ou 20 nmeros. Escreva, ao final, os 5 nmeros distintos em
ordem crescente.
V00007200 - Faa um algoritmo que leia um vetor V[15], j ordenado. Leia, a
seguir, um valor N e verifique se ele se encontra no vetor escrevendo a posio
em que se encontra. Caso o valor no esteja no vetor, escreva -1. Tente escrever
um algoritmo da forma mais eficiente possvel. Dica: Compare N com o valor na
posio do meio do vetor. Essa comparao dir se N est na primeira ou na
segunda metade do vetor. (pesquisa binria)
V00007300 - Crie um algoritmo que leia um vetor v[10]. Leia a seguir um valor N
e faa, no vetor V, uma rotao circular para a esquerda (rotate left) de N
posies. Na rotao circular para a esquerda, cada elemento copiado para a
posio esquerda, e o primeiro elemento copiado para a ltima posio.
Escreva, ao final, o vetor alterado.
V00007400 - Escreva um algoritmo que l em um vetor o gabarito das 20 questes
objetivas de um prova de vestibular com 4 opes: A, B, C e D. O
algoritmo deve, a seguir, ler, para cada candidato, seu codigo e as respostas
fornecidas para as 20 questes e escrever o nmero de acertos. O algoritmo pra
de ler quando o cdigo do candidato for igual a 0.
V00007500 - Crie um algoritmo que faa uma progresso aritmtica de cinco
posies, onde deve ser fornecido o primeiro termo da progresso e a razo desta
PA.
V00007600 - Faa um algoritmo que leia um nmero inteiro e escreva os dgitos
binrios correspondentes a esse nmero (mximo 64 dgitos binrios). Dica:Para
converter um nmero decimal em binrio pode-se proceder sucessivas divises por
dois at que o quociente seja igual a zero. O nmero binrio obtido
considerandos restos obtidos nas divises, mas em ordem contrria.
V00007700 - Leia um vetor de 10 posies que contem nmeros positivos e
negativos. Em seguida, descubra qual a sequencia de valores dentro dele
(intervalo de valores contguos no vetor) que resulta na maior soma, escrevendo
ao final a soma encontrada.
V00007800 - A sequencia "Look & Say" funciona da seguinte forma: O seu primeiro
termo sempre "1", e a definio do prximo termo a partir do anterior "O n
de vezes que um nmero de repete at que a sequencia seja quebrada""O nmero que
estava repetindo"...
Veja do seguinte modo:
1 Termo: 1 (Termo inicial em "1")
2 Termo: 11 (Antes tnhamos "1" vez o nmero "1")
3 Termo: 21 (Antes tnhamos "2" vezes o nmero "1")
4 Termo: 1211 (Antes tnhamos "1" vez o nmero "2" e "1" vezes o nmero "1")
5 Termo: 111221
6 Termo: 312211
...
Elabore um algoritmo que calcule o ensimo termo dessa sequncia. Considere que
o nmero muito grande e voc precisar de 1000 casas no vetor que ir
aglomer-lo.
Matrizes
M00000100 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e calcule e
escreva a soma dos elementos da diagonal principal.
M00000150 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e calcule e
escreva a soma dos elementos da diagonal secundria.
M00000200 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e calcule e
escreva a soma dos elementos em toda a regio acima da diagonal principal.
M00000300 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e calcule e
escreva a soma dos elementos em toda a regio acima da diagonal secundria.
M00000350 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e calcule e
escreva a soma dos elementos que esto ao mesmo tempo acima da diagonal
principal e da secundria.
M00000400 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e escreva o maior
valor existente na matriz, bem como a linha e coluna onde o valor ocorre.
M00000600 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e troque cada
elemento da linha 4 com elemento correspondente da linha 2. Escreva a matriz
resultante.
M00000700 - Uma matriz identidade uma matriz que possui 1 em todos os
elementos da diagonal principal, e 0 em todas as outras posies. Faa um
algoritmo que leia uma matriz M[1..5,1..5] e verifique se uma matriz
identidade escrevendo: 1 - Se uma matriz identidade; 0 - Se no uma matriz
identidade.
M00000800 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e escreva o
nmero da linha que contenha a maior soma de seus elementos. Considere que a
matriz s contem valores positivos.
M00000900 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e escreva o
nmero da linha que contenha a maior soma de seus elementos. Considere que a
matriz pode conter valores positivos e negativos.
M00001000 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e gere dois
vetores SomaLin[1..5] e SomaCol[1..5], com a soma dos elementos de cada linha e
a soma dos elementos de cada coluna da matriz M. Escreva ao final os vetores
Somalin e Somacol.
M00001010 - Escrever um algoritmo que l uma matriz M[1..3,1..3], contendo uma
posio de jogo da velha, com valores 0 (casa livre), 1 (marcada com cruzinha)
ou 2 (marcada com bolinha) e escreva: 1 - se o jogador 1 venceu o jogo (alguma
linha, coluna ou diagonal com o mesmo valor); 2 - se o jogador 2 venceu o jogo;
3 - se o jogo terminou empatado (no h mais lances e ningum ganhou);4 - se o
jogo ainda no terminou (h lances por jogar e ningum ainda venceu)
M00001100 - Uma matriz dita Diagonalmente Dominante se em todas as linhas o
elemento da diagonal principal maior ou igual soma dos outros elementos da
linha, e h pelo menos uma linha em que o elemento da diagonal principal MAIOR
que a soma dos outros elementos da linha (no basta que seja igual). Faa um
algoritmo que leia uma matriz M[1..4,1..4] e verifique se diagonalmente
dominante escrevendo: 1 - Se diagonalmente dominante; 0 - Se no
diagonalmente dominante
M00001200 - Faa um algoritmo que leia uma matriz M[1..5,1..5], onde cada
posio contem um nmero entre 0 e 9 e cada linha da matriz representa um nmero
de 5 dgitos. O algoritmo deve calcular a soma dos 5 nmeros contidos na matriz
colocando o resultado em um vetor Soma[1..6]. Escreva ao final o vetor Soma.
M00001300 - Faa um algoritmo que leia uma matriz M[1..5,1..5], onde cada
posio contem um nmero entre 0 e 9 e cada linha da matriz representa um nmero
de 5 dgitos. O algoritmo deve encontrar a linha que contem o maior dos 5
nmeros e escrever o nmero.
M00001400 - Faa um algoritmo que leia uma matriz M[1..5,1..5], onde cada
posio contem um nmero entre 0 e 9 e cada linha da matriz representa um nmero
de 5 dgitos. O algoritmo deve ordenar os 5 nmeros em ordem crescente, e
escrever a matriz com os nmeros ordenados.
M00001500 - Faa um algoritmo que leia dois valores D e DS, correspondendo a um
dia do ms e um dia da semana (1-domingo, 2-segunda,... 7-sbado) e preencha uma
matriz Folhinha[1..6,1..7] com o calendrio correspondente ao ms do dia
digitado. A primeira coluna da matriz contem os domingos, a segunda coluna
contem as segundas e assim por diante. O algoritmo deve escrever a matriz
gerada. As posies no utilizadas da matriz devem conter 0's.
M00001600 - Uma matriz de adjacncias, para um mapa rodovirio, composta de
elementos 0's e 1's, sendo que M[i,j]= 1 se existe uma ligao rodoviria da
cidade i para a cidade j e M[i,j]= 0 em caso contrrio. Essa matriz ser
simtrica se para todo caminho i,j existir o caminho j,i (estradas de mo
dupla). Uma caracterstica dessa matriz que na matriz M^2, obtida pelo produto
matricial de M por M, cada posio M[i,j] contm o nmero de caminhos entre as
cidades i e j que passam exatamente por 1 outra cidade. E M^3 contem a
quantidade de caminhos que passam por 2 outras cidades. E assim por diante.
Escreva um algoritmo que leia uma matriz de adjacncias M para um conjunto de 5
cidades e, aps, leia os valores c1 e c2 (ambos menores ou iguais a 5)
representando duas cidades quaisquer do conjunto. O algoritmo deve descrever a
quantidade de caminhos entre c1 e c2 que passam exatamente por 1 outra cidade.
M00001700 - Faa um algoritmo que leia uma matriz M[1..5,1..5] e um valor N e
multiplica cada valor da matriz M por N e coloca o resultado em um vetor
V[1..25]. Escreva ao final o vetor V.
M00001800 - Faa um algoritmo que leia uma matriz M[1..5,1..6] e divide todos os
6 elementos de cada linha pelo valor do menor elemento EM MDULO da linha.
Escrever a matriz modificada.
M00001900 - Faa um algoritmo que leia uma matriz M[1..5,1..5], possivelmente
com elementos repetidos. Leia, a seguir, 5 valores e, para cada um, verifique se
o valor ocorre ou no na matriz, escrevendo a posio (linha e coluna) em que
foi encontrada a primeira ocorrncia do mesmo e, caso ele no exista na matriz,
a mensagem "No tem".
M00002000 - Uma matriz dita triangular superior se todos os elementos abaixo
da diagonal principal so iguais a zero, e h pelo menos um elemento nulo acima
da diagonal principal. Da mesma forma, uma matriz dita triangular inferior se
todos os elementos acima da diagonal principal so iguais a zero, e h pelo
menos um elemento no nulo abaixo da diagonal principal. E uma matriz dita
diagonal se os elementos no nulos ocorrem somente na diagonal principal. Faa
um algoritmo que leia uma matriz M[1..5,1..5] e escreva: 0 - Se a matriz uma
matriz diagonal; 1 - Se triangular superior; 2- Se triangular inferior; 3 -
Se no nenhuma das anteriores
M00002100 - Uma matriz dita Matriz de Toeplitz se, em cada diagonal paralela
diagonal principal, todos os elementos so iguais. Assim, um exemplo de Matriz
de Toeplitz :
1 3 5 4 6
2 1 3 5 4
8 2 1 3 5
7 8 2 1 3
9 7 8 2 1
Faa um algoritmo que leia uma matriz M[1..5,1..5] e verifique se uma Matriz
de Toeplitz, escrevendo: 1 - Se uma matriz de Toeplitz; 0 - Se no uma
matriz de Toeplitz
M00002200 - Uma matriz dita Circulante cada elemento igual ao elemento
imediatamente acima esquerda, e se o primeiro elemento de cada coluna igual
ao ltimo elemento da coluna anterior. Assim, um exemplo de Matriz Circulante :
1 9 7 8 2
2 1 9 7 8
8 2 1 9 7
7 8 2 1 9
9 7 8 2 1
Faa um algoritmo que leia uma matriz M[1..5,1..5] e verifique se uma Matriz
Circulante, escrevendo: 1 - Se uma matriz Circulante; 0 - Se no uma matriz
Circulante
M00002300 - Faa um algoritmo que leia uma matriz M[1..3,1..3] e para cada linha
divida toda a linha pelo seu elemento da primeira coluna. Aps isso, a partir da
segunda linha, de cada linha subtraia toda a a primeira linha elemento a
elemento. ex. a matriz:
2 4 6
3 9 6
2 8 4
torna-se
1 2 3
1 3 2
1 4 2
e finalmente
1 2 3
0 1 -1
0 2 -1
Escreva a matriz alterada.
M00002400 - Uma matriz dita de Hadamard se todos os seus elementos so 1 ou
-1, e o produto escalar (somatrio dos produtos de cada elemento de uma linha
pelo elemento correspondente da outra linha) entre quaisquer duas linhas igual
a zero. Faa um algoritmo que leia uma matriz M[1..4,1..4] e verifique se ela
de Hadamard escrevendo: 0 - Se no de Hadamard; 1 - Se de Hadamard
M00002500 - Faa um algoritmo que leia uma matriz M[1..3,1..3] e rotacione a
matriz 90 graus no sentido horrio, escrevendo a matriz resultante.
M00004900 - Um quadrado mgico de ordem N (sendo N um nmero mpar) um arranjo
de nmero de 1 a NxN em uma matriz quadrada de tal modo que a soma de cada
linha, coluna e diagonal a mesma. A matriz abaixo representa um quadrado
mgico de ordem 5.
15 8 1 24 17
16 14 7 5 23
22 20 13 6 4
3 21 19 12 10
9 2 25 18 11
A regra para ger-lo relativamente fcil de observar: Comece com 1 no meio da
primeira linha, ento siga para cima e para a esquerda diagonalmente (quando
sair do quadrado suponha que os lados superior e inferior esto unidos ou que os
lados da direita e da esquerda esto unidos, conforme for o caso). Em cada
quadrado que passar coloque o valor do quadrado anterior mais 1 (um). Quando a
prxima casa estiver j preenchida, desa um quadrado e continue seguindo a
diagonal at ter preenchido todos os quadrados. Escrever um algoritmo que l um
nmero N mpar, menor ou igual a 99, e gere e escreva, para o nmero lido, o seu
quadrado mgico.
M00005000 - Faa um algoritmo que leia duas matrizes M[1..3,1..3] e N[1..3,1..3]
(primeiro a matriz M, e aps a matriz N) e calcule o produto matricial MxN
colocando o resultado em uma matriz P[1..3,1..3]. Escreve ao final a matriz P.
M00005100 - As pirmides tm a base quadrada, sendo que a nica forma de se
atingir o topo seguir em espiral pela borda. Escreva um algoritmo que leia um
valor N e, a seguir, uma matriz quadrada A[n,n] de ordem no mximo igual a 10, e
verifique se a matriz equivalente a uma pirmide inca, ou seja, se partindo-se
do canto superior esquerdo da matriz, no sentido horrio, em espiral, a posio
seguinte na ordem o inteiro consecutivo da posio anterior. O algoritmo deve
escrever: 1 - Se a matriz forma uma pirmide inca; 0 - Em caso contrrio.
M00005200 - Escreva um algoritmo que leia duas matrizes numricas A[3 X 4] e B[3
X 4] e gere e escreva uma matriz inteira C[3 X 4], tal que um elemento C[i,j]= 1
se os elementos nas mesmas posies das matrizes A e B forem iguais, e 0 em caso
contrrio. O algoritmo deve, ao final, escrever a matriz C.
M00005300 - Na Teoria de Sistemas, define-se como elemento minimax de uma matriz
o menor elemento da linha em que se encontra o maior elemento da matriz. Escreva
um algoritmo que leia uma matriz A[5 X 5] e determine o seu elemento minimax. O
algoritmo deve, ao final, escrever o valor do elemento minimax, bem como a linha
e coluna onde ocorreu.
M00005400 - (Problema especfico da disciplina de Teoria de Grafos) Uma matriz
de adjacncias, para um mapa rodovirio, composta de elementos 0's e 1's,
sendo que M[i,j]= 1 se existe uma ligao rodoviria da cidade i para a cidade j
e M[i,j]= 0 em caso contrrio. Essa matriz ser simtrica se para todo caminho
i,j existir o caminho j,i (estradas de mo dupla). Matrizes de adjacncias so
uma das formas utilizadas para representao de grafos. Escreva um algoritmo que
leia uma matriz de adjacncias M para um conjunto de 5 cidades e, aps, leia os
valores c1 e c2 (ambos menores ou iguais a 5) representando duas cidades
quaisquer do conjunto. O algoritmo deve descrever o menor caminho de c1 a c2,
mostrando a cidade inicial, as cidades intermedirias e a cidade final.
24 Sequenciais
59 Condicionais
95 Iterativos
84 de Vetores
33 de Matrizes
total: 295 problemas

Potrebbero piacerti anche