Vous êtes sur la page 1sur 23

Jefferson Gustavo Martins

Estrutura Seqüencial

CEFETPR - Medianeira

Exercícios

1

 

Faça um programa que escreva a mensagem “Olá Mundo”.

 
 

Faça um programa que leia o nome do usuário e, logo em seguida, escreva a mensagem “Olá” seguida do nome do usuário.

 

Faça um programa que leia um valor inteiro, adicione 2 ao valor e escreva o resultado da soma.

 
 

Faça um programa que leia 2 valores inteiros e escreva a soma dos mesmos.

 
 

Faça um programa que leia a altura dos andares de um prédio e o número de andares, e calcule a altura do prédio.

 
 

Faça um programa que leia o comprimento, a altura e a espessura de um sólido cúbico e imprima o volume do mesmo.

 
 

Faça um programa que leia um valor qualquer e encontre o maior inteiro menor ou igual à raiz do valor lido.

 
 

Faça programas para o cálculo de

 

a) v = ri

 

c) i = q/t

e) p = ri 2

b) p = vi

d) v = w/q

f) p = v 2 /r

onde v-tensão, i-corrente, r-resistência, p-potência, t-tempo, q-carga elétrica e w-trabalho/energia

 
 

Considerando o fato de que um byte tem 8 bits, que um kilobyte (KB) tem 1024 bytes e que um megabyte (MB) tem 1024 KB, escrever um programa para, dada a capacidade de armazenamento de uma máquina qualquer (em MB), calcular e escrever o número bits existentes.

 

Fazer um programa que, mediante a leitura de uma distância (em Km), do período de tempo (em hora) utilizado para percorrê-lo e da quantidade de combustível (em litros) utilizada, calcule a velocidade média(em Km/h) e o consumo médio

do

automóvel (em Km/l).

 
 

Faça um programa que leia o raio e escreva o volume de uma esfera.

 
 

4 p

r

3

 

Obs.:

v =

 
 

3

 

Escreva um programa que calcule a média aritmética das notas obtidas por um aluno, considerando que o aluno tenha

*

(obrigatoriamente) 4 notas.

 
 

Considere que a média bimestral é composta por 1 trabalho (peso 3) e 1 prova (peso 7) e que a média semestral é composta

*

pela média entre duas médias bimestrais. Faça um programa que leia as notas de um aluno e calcule as médias bimestrais e a média semestral do mesmo.

 

Faça um programa que, dado um valor, encontre o maior inteiro menor ou igual à raiz do valor fornecido.

 
 

Faça um programa que, mediante a entrada de um horário, calcule o número de segundo decorridos no presente dia. Observação: hora e minuto devem ser lidos em variáveis distintas; 1 hora = 60 minutos e 1 minuto = 60 segundos.

 
 

Faça um programa que, mediante a entrada de uma idade qualquer (em anos), calcule o número de meses e o número de dias vividos pela pessoa. Observação: 1 ano = 365 dias e 1 ano = 12 meses.

 

Faça um programa que leia o custo da saca de cal, da saca de cimento, do metro de pedra, do metro de areia, do metro de ferro, do milheiro de tijolos e o valor da diária de um operário. Após esta leitura o algoritmo deve ler a quantidade dos itens anteriores (empregada na conclusão de uma determinada obra) e calcular o custo da obra.

 

Um terreno possui um desnível de aproximadamente 0.11m a cada 9.5m. Considerando que o cálculo seja dado pela

fórmula V = (0.11/9.5) * L 1

* L 2 (onde V é o volume em m 3 de terra necessária para fazer o aterro e L 1 e L 2 são as

dimensões da obra), faça um algoritmo que leia as dimensões e calcule a quantidade de terra necessária para nivelar o terreno.

 

Uma casa de pizzas vende em três tamanhos: pequeno (10 polegadas de diâmetro), médio (12 polegadas de diâmetro) e grande (16 polegadas de diâmetro). Uma pizza pode ser comprada simples (com molho e queijo unicamente) ou com ingredientes extras, tais como pimentões, cogumelos ou cebola.

O

dono da pizzaria deseja desenvolver um programa para calcular o preço de venda da pizza, dado o seu tamanho e o

número de ingredientes. O preço de venda será 1.5 vezes o custo total, o qual é determinado pela área da pizza e pelo número de ingredientes. Em especial, o custo total incluirá um custo fixo de preparação, um custo base variável que é proporcional ao tamanho de cada pizza e um custo variável adicional para cada ingrediente extra. Por simplicidade, será assumido que cada ingrediente extra tem o mesmo custo por unidade de área. Considere agora uma pizza cujo diâmetro é d, com n ingredientes extras. O preço de venda desta pizza será determinado

por:

onde

custo = custofixo + (custobase * área) +

(n * custoExtra * área)

e

 

2

 
 

preço = 1.5 * custo , d p

.

área =

 

4

 

Portanto, o preço de venda da pizza pode ser facilmente determinado se os vários custos forem conhecidos e o tamanho (isto é, diâmetro) e o número de ingredientes for especificado.

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

2

k * q *q 1 2 A intensidade de campo elétrico (E) entre duas cargas
k
*
q
*q
1
2
A
intensidade de campo elétrico (E) entre duas cargas elétricas (q 1 e q 2 ) é dada por
, onde K é uma constante
2
d
*
com valor de 9 * 10 9 Nm 2 /C 2 (N – Newton e C – unidade de carga elétrica, coulomb) e d é a distância entre as cargas. Faça
um programa que, mediante a entrada de q 1 e q 2 e d, calcule e escreva E.
Calcule a massa de ar de um pneu de automóvel, usando a fórmula: PV = 0.37m(T + 460) , onde P – pressão, V –
volume, m – massa de ar e T – temperatura.
O
objeto (+) sofre a ação de duas forças (F 1 e F 2 ) sob um ângulo de 90º, o que gera uma força resultante R, dada por
F1
R
F2
+
2
2
2
R
= F
+ F
, conforme ilustra esta figura
. Faça um programa que mediante a entrada dos valores de F 1
1
2
e F 2 , calcule R.
O
objeto (+) sofre a ação de duas forças (F 1 e F 2 ) sob um ângulos q 1 e q 2 , o que gera uma força resultante R, dada por
F1
R
O1 _ _
F2
O2
*
+
2
2
2
R
= F
+ F
, conforme ilustra esta figura
, onde Fx é dado por
F
=
F
+
F
,
F
F
*
Cosq
1
X =
,
X
Y
X
1
X
2
X
1
1
F
F
*
Cosq
2
, F
=
F
+
F
,
F
F
*
Senq
1
F
F
*
Senq
2
X =
Y =
,
Y =
. Faça um programa que mediante a
2
2
Y
1
Y
2
Y
1
1
2
2
entrada dos valores F 1 e F 2 , calcule R.
Construa um programa que calcule a quantidade de latas de tinta necessárias e o custo para pintar tanques cilíndricos de
combustível, em que são fornecidos a altura e o raio desse cilindro. Sabendo que:
- a lata de tinta custa R$ 50,00.
- cada lata contém 5 litros;
- cada litro de tinta pinta 3 m 2 .
2
A
energia (E) é obtida através da equação E
= mc , onde E é energia, m é a massa e c a velocidade da luz. Faça um
programa que, mediante a entrada de m calcule e escreva E. Observação: c é uma constante com valor de 300 000 000
Km/s.
Uma empresa, promotora de concursos, pretende fazer um programa para o cálculo do número de salas necessárias para a
realização de provas. Desta forma, o programa deverá obter o número total de candidatos e o número de pessoas que podem
realizar as provas em uma mesma sala, calcular e escrever o número de salas.
b*h
A
área de um triângulo retângulo (a) é obtida é obtida a partir da fórmula
a =
. Faça um programa que, mediante o
2
fornecimento das dimensões da base (b) e da altura (h), encontre a
2
2
2
A
dimensão da hipotenusa (a) é obtida a partir da fórmula
a
= b
+ c . Faça um programa que, mediante o fornecimento
dos catetos (b e c), encontra a.
2
Dada a equação y = x - 2x -
x
, fazer um programa para, mediante a entrada (pelo usuário) de um valor para x,
*
calcular e escrever y.
5(
F
- 32)
A
conversão entre as escalas (temperatura) Celsius e Farheinheit pode ser obtida a partir da fórmula
C
=
.
9
Escreva um programa para a conversão de Celsius para Fahreinheit, denominado CelsiusToFahreinheit, e outro para a
conversão de Fahreinheit para Celsius, denominado FahreinheitToCelsius.
*
Considerando a fórmula para o cálculo do instante S
=
s
+
v t
, fazer um programa que, mediante o fornecimento de um
0
0
valor qualquer para t (pelo usuário), calcule S.
Dado que V = v
+ at , faça um programa que, mediante a entrada de um t qualquer (pelo usuário), calcule V.
0
2
at
Considerando a fórmula para o cálculo do instante
S = s
+ v t +
, fazer um programa que, mediante o fornecimento
0
0
2
*
de
um valor qualquer para t (pelo usuário), calcule S.
Escreva u m programa que leia dois valores e escreva a diferença entre eles.

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

3

2 2 A distância entre dois pontos A=(x 1 , y 1 ) e B=(x
2
2
A
distância entre dois pontos A=(x 1 , y 1 ) e B=(x 2 , y 2 ) é dada por
d =
(x
- x )
+ ( y
- y )
. Escreva um programa
2
1
2
1
que calcule e escreva a distância entre dois pontos quaisquer, cujas coordenadas x e y são fornecidas pelo usuário.
Escreva um programa que leia os valores dos coeficientes de uma equação de 2 o grau (Ax 2 + Bx + C) e calcule suas raízes
2
-
b
±
b
-
4
ac
*
reais, através da fórmula
.
2 a
Faça um programa que leia a massa e o volume de uma solução e calcule sua molaridade, considerando a massa molar com
o
valor constante de 40 g/mol e as fórmulas
n E
(
)
m E
(
)
M
=
e
n
(
E
)
=
, onde M – molaridade, n – número de mols, v – volume, m – massa e mm – massa
*
v
mm E
(
)
molar.
A
fração molar (X) de um elemento (E) é dada pela divisão do número de mols do elemento pela soma do número de mols
n
(
E
)
dos elementos que compõem a solução, ou seja,
X
(
E
)
=
. O número de mols (n) de um elemento (E), por sua
n
Â
n
(
E
)
i
*
i = 1
m E
(
)
vez, é dado pela divisão de sua massa (m) por sua massa molar (mm), ou seja,
n
(
E
)
=
. Faça um programa
mm E
(
)
(denominado FracaoMolar) que calcule as frações molares de uma solução, composta pelos elementos genéricos A e B, a
partir de suas massas e massas molares.
Faça um programa que encontre a solução de um sistema de equações lineares, sabendo que dada o sistema genérico
b
y
= a x
u
-
1
1
b
y
= a x
v
-
2
2
tem a solução é dada por
b
b
2
1
x =
u
-
v
a 1 b
-
b a
a 1 b a
b
-
2
1
2
2
1
2
-
a
a
2
1
y
=
u
+
v
a 1 b
-
b a
a 1 b a
b
-
2
1
2
2
1
2
O
resultado final corresponde à escrita do sistema de equações (no seguinte formato b y
=
u
-
a x
1
1
b
y
=
v
-
a x
)
2
2
e
os valores de x e y (no seguinte formato
x
= valor_x
y
= valor_y).
Supondo que a população de um país A seja de 90.000.000 habitantes com taxa anual de crescimento de 3% e que a
população de um país B seja, aproximadamente, de 200.000.000 habitantes com uma taxa anual de crescimento de 1.5%,
fazer um programa que calcule e escreva o número de anos necessário s para que a população do país A ultrapasse ou
iguale a população do país B, mantidas essas taxas de crescimento. Considere a fórmula para o cálculo do Montante:
M
n = C (I + 1) n , onde
M – montante após terem decorridos n períodos;
C
– capital inicial investido;
I – taxa de juros ao período;
N
– número de períodos decorridos
Anacleto tem 1.50 metros e cresce 2 centímetros por ano, enquanto Felisberto tem 1.10 metros e cresce 3 centímetros por
ano. Construa um algoritmo que calcule e escreva quantos anos serão necessários para que Felisberto seja maior que
Anacleto.
Uma empresa monta, em média, um TV a cada 20 minutos e utiliza, para isso, a mão-de-obra de 3 funcionários. Faça um
programa que, dado o número de funcionário e o número de dias trabalhados e considerando uma jornada de 8 horas de
trabalho, calcule a quantidade de TVs produzidas.

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

4

José é proprietário de uma empresa que revende componentes eletro-eletrônicos e tem um renda média
José é proprietário de uma empresa que revende componentes eletro-eletrônicos e tem um renda média de 10% das vendas
efetuadas. Considerando que a empresa tenha aderido ao sistema de lucro presumido e que pague 2% do lucro de Imposto
de Renda (IR), faça um programa que calcule, mediante entrada das vendas (mensais) realizadas durante 6 meses, o lucro,
os impostos e o lucro líquido.
A perda de carga em tubulações para vazões é dada pela fórmula de Hanzen-Willians
J = Q 1.85 * 10.643 * D 4.87 * C -1.85 ,
*
onde J = perda de carga (m/1000m), Q = vazão (m 3 /s), D = diâmetro do tubo (m 2 ) e C = coeficiente de rugosidade. Escreva
um programa (denominado PerdaCarga) que, a partir dos valores de Q, D e C, calcule J.
Um fio de arame de X metros é esticado do nível do chão até o topo
de um poste. Sabendo-se que o arame faz um ângulo de a graus no
chão, determine a altura do poste.
(uTrigonometria)
arame
h
a
chão
Um observador visualiza o ponto culminante de um morro sob um
ângulo de q. Afastando-se do morro mais delta metros passa a
visualizar o mesmo ponto sob um ângulo de a graus. Faça um
programa para, dados q, a e delta, calcular a altura do morro.
h
a
t
(uTrigonometria2)
delta
x
Rotinas
Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada a massa inicial, em gramas, fazer
uma rotina com o seguinte cabeçalho
*
void calculaMassa(float massaInicial, float *massaFinal, int *hora, int *minuto, int *segundo)
que determine o tempo necessário para que essa massa se torne menor do que 0.5 gramas. Escreva a massa inicial, a massa
final e o tempo calculado em horas, minutos e segundos retornados através do parâmetros.
Sendo H = 1 + 1/2 + 1/3 + 1/4 +
+ 1/N, faça uma rotina com o seguinte cabeçalho
*
float calculaSerie(int N)
para gerar o número H, mediante a leitura do valor de N na rotina main e sua passagem através do argumento N.
Uma agência de publicidade quer separar as companhias de acordo com os respectivos números de funcionários em: grande,
média, pequena e microempresa. Para tal, consegue um conjunto de dados com o código, o número de funcionários e o porte
da empresa. Construa uma rotina com o seguinte cabeçalho
*
void classificaEmpresa(int *grande, int *media, int *pequena, int *micro)
que leia estes dados para cada empresa e totalize o número de empresas em cada categoria. Observação: as leituras devem
ser feitas dentro da rotina e deve-se utilizar, como indicador de término de leituras, o código de empresa igual a 0 (zero).
Fazer uma rotina com o seguinte cabeçalho
void calculaEX(float x, float *eX, int *iteracao)
1
2
3
x
x
x
x
0
que calcule o valor de e x através da série:
e
=
x
+
+
+
+
de modo que o mesmo difira do valor calculado
1!
2!
3!
*
através do comando (função) exp de, no Maximo, 0.0001. O valor de x deve ser lido na rotina main e, ao término da
execução do programa deverá ser escrito o valor de x, o valor calculado através da série, o valor dado pela função exp e o
número de termos utilizados da série. Obs.: a função exp(x) retorna o valor de e na potência x e talvez seja necessário incluir
a biblioteca math.h – #include <math.h>.
linhas de visão
Na teoria dos jogos, um “ponto de sela” é caracterizado por uma entrada em uma matriz, tal que esta seja o valor mínimo
(menor valor) para sua linha e o máximo (maior valor) para sua coluna. Escreva a rotina
int rotPontoSela(float *M, int nLin, int nCol, int *pLin, int *pCol)
para, dada uma matriz M com nLin linhas e nCol colunas, retornar a posição (linha e coluna, respectivamente nos endereços
apontados por pLin e pCol) e o valor 1 se esta característica ocorrer na matriz, ou 0 (zero) caso contrário.

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

Estruturas de Seleção

CEFETPR - Medianeira

5

Faça um programa que leia um valor inteiro e, se este for par, adicione 2
Faça um programa que leia um valor inteiro e, se este for par, adicione 2 ao valor, senão multiplique-o por 2, e escreva o
resultado final.
Faça um programa que leia a altura dos andares de um prédio e o número de andares, e calcule a altura do prédio, após
validar os valores lidos.
Faça um programa que leia o comprimento, a altura e a espessura de um sólido cúbico e escreva o volume do mesmo, após
validar os valores lidos.
Faça um programa que calcule a média aritmética das notas obtidas por um aluno, considerando que o aluno tenha
(obrigatoriamente) 4 notas e que este seja aprovado com média superior ou igual a 60; caso contrário o aluno é reprovado.
Faça um programa que leia três valores inteiros e mostre-os em ordem crescente. Utilize para tal uma seleção encadeada.
Faça um programa que leia dois valores e se a diferença entre eles for maior que 10, escreva a distância.
Faça um programa que leia a massa e o volume de uma solução e calcule sua molaridade, considerando a massa molar com
o
valor constante de 40 g/mol e as fórmulas
n E
(
)
m E
(
)
M
=
e
n
(
E
)
=
, onde M – molaridade, n – número de mols, v – volume, m – massa e mm – massa
v
mm E
(
)
molar.
Obs.: v 0 (zero) e mm 0 (zero).
A
fração molar (X) de um elemento (E) é dada pela divisão do número de mols do elemento pela soma do número de mols
n
(
E
)
dos elementos que compõem a solução, ou seja,
X
(
E
)
=
. O número de mols (n) de um elemento (E), por sua
n
Â
n
(
E
)
i
i = 1
m E
(
)
vez, é dado pela divisão de sua massa (m) por sua massa molar (mm), ou seja,
n
(
E
)
=
. Faça um programa
mm E
(
)
(denominado FracaoMolar) que calcule as frações molares de uma solução, composta pelos elementos genéricos A e B, a
partir de suas massas e massas molares.
n
Obs.:
Â
n
(
E
)
0
e mm(E) 0 .
i
i = 1
Faça um programa que encontre a raiz de uma equação de 1 o grau (Bx + C) e determine se esta reta é crescente ou
decrescente.
Faça um programa que encontre as raízes de uma equação de 2 o grau (Ax 2 + Bx + C), caso estas sejam reais.
*
Obs.: se delta >= 0, existe raízes reais, senão apenas imaginárias.
Dados os pontos A, B e C (no plano cartesiano), faça um programa que identifique a existência (ou não) de um triângulo
*
(retângulo ou não) formado pela ligação destes pontos e calcule a área deste triângulo.
Dada uma equação de 2 o grau (Ax 2 + Bx + C), faça um programa que determine se esta função tem valor de máximo ou de
mínimo e qual é este ponto (Yv e Xv) e em que intervalo a função é crescente e em que intervalo ela é crescente.
-
b
- delta
2
Obs.:
Xv =
e Yv
=
, onde delta
=
b
-
4ac
.
2
a
4 a
Faça um programa que calcule a idade de uma pessoa a partir de sua data de nascimento (dia, mês, ano) e da data atual (dia,
mês, ano).
Tendo dados de entrada a altura e o sexo de uma pessoa, construa um programa que calcule seu peso ideal, utilizando as
seguintes fórmulas:
- para homens: (72.7 * h) – 58;
- para mulheres: (62.1 * h) – 44.7.
-
Faça um programa que leia o ano de nascimento de uma pessoa, calcule e mostre sua idade e, também, verifique e mostre se
ela já tem idade para votar (16 anos ou mais) e para conseguir a Carteira de Habilitação (18 anos ou mais).
O
dia da semana para uma data qualquer pode ser obtido a partir da fórmula a seguir:
diaSemana = ((int)(2.6 * mes – 0.1) + dia + ano + ano div 4 + seculo div 4 – 2 * seculo) % 7 + 7,
onde
-
mes é o número do mês. Obs.: Janeiro e Fevereiro são os meses 11 e 12 do ano precedente, março é o mês 1 e dezembro é
o
mês 10.
-
dia representa o dia do mês.
-
ano representa o número formado pelos dois últimos algarismos do ano.
-
seculo representa o número formado pelos dois primeiros algarismos do ano.

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

6

- os dias da semana são numerados de zero a seis, sendo que domingo corresponde a 0 e sábado a 6.

Escreva um programa que escreva a data lida no formato dia/mês/ano e o dia da semana.

Faça um programa que encontre a solução de um sistema de equações lineares.

 

Exemplo:

*

y

= x + 2

y

= 5x

A perda de carga em tubulações para vazões é dada pela fórmula de Hanzen-Willians J = Q 1.85 * 10.643 * D 4.87 * C -1.85 , onde J = perda de carga (m/1000m), Q = vazão (m 3 /s), D = diâmetro do tubo (m 2 ) e C = coeficiente de rugosidade. Escreva um programa (denominado PerdaCarga) que, a partir dos valores de Q, D e C, calcule J. Obs.: validar os valores das variáveis.

Escreva um programa que, dado um valor inteiro (com 4 dígitos), verifique se este possui a seguinte característica 30 + 25 = 55

* 55 2

= 3025.

*

Escreva um programa que, dado um valor inteiro (com 4 dígitos), verifique se este é um número dobradiça, isto é, se tem as duas metades iguais.

Exemplos:

Números

dobradiça:

5454 Æ 54

= =

54;

3333 Æ 33

= =

33;

Números não-dobradiça: 3331 Æ 33 = = 31;

3939 Æ 39

= =

39;

Escreva um programa que leia o número de um funcionário, o número de horas por ele trabalhadas (nHTrab), o valor que recebe por hora (vlrHora), o número de filhos com idade inferior a 14 anos (nFilho), valor do salário família por filho (slrFamFilho), a idade, o tempo de serviço do funcionário.

Após esta etapa de leituras, o programa deverá calcular (nesta seqüência) o salário bruto (obtido através do produto entre nHTrab e vlrHora, o salário família (obtido através do produto entre nFilho e slrFamFilho), o desconto do INSS (8,5%

do salário bruto), os adicionais e o imposto de renda (IR), como segue:

Cálculo dos adicionais:

Se idade do funcionário for superior a 40 anos, o adicional é igual a 2% do salário bruto

* Se o tempo de serviço for superior a 15 anos, o adicional é igual a 3.5% do salário bruto. Se tempo de serviço for menor que 15 anos, mas superior a 5 anos e idade maior que 30 anos então adicional é igual a 1,5% do salário bruto.

Cálculo do IR:

Se salário bruto > 1500 então IR = 15% do salário bruto Se salário bruto > 500 e salário bruto < 1500 então IR = 8% do salário bruto Se salário bruto <= 500 então IR = 0%

Mostrar, na tela, o número do funcionário, o salário bruto, o total adicional, o total de descontos e o salário líquido.

*

A partir dos lados (A, B, C) de um triângulo retângulo (

C B _ O
C
B
_
O

A

) pode-se obter o valor do ângulo

Tanq =

B Senq =

B Cosq =

. Faça um programa que, a partir dos valores de A, B e C calcule q.
C

A

q, pois

Dado que a dilatação de uma barra metálica é dada por DL = Dt *a * L , onde L – comprimento da barra, DL - dilatação, DT - temperatura e a - coeficiente de dilatação:

*

Metal

Coeficiente de Dilatação

Aço

11.7

* 10 -6 / ºC

Aço Inoxidável

17.3* 10 -6 / ºC

Ferro Fundido

12.1

* 10 -6 / ºC

Latão

20.0

* 10 -6 / ºC

Concreto

10.0

* 10 -6 / ºC

Poliestireno

72.0

* 10 -6 / ºC

Vidro Plano

950.0 * 10 -6 / ºC

, faça um programa que, a partir da

leitura do material e do tamanho da barra, calcule o tamanho desta barra após a

,
A

e

C

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

7

dilatação. Escreva um programa que leia o grupo e o salário de uma pessoa e
dilatação.
Escreva um programa que leia o grupo e o salário de uma pessoa e calcule o Imposto de Renda (IR) a ser pago por ela,
considerando a seguinte tabela:
Grupo
Salário
Desconto
1
< 1000
0%
2
> 1000 e < 2000
8.5%
3
> 2000 e < 3000
12%
4
> 3000
27.5%
Escreva um programa que leia o código de um determinado produto e mostre a sua classificação. Utilize a seguinte tabela
como referência:
Grupo
Classificação
1
Alimento Não-Perecível
*
2, 3 ou 4
Alimento Perecível
5 ou 6
Vestuário
7
Higiene Pessoal
8 até 15
Limpeza e Utensílios Domésticos
Qualquer Outro Código
Inválido
Escreva um programa que, dada a idade de um nadador, classifique-o em uma das seguintes categorias:
Idade
Categoria
5 até 7 anos
Infantil A
*
8 até 10 anos
Infantil B
11
até 13 anos
Juvenil A
14
até 17 anos
Juvenil B
Maiores de 18 anos
Adulto
Elabore um programa que calcule o que deve ser paga por um produto, considerando o preço normal de etiqueta e a escolha
da condição de pagamento. Utilize os códigos da tabela a seguir para ler qual a condição de pagamento escolhida e efetuar
o cálculo adequado.
Código
Condição de Pagamento
1
À vista em dinheiro ou cheque, recebe 10% de desconto.
2
À vista no cartão de crédito, recebe 5% de desconto.
3
Em 2 vezes, preço normal de etiqueta sem juros.
4
Em 3 vezes, preço normal de etiqueta mais juros de 10%.
Implemente uma rotina que leia os valores de dois números inteiros e a operação aritmética a ser aplicada sobre eles
enquanto os valores fornecidos pelo usuário forem diferentes de zero; a cada par de valores lidos a rotina deverá calcular e
escrever a resposta adequada. Observação: Utilize os símbolos da tabela a seguir para identificar a operação aritmética
*
escolhida.
Símbolo
Operação Aritmética
+
Adição
-
Subtração
*
Multiplicação
/
Divisão
Um certo aço é classificado de acordo com o resultado de três testes, que deve verificar se o mesmo satisfaz às seguintes
especificações:
- Teste 1 – conteúdo de carbono abaixo de 7%;
- Teste 2 – dureza Rokwell maior que 50;
*
- Teste 3 – resistência à tração maior do que 80000psi.
O aço é atribuído o grau 10, se passa pelos três testes; 9, se passa apenas nos testes 1 e 2; 8, se passa no teste 1; 7, se não
passou nos três testes. Supondo uma amostra, conteúdo de carbono (em %), a dureza Rokwell e a resistência à tração (em
psi) sejam lidos, fazer um programa que dê a classificação desta amostra de aço, escrevendo o grau obtido.
Faça um programa que, dadas as dimensões de uma área qualquer, calcule o número de pisos (azulejos) necessários para

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

8

revestí-lo. Obs.: os pisos podem ter as seguintes dimensões: 20x20, 15x15, 30x30, 30x50. Outras dimensões podem ainda ser adicionadas.

Considerando que você precise que escolher as melhores dimensões para uma parede (ou uma viga) e que este processo envolva cálculos exaustivos, faça um programa para encontrar as possíveis combinações de medidas que satisfaçam as necessidades de seu problema. Para isso, considere que estas medidas devem estar compreendidas em um intervalo M = [M min , M max ], onde M representa o comprimento, a largura e a espessura, e que a variação das dimensões é de 0.5cm.

Escreva um programa que, dado os valores de x e y, atribua um valor à variável N sob as seguintes condições

 

valores de x e y

x < 5

x = = 5

x > 5

 

y

< 12

1.00

2.00

3.00

y

= = 12

4.00

5.00

6.00

y

> 12

7.00

8.00

9.00

Estruturas de Repetição

 

Faça um programa que conte de 1 a 100.

 
 

Faça um programa que apresente, na tela, a tabela ASCII. Observação: a função deve utilizar a mesma variável para mostrar o código ASCII e o caractere associado.

 

Faça um programa que leia valores enquanto o valor digitado for maior ou igual a zero.

 
 

Faça um programa que leia valores enquanto o valor digitado for par.

 
 

Escreva um programa que obtenha a soma dos números pares positivos menores que 500.

 
 

Faça um programa que, dado um conjunto de valores inteiros não-negativos, determine qual o menor e o maior valor do

conjunto. Obs.: o final do conjunto será determinado quando o usuário entrar com o valor considerado.

-1, o qual não deve ser

 

Faça um programa que leia um valor inteiro e não-negativo e escreva todos os inteiros positivos menores que ele.

 
 

Faça um programa que escreva a tabuada de um valor qualquer.

 
 

Faça um programa que escreva todas as possibilidades de que no lançamento de dois dados obtenha-se o valor 7 (sete) como soma dos valores de cada dado.

*

Dados valores numéricos a e b quaisquer, calcule (a*b) utilizando apenas a operação de soma.

 

*

Dados valores numéricos a e b quaisquer, calcule ((int) a/b) utilizando apenas a operação de subtração.

 

*

Dados valores numéricos a e b quaisquer, calcule (a%b) utilizando apenas a operação de subtração.

 
 

Faça um programa que leia números inteiros até que os 3 últimos valores lidos totalizem 24. Exemplos:

 

*

1 10

15 0

9

0

1 100 6 15 3

 

Dados os números de entrada, a e b, encontrar c que satisfaça

a + c

2

= b

2

2

.

 

Dados os números de entrada, a e b, encontrar c que satisfaça

a + c , tolerando um erro máximo de

2

= b

2

2

a .

a .

 
 

Escreva um programa para encontrar aqueles números inteiros Z, de 1 a 50, que podem ser escritos na fórmula Z 2 = X 2 + Y 2 , com números positivos X e Y.

 

Em uma eleição presidencial, existem quatro candidatos. Os votos são informados através de código. Os dados utilizados para a escrutinagem obedecem à seguinte codificação:

- 1, 2, 3, 4 = voto para os respectivos candidatos;

 

- 5 = voto nulo;

 

- 6 = voto em branco.

 

Elabore um programa que calcule e escreva:

- o total de votos para cada candidato;

- total de votos nulos;

- total de votos em branco;

- percentual dos votos em branco e nulos sobre o total.

Obs.: considere que o valor 0 (zero) seja o finalizador da leitura dos votos e que este não deve ser considerado na

totalização dos votos.

 
 

Escreva um programa que obtenha os 100 primeiros números ímpares.

 
 

Escreva os programas anteriores (volume de um sólido cúbico, altura de um prédio, equação de 2º grau (A != 0), molaridade e frações molares) utilizando o laço para repetir a leitura dos valores enquanto o usuário entrar com valores inválidos.

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

9

 

Considere o seguinte algoritmo:

int i; int s = 1; for (i=1; i<=20; i++) =

2 * s;

s Qual o valor da variável s no fim da execução?

 
 

Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada a massa inicial, em gramas,

*

fazer um programa que determine o tempo necessário para que essa massa se torne menor do que 0.5 gramas. Escreva a massa inicial, a massa final e o tempo calculado em horas, minutos e segundos.

 

Faça um programa que efetue a soma de todos os números ímpares que são múltiplos de três e que se encontram no conjunto dos números de 1 até um valor qualquer.

 

Faça um programa que, dado um valor K qualquer, efetue a soma de todos seus múltiplos que se encontram entre os números N1 e N2. Obs.: K, N1 e N2 devem ser obtidos a partir de leitura e poderão ser quaisquer valores.

 

Escreva um programa que leia um conjunto de 20 números inteiros e mostre qual foi o maior e o menor valor fornecido.

 
 

Faça um programa que encontre todos os inteiros (com 4 dígitos) que possuírem a seguinte característica

 

*

30 + 25 = 55

 
 

55 2

= 3025.

 

Considerando que você precise que escolher as melhores dimensões para uma parede (ou uma viga) e que este processo envolva cálculos exaustivos, faça um programa para encontrar as possíveis combinações de medidas que satisfaçam as necessidades de seu problema. Para isso, considere que estas medidas devem estar compreendidas em um intervalo M = [M min , M max ], onde M representa o comprimento, a largura e a espessura, e que a variação das dimensões é de 0.5cm.

 

Escreva um programa que calcule a perda de carga em tubulações para vazões que variem de 1 litro/s a 100 litros/s, através da fórmula de Hanzen-Willians:

J

= Q 1.85 * 10.643 * D 4.87 * C -1.85

 

onde

 

J

= perda de carga (m/1000m)

Q

= vazão (m 3 /s)

D

= diâmetro do tubo (m 2 )

C

= coeficiente de rugosidade.

 

Faça um programa que leia um valor inteiro e verifique se este é primo. Obs.: um número é primo se este é divisível apenas por ele e por 1.

 

Faça um programa que leia um valor inteiro e imprima todos os números primos menores que ele. Obs.: um número é

*

primo se este é divisível apenas por ele e por 1.

 
 

Faça um programa que leia dois valores inteiros (N1 e N2) e escreva todos os inteiros primos entre eles.

 
 

Sendo H = 1 + 1/2 + 1/3 + 1/4 +

+ 1/N, faça um programa para gerar o número H, mediante a leitura do valor de N, pelo

*

usuário.

 
 

Conta-se que o grande matemático árabe Abdul Aliba Bah tinha um primo que de sete em sete dias não andava de camelo, por receio de levar uma mordida; isso seria resultado de um trauma de infância. Em homenagem a esse primo, com que o grande matemático fazia pescarias no Oceano Índico, Abdul criou o conceito de número primo supersticioso. Um número é primo supersticioso quando for primo e seu último dígito for 7. Exemplos: 7, 17, 37 etc. Faça um programa que, dado um N qualquer, gere todos os números primos supersticiosos menores que ele.

 

Conta-se que o grande matemático árabe Abdul Aliba Bah tinha brigas freqüentes com a mãe de sua esposa. Quando iam preparar quibes, sua sogra discordava dele quanto à proporção de cebola ralada e carne. Abdul afirmava que era 1:2,

enquanto ela afirmava que seria 1:5; acabavam tentando chegar a um acordo, ficando em 1:3. A sogra de abdul tinha superstição parecida com a de seu primo: nunca comia mais de 7 quibes, por medo de indigestão. Em razão de tudo isso, Abdul criou o engenhoso conceito de números sogra. Um número sogra é qualquer número divisível simultaneamente por

2,

3 e 5, mas não divisível por 7. Exemplos: 30, 60, 90 etc. Faça um programa que, dado um N qualquer, gere todos os

números sogra menores que ele.

 

*

Faça um programa para gerar N termos da série de Fibonacci. Obs.: a série de Fibonacci é dada por 0, 1, 1, 2, 3,

genericamente, por

F

k

= F

k-1

+ F

k-2

para todo k > 1.

,

ou

 

Faça um programa para gerar o n-ésimo termos da série de Fibonacci. Obs.: a série de Fibonacci é dada por 0, 1, 1, 2, 3,

ou genericamente, por

F

k

= F

k-1

+ F

k-2

para todo k > 1.

,

 

Faça um progra ma que leia um valor inteiro e verifique se este pertence à série de Fibonacci. Obs.: a série de Fibonacci é

dada por 0, 1, 1, 2, 3,

,

ou genericamente, por

F

k

= F

k-1

+ F

k-2

para todo k > 1.

 

Faça um programa que leia um valor inteiro e verifique se este é perfeito. Obs.: um número é perfeito se este for igual à

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

10

soma de seus divisores, exceto ele próprio. Ex.: 6 = 1 + 2 + 3.
soma de seus divisores, exceto ele próprio. Ex.: 6 = 1 + 2 + 3.
Faça um programa que leia um valor inteiro e imprima todos os números perfeitos menores que ele. Obs.: um número é
perfeito se este for igual à soma de seus divisores, exceto ele próprio. Ex.: 6 = 1 + 2 + 3.
Fazer um programa que, dados 100 números inteiros positivos, calcule e imprima os que são números perfeitos. Obs.:
*
número perfeito é aquele cuja soma de seus divisores, exceto ele próprio, é igual o número. Exemplo: 6 = 1 + 2 + 3.
Faça um programa que leia um valor inteiro em base 10 e converta para a base binária. Observação: o valor binário é obtido
através de divisões sucessivas por 2 e inversão os restos.
Faça um programa que leia um valor inteiro e verifique se este é capicua. Obs.: um número é capicua se tiver o mesmo
valor, se lido da esquerda para a direita ou da direita para a esquerda. Ex.: 44, 262 etc.
Capicuas são números que têm o mesmo valor, se lidos da esquerda para a direita ou da direita para a esquerda. Ex.: 44, 232
etc.
*
Fazer um programa que determine e escreva todos os números inteiros menores que 10 4 e que são quadrados perfeitos e
capicuas ao mesmo tempo.
Faça um programa que leia um valor inteiro e imprima todos os números capicuas menores que ele. Obs.: um número é
*
capicua se tiver o mesmo valor, se lido da esquerda para a direita ou da direita para a esquerda. Ex.: 44, 262 etc.
2
3
2(
x
-
10
x
+
5)
+
45
x
Considerando a função
y
=
3
x
-
, faça um programa no qual o usuário entre com os extremos
3
2
*
x
-
x
-
2
x
de um intervalo (a, b) qualquer e calcule, para cada inteiro (x) do intervalo, o valor de y.
Considerando que um operário constrói 0.9 m 2 por dia, faça um programa que varie o número de operários de 1 até o
número suficiente pra construir uma obra qualquer em um único dia e mostre quantos dias serão gastos para concluir a obra,
para cada possível quantidade de operários. Observação: a área da obra deve ser fornecida pelo usuário.
Exemplo:
*
operários dias
1
10
2
5
6
1
Se uma pessoa efetua N experiências, com a probabilidade de sucessos P para cada experiência, a probabilidade de sucessos
Ê N ˆ
I
N - 1
exatos I é
Á
˜ P
(1
-
P
)
. Escreva um programa para computar a soma das probabilidades para I = 0 até N.
Ë
I
¯
Faça um programa que gere a seguinte pirâmide de dígitos, usando ciclos encaixados (Obs.: não gere apenas 10 cadeias):
1
232
34543
4567654
*
567898765
67890109876
7890123210987
890123454321098
90123456765432109
0123456789876543210
-at
Gere o gráfico da função y e sen(0.5t)
=
na tela, usando um (*) para cada um dos pontos que faz o desenho. Faça o
plano descer verticalmente com um ponto por linha. (Sugestão: cada linha deverá ser constituída por um asterisco,
precedido de um número apropriado de espaços. Determine a posição do asterisco com o truncamento do valor calculado,
isto é, considerando valor inteiro e desprezando as casas decimais).
Escreva um programa que transforme um inteiro positivo num número romano. Projete o programa de forma que possa
executá-lo repetidamente até eu o valor zero seja introduzido.
Escreva um programa que leia o grupo e o salário de 100 pessoas e calcule o Imposto de Renda (IR) a ser pago por cada
uma delas, considerando a seguinte tabela:
Grupo
Salário
Desconto
1
< 1000
0%
2
> 1000 e < 2000
8.5%
3
> 2000 e < 3000
12%
4
> 3000
27.5%
Idem ao programa anterior, porém, quando o usuário fornecer o valor 0 (zero) para o grupo, o programa deverá ser

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

11

encerrado (sair do laço de repetição).

Calcule o imposto de renda de um grupo de 10 contribuintes, considerando que os dados de cada contribuinte, número do CPF, número de dependentes e renda mensal são valores fornecidos pelo usuário. Para cada contribuinte será feito no desconto de 5% do salário mínimo por dependente. Os valores da alíquota para cálculo do imposto são:

*

 

Renda Líquida

Alíquota

Até 2 salários mínimos

Isento

2

a 3 salários mínimos

5%

3

a 5 salários mínimos

10%

5

a 7 salários mínimos

15%

Acima de 7 salários mínimos

20%

Observe que deve ser fornecido o valor atual do salário mínimo para que o programa calcule os valores correntes.

Um cinema possui capacidade de 100 lugares e está sempre com ocupação total. Certo dia, cada espectador respondeu a um questionário, no qual constava:

- sua idade;

- sua opinião em relação ao filme, segundo as seguintes notas:

Nota

Significado

A

Ótimo

B

Bom

C

Regular

D

Ruim

E

Péssimo

Elabore um programa que, lendo estes dados, calcule e escreva:

- a quantidade de respostas ótimo;

- a diferença percentual entre respostas bom e regular;

- a média de idade das pessoas que responderam ruim;

- a percentagem das respostas péssimo e a maior idade que utilizou esta opção;

- a diferença de idade entre a maior idade que respondeu ótimo e a maior idade que respondeu ruim.

Um prédio tem três elevadores denominados A, B e C. Para otimizar o sistema de controle dos elevadores, foi realizado um levantamento no qual cada usuário respondia:

- o elevador que utilizava com maior freqüência;

- o período que utilizava o elevador, entre:

 

- ‘M’ – Matutino;

*

- ‘V’ – Vespertino;

- ‘N’ – Noturno.

Construa um programa que calcule e escreva;

- qual é o elevador mais freqüentado e o período de maior fluxo deste elevador;

- qual o período mais usado de todos, considerando todos os elevadores;

- qual a diferença percentual entre o mais usado dos horários e o menos usado;

- qual a percentagem, do elevador de média utilização, sobre o total de serviços prestados.

Estruturas de Repetição e Matrizes

*

Seja a variável comp osta bidimensional M.

9000

10

175

225

3.7

4.75

432

363

9.8

100

156

18

6381

30.2

40

301

1

0

992

7213

402

4211

442

7321

1

2

21

3

9000

2000

a) Defina (declare) a matriz acima segundo a linguagem C/C++?

b) Quantos elementos fazem parte do conjunto?

c) Qual o conteúdo do elemento identificado por A[4][5]?

d) Qual o conteúdo de X após o comando X = A[0][4] + A[3][1], sendo que X é do tipo inteiro?

e) O que aconteceria caso fosse feito uma referência à posição A[4][6]?.

Dada a matriz 'mat' abaixo :

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

12

   

mat

*

O Q * I E ‘ E S R E U T A * *
O
Q
*
I
E
E
S
R
E
U
T
A
*
*
S

demonstre, através de uma Teste de Mesa, qual será sua configuração após a execução trecho de algoritmo a seguir. Descreva o que o algoritmo faz.

int i, j;

for (i=0; i<4; i++)

for (j=i+1; j<4; j++)

{

aux = mat [i][j] ;

mat[I][j] = mat [j][i] ;

mat[j][i] = aux ;

}

for (j=0; j<4/2; j++)

{

aux = mat[j][j];

mat[j][j] = mat[3-j][3-j];

mat[3-j][3-j] = aux;

}

 

Dada uma matriz A com dimensões MxN, faça um programa que a identifique como:

- Matriz Diagonal: matriz quadrada cujos elementos são zeros, com exceção daqueles pertencentes à diagonal principal;

- Matriz Escalar: matriz diagonal na qual todos os elementos da diagonal principal são iguais;

*

- Matriz Identidade ou Unidade: matriz diagonal cujos elementos da diagonal principal são todos iguais a 1 (um).

- Matriz Nula: matriz cujos elementos são todos iguais a 0 (zero).

 

Dadas duas matrizes A e B, faça um programa que a identifique como:

-

Matriz Oposta: denomina-se matriz oposta de uma matriz A MxN , à matriz –A MxN , cujos elementos têm os sinais contrários aos

*

elementos da matriz A;

-

Matriz Transposta: denomina-se matriz transposta de uma matriz A = [a ij ] MxN , à matriz A t = [a ji ] NxM , cujas linhas e colunas

são, respectivamente, as colunas e linhas de A;

 

Dada uma matriz A, faça um programa que a identifique como:

- Matriz Simétrica: denomina-se matriz simétrica qualquer matriz quadrada de dimensões N em que A = A t ;

- Matriz Anti-Simétrica: denomina-se matriz anti-simétrica qualquer matriz quadrada de dimensões N em que A = A t , porém

os elementos da diagonal principal são iguais a 0 (zero);

- Matriz Triangular Superior: denomina-se matriz triangular superior qualquer matriz quadrada A, de dimensões N, em que a ij

= 0 para todo i>j;

- Matriz Triangular Inferior: denomina-se matriz triangular inferior qualquer matriz quadrada A, de dimensões N, em que a ij =

*

0 para todo i<j;

Matriz Periódica: denomina-se matriz periódica qualquer matriz quadrada A, de dimensões N, em que A n = A, sendo n = 2. Se n é o menor inteiro para o qual A n = A, diz-se que o período de A é n-1;

-

Matriz Idempotente: denomina-se matriz idempotente qualquer matriz periódica A, de dimensões N, tal que A 2 = A. O período da matriz idempotente é 2-1 = 1;

-

-

Matriz Nipotente: denomina-se matriz nipotente qualquer matriz A, de dimensões N, tal que, dado um número inteiro

positivo p, A P = 0 (matriz nula). Se p é o menor inteiro positivo tal que A P =0 (matriz nula), diz-se que A é nipotente de índece

p;

 

Uma agência de publicidade quer prestar serviços somente para as maiores companhias – em número de funcionários – em

cada uma das classificações: grande, média, pequena e microempresa. Para tal, consegue um conjunto de dados com o código,

*

número de funcionários e o porte da empresa. Construa um programa que liste o código da empresa com maiores recursos humanos dentro de sua categoria. Utilize, como finalizador, o código de empresa igual a 0 (zero).

o

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

13

 

Suponha a existência de um vetor de inteiros com n elementos, tal que n é ímpar. Não se sabe como está a ordem dos

*

elementos. Localize o elemento central, ou seja, aquele que estaria no meio se o vetor estivesse ordenado, sem alterar o vetor original.

 

Faça um algoritmo que leia um vetor V de n números naturais. Para cada campo V[i] = k, com 0 £ i < n, o algoritmo deverá ler

números inteiros e colocar a média deles novamente em V[i]. No final deve ser impresso o vetor e a média geral de seus campos.

k

Observação: escolha um valor qualquer para n. Faça um algoritmo que leia um vetor V de n números naturais. Para cada campo V[i] = k, com 0 £ i < n, o algoritmo deverá ler k números inteiros e colocar a média deles novamente em V[i]. No final deve ser impresso o vetor e a média geral de seus campos.

Observação: escolha um valor qualquer para n.

 
 

Escrever um algoritmo que gere a seguinte matriz:

 

1

1

1

1

1

1

 
 

1 2

2

2

2

1

 

1 2

3

3

2

1

 

1 2

3

3

2

1

1

2

2

2

2

1

1

1

1

1

1

1

 

Considerando as matrizes A e B quaisquer, faça um programa que calcule a soma dos elementos da diagonal principal da matriz D, definida como produto da matriz transposta de A pela matriz inversa de B.

 

Fazer um programa em que o usuário entre com a posição do vetor e o valor a ser armazenado nesta posição, enquanto a posição lida for válida, isto é, enquanto for digitado uma posição entre 0 e o tamanho do vetor -1. Após a leitura, armazene o valor na referida posição.

 

Dado um vetor de A[1

n] de elementos inteiros positivos. Pretende-se separar os seus elementos em dois vetores x[1

p] e

*

y[1

q] de modo que x contenha todos os números pares e y contenha todos os números ímpares do vetor inicial.

a) Escreva as especificações de entrada e saída do problema proposto.

b) Elabore um programa que resolva este problema

 

Dados 3 vetores (A, B e C) com as mesmas dimensões, faça um programa que some os vetores A e B e armazene o vetor resultante em C. Observação: antes de realizar a soma, é necessário obter os vetores A e B.

 

Faça um programa que multiplique um vetor por uma constante. Observação: antes de realizar a multiplicação, é necessário obter o vetor.

 

Faça um programa que leia a quantidade de metros quadrados construídos diariamente durante um mês, e, ao final, totalize a metragem construída.

 

Faça programa um que calcule a média aritmética das notas obtidas pelos alunos de uma determinada turma, considerando que cada aluno tenha (obrigatoriamente) 4 notas e que estes são aprovados se atingirem média superior ou igual a 60; caso contrário o aluno é reprovado.

 

Faça um programa que leia os valores das 80 posições de um vetor de inteiros e encontre e mostre, na tela, o valor (m) e a

*

posição (p) do menor elemento, da seguinte forma: “o menor elemento é = m e sua posição é = p”.

 
 

Faça um programa que leia 40 nomes para montar uma lista de chamada e depois escreva a lista na ordem inversa da leitura.

 

Faça um programa que verifique a existência de um determinado valor em um vetor de inteiros. Se encontrar escrever a posição, senão escrever -1.

 

Faça um programa que, mediante o fornecimento dos índices de uma matriz de dimensões MxN, retorne o conteúdo da respectiva posição.

 

Faça um programa que, mediante o fornecimento dos índices de uma matriz de dimensões MxN e de um valor, insira este valor na respectiva posição.

 

Dadas 3 matrizes (A, B e C) com as mesmas dimensões MxN, faça um programa que some as matrizes A e B e armazene a

*

matriz resultante em C. Observação: antes de realizar a soma, é necessário obter as matrizes A e B.

 
 

Faça um programa que multiplique uma matriz por uma constante. Observação: antes de realizar a multiplicação, é necessário

*

obter a matriz.

 
 

Dadas 3 matrizes, faça um programa que multiplique as matrizes A e B e armazene a matriz resultante em C. Observações:

 

1-

antes de realizar a soma, é necessário obter as matrizes A e B;

*

2-

A tem dimensões MxN; B tem dimensões NxP e C tem dimensões MxP.

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

14

 

Implemente as operações necessárias para manipular uma matriz M mxn , tais como atribuição, consulta e alteração de um valor

na

matriz, conforme os cabeçalhos a seguir.

int atribuiValorMatriz(int *M, int nLinha, int nColuna, int linha, int coluna, int valor) onde o parâmetro valor será colocado na posição [linha, coluna] da matriz M, se linha e coluna estiverem dentro das dimensões nLinha e nColuna de M.

int obtemValorMatriz(int *M, int nLinha, int nColuna, int linha, int coluna) onde o conteúdo da posição [linha, coluna] da matriz M será retornado, se linha e coluna estiverem dentro das dimensões nLinha e nColuna de M.

int obtemPosicaoMatriz(int *M, int nLinha, int nColuna, int *linha, int *coluna, int valorProcurado) onde a posição [linha, coluna] da matriz M que contenha o valor do parâmetro valorProcurado será retornado em *linha e *coluna, se existir tal valor em M.

int somaMatriz(int *M, int *N, intj R, int nLinha, int nColuna) onde M e N são as matrizes a serem somadas e R é a matriz resultado e todas as três têm dimensões nLinha e nColuna.

int subtraiMatriz(int *M, int *N, intj R, int nLinha, int nColuna) onde M e N são as matrizes a serem subtraídas e R é a matriz resultado e todas as três têm dimensões nLinha e nColuna.

int multiplicaMatriz(int *M, int *N, intj R, int nLinha, int nColuna) onde M e N são as matrizes a serem multiplicadas e R é a matriz resultado e todas as três têm dimensões nLinha e nColuna.

 

Dadas as tabelas a seguir, com os horários diários (saída e chegada) do sistema ferroviário da cidade de São Paulo, faça um programa que permita a inclusão desta tabelas e que mediante o fornecimento de um par (A, B) de cidades forneça o horário de saída da cidade A e o horário de chegada à cidade B. (fazer a ilustração das tabelas)

 

A

casa de um bêbado é na esquina X da rua principal, e a cadeia é na esquina Y da rua principal. O bêbado começa na esquina

K

da rua principal, onde K está entre X (casa do bêbado) e Y (cadeia). Ele vai para qualquer esquina K-1 ou K+1 com a

probabilidade 0.5 para cada uma, e repete o processo até que chegue seguro em casa ou fique na cadeia. Escreva um programa que simule o andar do bêbado e observações sobre se ele chega seguramente em casa ou se vai para a cadeia.

 

Idem ao anterior, mas considere a existência de outras ruas, isto é, uma matriz bidimensional.

 

*

Faça um programa que, mediante a entrada de uma matriz quadrada de dimensão NXN, calcule o determinante da mesma.

   

n

Se por definição a massa molecular numérica média é dada por

M

n

=

Â

X M

i

i

, onde n é o número de polímeros com

*

 

i

1

=

massas moleculares diferentes; X é a fração do número de mo léculas de polímero com massa molecular M. Faça um programa para calcular a massa molecular numérica média para um n máximo de 5.

Exemplo:

3

5

 

10

3

moléculas com massa molecular de 10000

x 1 =

18

,

x 2 =

e

x 3 =

18

=>

5

moléculas com massa molecular de 20000

 

18

 

10

moléculas com massa molecular de 50000

M n =

3

*10000

+

5

* 20000

+

10

*50000

 

18

 

18

18

 

Na teoria dos jogos, um “ponto de sela” é caracterizado por uma entrada em uma matriz, tal que esta seja o valor mínimo (menor valor) para sua linha e o máximo (maior valor) para sua coluna. Escreva um programa que, dado uma matriz qualquer, encontre seu ponto de sela (se este existir).

 

Em uma cidade do interior, sabe-se que, de janeiro a abril de 1976 (121 dias), não ocorreu temperatura inferior a 14º C nem superior a 40º C. Considerando que a temperatura era verificada 5 vezes por dia, faça um programa que armazene todas as verificações e informe, ao final:

*

a menor temperatura ocorrida;

*

a maior temperatura ocorrida;

*

a temperatura média ocorrida;

*

o número de dias nos quais as 5 temperaturas foram inferiores à temperatura média.

 
 

O

Sr. José possui uma tornearia que produz 150 tipos de peças e quer automatizar o controle de estoque através de um

programa de computador.

 

Como o Sr. José está receoso quanto à utilização de tecnologias, ele decidiu fazer a implantação gradativa do sistema. A primeira etapa consiste no cadastramento, ao final do expediente, da produção do dia. Considerando que, pelo menos, uma peça de cada tipo é produzida por dia, faça um programa para que ao final de cada mês (30 dias) escreva o total de cada peça

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

15

produzida naquele mês.

O

Pesque & Pague do Seu Creyso quer informatizar o controle de peixes de seus 50 açudes. Os peixes são colocados nos

açudes e o reabastecimento ocorre apenas quando todos os peixes em todos os açudes se esgotarem. Considerando que no momento em que o cliente vai pagar a conta, ele indica em qual açude estava pescando e quantos peixes foram pegos, faça um programa para controlar a quantidade de peixes nos açudes do Seu Creyso. Obs.: quando for informado 0 (zero) para o número

de

peixes, o programa deve escrever a quantidade de peixes de cada açude e ser encerrado.

Em um jogo de loteria são sorteados 50 valores entre 0 e 99 inclusive os extremos). Faça um programa que realize o sorteio destes 50 números para a lotérica, considerando que números repetidos devem ser desprezados. Ou seja, após sortear um

número deve-se verificar se este já foi sorteado, pois se isto ocorrer outro número deverá ser sorteado para substituí-lo. Observações:

*

rotina random(N) sorteia aleatoriamente um valor entre 0 e N-1; exemplo:

a

x

= random(100); // o valor sorteado e atribuído a x pode ser qualquer inteiro entre 0 4 99.

rotina randomize() deve ser utilizada em conjunto com a rotina random(n) e evita que o sorteio fique viciado, isto é, que a mesma seqüência de valores seja sorteada todas as vezes. exemplo:

*

a

// se não for utilizado a rotina randomize(), o programa sempre irá sortear a mesma seqüência de

randomize(); valores for(i=0; i<15; i++)

// a cada execução do laço é sorteado um valor através da chamada à rotina random(100)

cout << random(100);

Dadas as definições:

#define MAX_X 50 #define MAX_Y 50 #define MAX_BARATAS (MAX_X * MAX_Y / 3)

struct Barata

{

int x, y, estaViva; };

int Matriz[MAX_X][MAX_Y]; Barata Baratas[MAX_BARATAS];

e

a função random(num) da biblioteca stdlib.h, que dado um inteiro (num) retorna um valor (inteiro) na faixa [0

(num-1)].

Construa um programa que:

-

sorteie posições para todas as baratas dentro da matriz, sem que duas baratas ocupem o mesmo lugar;

entre num laço no qual, uma a uma, todas as baratas andam um quadrado para uma direção aleatória (esquerda, direita, cima, baixo), sem, é claro, sair dos limites da matriz; Obs.: cabe apenas uma barata por quadrado, i. e., célula da matriz.

-

quando sobre um quadrado já estiverem passado (andaram) três baratas, tal quadrado torna-se infectado; a próxi ma barata que passar sobre o quadrado morre e desaparece, e o quadrado torna-se não-infectado novamente;

-

-

o laço prossegue até que a população seja um terço da população no início do programa.

Obs.: deve ser fornecido, na saída, a posição de cada barata ainda viva e o número de iterações do laço.

Obs.: não usar variáveis globais.

Você foi contratado pela empresa Games S.A. para desenvolver um jogo. Este consiste de um tabuleiro de dimensões M x N

no

qual devem ser distribuídas N baratas, aleatoriamente, no início do jogo. Para isso você deve considerar:

-

as seguintes definições:

#define MAX_X 50 #define MAX_Y 50 #define MAX_BARATAS (MAX_X * MAX_Y / 3)

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

16

struct Barata

{

int x, y, estaViva; };

int Matriz[MAX_X][MAX_Y]; Barata Baratas[MAX_BARATAS];

-

a função random(num) da biblioteca stdlib.h, que dado um inteiro (num) retorna um valor (inteiro) na faixa [0

(num-1)].

1. As baratas caminham aleatoriamente pelo tabuleiro em qualquer uma das 4 direções.

2. A barata não se locomoverá apenas se todas as 4 posições a seu redor estiverem ocupadas.

3. Duas baratas não podem ocupar a mesma posição no tabuleiro.

4. A terceira barata que passar em uma determinada posição deverá ser eliminada.

4.1

Após uma barata ser eliminada, a posição deve ficar como se não tivesse passado barata alguma por ela. O jogo acaba

quando restarem 10% das baratas que iniciaram o mesmo.

5. O número de baratas deve ser determinado pelo usuário.

6. A cada 20 movimentos ou ciclos do jogo a barata pode se reproduzir. Isto é possível apenas se houver uma posição vaga a

seu redor, sendo que a escolha desta posição deve ser aleatória, e se o número de baratas for menor ou igual a ¾ do número de

posições (M x N).

7. O usuário poderá dar chineladas com o mouse, o que eliminará a barata que estiver na posição clicada.

8. O usuário poderá passar um spray de veneno para matar a barata de determinada posição.

8.1.

As baratas ficam 10% mais resistentes a cada vez que o veneno é aplicado em uma posição vizinha àquela em que ela se

encontra.

8.2.

A partir de 10 aplicações em posições vizinhas, a barata fica imune.

9.

O tipo barata voadora pode se locomover para posições não-contíguas, desde que a posição destino não esteja ocupada. Este

tipo de barata está sujeita às mesmas características das outras.

10.

O tipo de barata deve ser definido no momento de sua criação (aleatoriamente). Porém, o número de baratas voadoras deve

ser menor que 1/5 das baratas normais.

------------------------------------

Construa um programa que:

-

sorteie posições para todas as baratas dentro da matriz, sem que duas baratas ocupem o mesmo lugar;

entre num laço no qual, uma a uma, todas as baratas andam um quadrado para uma direção aleatória (esquerda, direita, cima, baixo), sem, é claro, sair dos limites da matriz; Obs.: cabe apenas uma barata por quadrado, i. e., célula da matriz.

-

quando sobre um quadrado já estiverem passado (andaram) três baratas, tal quadrado torna-se infectado; a próxima barata que passar sobre o quadrado morre e desaparece, e o quadrado torna-se não-infectado novamente;

-

-

o laço prossegue até que a população seja um terço da população no início do programa.

Obs.: deve ser fornecido, na saída, a posição de cada barata ainda viva e o número de iterações do laço.

Obs.: não usar variáveis globais.

Crie a função int inverteBit(int n, int i), a qual deve inverter o valor do i-ésimo bit (da mais baixa para a mais alta ordem relativa) do número n, i. e. , o bit contiver o valor 1 deverá ficar com o valor 0 e vice-versa.

Exemplo:

int x;

x

= 37;

x

= inverteBit(x, 8); // estado atual de x: (37 (10) == 00000000 00100101 (2) )

//

após a execução tem-se

//

estado atual de x: (163 (10) == 00000000 10100101 (2) )

x

= inverteBit(x, 8); // estado atual de x: (163 (10) == 00000000 10100101 (2) )

//

após a execução tem-se

//

estado atual de x: (37 (10) == 00000000 00100101 (2) )

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

17

Visando fazer um levantamento das atuais condições de tráfego de uma malha rodoviária e definir alternativas para uma reformulação futura, foi realizada uma pesquisa de tráfego do tipo ORIGEM -DESTINO. Esta pesquisa submeteu aos motoristas que trafegavam pela região em estudo um questionário com as seguintes perguntas:

a) De onde veio (origem)?

b) Para onde vai (destino)?

c) Qual o tipo de veículo?

As respostas foram fornecidas através de código numéricos, conforme especificação a seguir:

Questão a) (1) Belo Horizonte (2) São Paulo (3) Santos Dumont (4) Brasília

Questão b) (1) Rio de Janeiro (2) Petrópolis (3) Juiz de Fora (4) Barbacena

Questão c) (1) automó vel (2) Caminhão (3) Ônibus

Pode ser utilizado, como indicador de parada de leituras, o valor 0 (zero) para as respostas das questões a, b e c. Ao final o programa deverá apresentar uma lista contendo Origem, Destino e o número de veículos de cada Tipo que realizou o percurso.

Foi distribuído um questionário de 100 perguntas para um grupo de pessoas, dentre as quais estão:

1) Você se incomoda que seu parceiro fume? 2) Você gosta de música sertaneja?

100) Você gosta de cebola?

Cada resposta tem as seguintes opções, SIM, INDIFERENTE, NÃO.

O índice de afinidade de um rapaz com uma moça é dado pelo número de perguntas em que ambos deram a mesma resposta ou

em que um deles deu a resposta indiferente.

Fazer um programa para escrever uma tabela com o índice de afinidade existente entre cada moça e cada rapaz de um grupo de

M moças e um grupo de R rapazes (R <= 50 e M <= 60. Desta forma, o programa poderá ler:

- as 100 respostas de cada moça;

- os valores de R e M;

- as 100 respostas de cada rapaz;

Ao final deverá ser impresso para cada par (rapaz, moça) o índice de afinidade entre ambos.

A tabela a seguir contém vários itens que estão estocados em vários armazéns de uma companhia. É fornecido, também, o

custo de cada um dos produtos armazenados.

 

Produto 1 (un.)

Produto 2 (un.)

Produto 3 (un.)

Armazém 1

1200

3700

3737

Armazém 2

1400

4210

4224

Armazém 3

2000

2240

2444

Custo $

260,00

420,00

330,00

Fazer um programa que:

- leia o estoque inicial;

- determine e imprima quantos itens estão arma zenados em cada armazém;

- qual o armazém possui a maior quantidade do produto 2;

- o custo total de:

* cada produto em cada armazém;

* estoque em cada armazém;

* cada produto em todos os armazéns.

Considere que o dono do armazém Secos e Molhados S.A. faz um levantamento mensal de suas mercadorias e que este armazém possua 100 itens diferentes identificados pelos números inteiros de 0 a 99. Para cada cliente que chega a seu balcão e pede um determinado produto, o dono do armazém verifica a exis tência deste produto em quantidade suficiente para atender o pedido, dá baixa nos produtos vendidos e os entrega ao cliente. Escreva um programa para auxiliar a manutenção do estoque do armazém Secos e Molhados e que leia o estoque inicial e, a cada pedido, dê baixa no estoque ou escreva a mensagem “Produto em falta.” quando não houver mercadoria para atender o pedido.

Fazer um programa para corrigir provas de múltipla escolha (a, b, c, d, e). Cada prova tem 10 questões e cada questão vale um ponto. O primeiro conjunto de dados a ser lido é o gabarito para a correção da prova. Os dados seguintes correspondem às respostas dos alunos de uma turma, sendo que cada turma possui N alunos, onde N não pode ser superior a 100. O programa deverá, após a leitura do gabarito e das respostas de cada aluno, calcular e imprimir a nota deste aluno.

Alguns dias antes das eleições de 2002 (2º turno) uma equipe de acadêmicos do Curso de Jornalismo da FAG saiu realizando uma pesquisa que tinha como pergunta única: “Em que você vai votar em 27 de outrubro? ”. Cada acadêmico possuía 100 formulários e cada formulário possui apenas um campo para informar a opinião do entrevistado. Considerando a relação 1 – C1, 2 – C2, 3 – C3, 4 – C4 e 5 – outros, faça um programa que leia o conjunto de dados coletados por um dos acadêmicos,

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

18

calcule e escreva o número de votos de cada candidato.

 

Um controle padrão de videogame possui sensores que indicam a direção na qual o usuário pretende seguir. Fazer um

programa que simule (,isto é, leia) a entrada das direções (0 - Esquerda, 1 - Direita, 2 - em Frente, 3 - para Trás) e calcule e

escreva:

 

- a direção em que houve maior deslocamento.

 

- a direção em que houve menor deslocamento.

- a média entre todas as direções.

 

Observação: Considere o valor 4 como indicador de término para as leituras.

 

Uma equipe de funcionários do IBOPE saiu às ruas para fazer uma pesquisa sobre a estatura da população brasileira. Cada funcionário possuía 100 formulários e apenas alguns poucos minutos para realizar a entrevista, sendo que nenhum deles conseguiu atingir os 100 entrevistados. Cada formulário possuía apenas um campo para informar a altura do entrevistado. Faça um programa que leia o conjunto de dados coletados por um dos funcionários, calcule e escreva a maior, a menor e a média das alturas do grupo de pessoas entrevistadas por ele. Obs.: considere o valor da altura igual a zero para o encerramento das leituras.

O

Instituto de Ciências Exatas da UFMG deseja saber se existem alunos cursando, simultaneamente, as disciplinas

“Programação de Computadores” e “Cálculo Numérico”. Considere que os números de matrícula dos alunos de “Programação

de

Computadores” (no máximo 150 alunos) e de “Cálculo Numérico” (no máximo 220 alunos) são disponibilizados pelo

trecho de programa abaixo e que cada conjunto dos números de matrícula dos alunos de uma disciplina tem a matrícula fictícia

999 no final. Complete o programa para que seja impresso o número de matrícula dos alunos que estão cursando estas disciplinas simultaneamente.

int main(int argc, char* argv[])

printf("\n\nResultados");

 

{

 
 

int vProgComp[150], vCalcNum[220], i;

printf("\nProgramacao de Computadores\n"); for(i=0; vProgComp[i] != 999; i++) printf("%d ", vProgComp[i]);

printf("\nProgramacao de Computadores\n");

i

= -1;

   

do

printf("\nCalculo Numerico\n"); for(i=0; vCalcNum[i] != 999; i++) printf("%d ", vCalcNum[i]);

{

i++;

 

printf(“Matricula do Aluno %d: ”, i+1);

 

scanf(“%d”, &vProgComp[i]); }while(vProgComp[i] != 999);

 

// código restante ????????

 
 
   

getch();

 

printf("\nCalculo Numerico\n");

return 0;

i

= -1;

 

}

do

{

i++; printf(“Matricula do Aluno %d: ”, i+1); scanf(“%d”, &vCalcNum[i]); }while(vCalcNum[i] != 999);

Os

lugares de um teatro costumam ser identificados através da fila e da coluna de cada um. O serviço de reserva mantém um

mapa que indica os lugares ocupados e os ainda vagos. Como lugares ocupados entende-se como pedidos de reservas (pagamento não efetuado) e lugares vendidos (pagamento efetuado). Neste contexto, se um pedido de reservas não for confirmado (pagamento efetuado), este poderá ser vendido a outra pessoa. Para fixar idéias, vamos considerar um teatro com 15 filas, numeradas de 1 à 15, cada fila com 10 cadeiras à direita e 10 cadeiras à esquerda, conforme ilustrado ao lado. Considere também os valores

V

ou 0: lugares vagos

 

R

ou 1: lugares reservados

 

O

ou 2: lugares cujo pagamento já foi efetuado

 
 

PALCO

 

Faça um sis tema para gerenciar as reservas para um espetáculo, com menu para

01

 

01

selecionar a opção desejada e que permita:

 

.

lado

lado

.

- realizar e cancelar reservas;

 

.

esquerdo

 

direito

.

- calcular o total de lugares cuja reserva foi confirmada e o valor recebido;

.

.

- calcular o total de lugares cuja reserva ainda não foi confirmada e o valor total

15

 

15

referente a estes lugares;

 
 

-10

-1

0

+1

+10

-

calcular o total de lugares vagos e o valor referente a eles.

 

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

19

*

A empresa XYZ, fornecedora de energia elétrica, está realizando análises sobre o consumo de seus clientes para planejar as

adequações necessárias em sua malha de cabos. A partir disto, chegou-se à conclusão de que deveria ser criado um programa

de computador para realizar o controle dos dados e auxiliar no processo de análise.

Esta análise será realizada por setores de uma região. Para isto, o programa deverá totalizar o consumo dos clientes de cada quadra, a partir da entrada das coordenadas da quadra em que o consumidor se localiza e do respectivo consumo. Observação:

a quadra 1410, representa a coordenada (x, y) na planta da região, onde x = 14 e y = 10, conforme ilustrado abaixo.

Considere que, para a execução do projeto piloto, o programa deverá considerar apenas as quatro

Considere que, para a execução do projeto piloto, o programa deverá considerar apenas as quatro quadras assinaladas no mapa.

(Leon, 1999, pg. ?) O senhor João da Silva está realizando reformas em sua casa. Durante a fase de levantamento de preços João realizou orçamento em 4 empresas abrangendo cimento, cal, pedra e ferro.

As matrizes a seguir identificam as empresas e os custos; e o material necessário e a quantidade.

*

Empresa/Material

Cimento(sa

Cal(saca)

Pedra(m 3 )

Ferro(m)

ca)

Casa & Cia. Ltda.

9.50

5.60

21.00

9.80

ConstruCasa S/A

9.00

5.90

20.00

13.00

Mãos à Obra Ltda.

9.25

6.00

21.50

11.20

Pedra sobre Pedra Ltda.

9.75

5.75

23.00

10.80

Material

Quantidade

Cimento

50

sacas

Cal

20

sacas

Pedra

3 metros

Ferro

10.5 metros

Observações:

- João não tem como levar os itens para casa (por conta própria);

- as empresas entregarão o material somente se venderem todos os itens;

- a empresa Casa & Cia. Ltda. cobra a taxa de $25 para cada entrega (independente da mercadoria a ser entregue);

- a empresa ConstruCasa S/A oferece desconto de 5% para compras acima de $1000 e não cobra taxa de entrega;

- e empresa Mãos à Obra Ltda. cobra a taxa de entrega de $50 e oferece desconto de 2.5% para todas as compras;

- a empresa Pedra sobre Pedra Ltda. não cobra taxa de entrega e não oferece descontos.

Considerando as condições anteriores, faça um programa que determine qual o menor orçamento e que permita flexibilidade quanto aos valores dos materiais e as quantidades de material necessárias.

(Leon, 1999, pg. 16) Em uma certa seção do centro de determinada cidade, dois conjuntos
(Leon, 1999, pg. 16) Em uma certa seção do centro de determinada
cidade, dois conjuntos de ruas de mão única se cruzam, conforme
ilustrado na Figura ao lado. A média do número de veículos por hora
que entram e saem dessa seção durante o horário de rush é dada no
* diagrama. Determine a quantidade de veículos entre cada um dos
quatro cruzamentos.
Montagem do Sistema de Equações:
Ï x
+
450 =
x
2
+
610 (Cruzament o A)
1
Ô 3
Ô x
x
2 520
+ =
+
480
(Cruzament o B)
Ì 4
x
3 390
+ =
+
600
(Cruzament o C)
Ô x
x
4 640
+ =
1
+
310
(Cruzament o D)
Ó Ô x

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

20

(Leon, 1999, pg. 35) Considere a topologia de ligação viária entre 5 cidades de uma determinada região, conforme ilustrado na Figura ao lado. Uma empresa transportadora deseja planejar suas rotas de entrega entre estas cidades com o objetivo de minimizar os custos envolvidos. Para tal, precisa identificar os caminhos mínimos

* entre estas 5 cidades. Escreva um programa utilizando produto matricial que retorne os caminhos mínimos entre estas cinco cidades. Obs.: a matriz identifica ao lado é utilizada para identificar a existência (valor 1) ou não (valor 0) de estrada entre os pares de cidades.

Elevando a matriz à potência p, se

M[i][j]

=

Ï 1, se existe caminho de compriment o p entre i e j

Ì Ô 0, se não existe caminho de compriment o p entre i e j

Ô Ó > 1, não há garantias quanto à existência

dos caminhos indicados

¸

Ô

˝

Ô

˛

A B D C E
A
B
D
C
E

0

1

1

0

0

1

0

0

1

1

1

0

0

1

0

0

1

1

0

1

0

1

0

1

0

(Leon, 1999, pg. 28) João pesa 81 quilos. Ele quer perder peso por meio de um programa de dieta e exercícios. Após consultar a Tabela “Calorias Queimadas por Hora”, ele monta o programa de exercícios da Tabela “Horas por Dia para cada Atividade”.

Calorias Queimadas por Hora

   

Atividade Esportiva

Peso

Andar a 3 Km/h

Correr a 9 Km/h

Andar de Bicicleta a 9 Km/h

Jogar Tênis (moderado)

69

213

651

304

420

73

225

688

321

441

77

237

726

338

468

81

249

764

356

492

Horas por Dia para cada Atividade

   

Atividade Esportiva

 

Dia da Semana

Andar

Correr

Andar de Bicicleta

Jogar Tênis

Segunda-Feira

1.0

0.0

1.0

0.0

Terça-Feira

0.0

0.0

0.0

2.0

Quarta-Feira

0.4

0.5

0.0

0.0

Quinta-Feira

0.0

0.0

0.5

2.0

Sexta-Feira

0.4

0.5

0.0

0.0

Quantas calorias ele vai queimar por dia se seguir este programa?

(Leon, 1999, pg. 29) Uma empresa fabrica três produtos. Suas despesas de produção estão divididas em três categorias. Em cada uma dessas categorias, faz-se uma estimativa do custo de produção de um único exemplar de cada produto. Faz-se, também, uma estimativa da quantidade de cada produto a ser fabricado por trimestre. Essas estimativas são dadas nas tabelas a seguir.

*

Custo de Produção por Item em Unidades Monetárias ($)

 

Gastos

 

Produto

Matéria-Prima

Pessoal

Despesas Gerais

A

0.10

0.30

0.10

B

0.30

0.40

0.20

C

0.15

0.25

0.15

Quantidade Produzida por Trimestre

 

Estação

 

Produto

A

B

C

Verão

4000

2000

5800

Outono

4500

2600

6200

Inverno

4500

2400

6000

Primavera

4000

2200

6000

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

21

A empresa gostaria de apresentar a seus acionistas uma única tabela mostrando o custo total

A empresa gostaria de apresentar a seus acionistas uma única tabela mostrando o custo total por trimestre de cada uma das três categorias: matéria -prima, pessoal e despesas gerais.

Cadeias de Caracteres (Strings)

*

Leia uma string (seqüência de caracteres) e a escreva de traz para frente.

 

*

Leia uma string (seqüência de caracteres) e inverta seu conteúdo.

 
 

Leia uma string (seqüência de caracteres) e altere a primeira letra de cada palavra em maiúscula.

 

*

Idem ao anterior, mas garanta que a primeira letra de cada palavra em maiúscula e as demais em minúscula.

 
 

Escreva uma função que receba por parâmetro duas strings e crie uma nova string através da intercalação das anteriores e a coloque em um terceiro parâmetro (de saída). Observe que as duas seqüências envias por parâmetro nem sempre terão o

*

mesmo comprimento. Neste caso, a parte restante da maior seqüência deve ser simplesmente anexada à seqüência que representa a intercalação.

 

Leia uma string (seqüência de caracteres) e converta para inteiro, assim como faz o comando (função) atoi.

 
 

Leia uma string (seqüência de caracteres) e substitua conjuntos de espaços em branco por um único espaço em branco. Exemplo:

*

String de Entrada

String de Saída

 

Abcbbbbdefbbbbbbb*g bbbbh bbijklmbbbbbb,bbbx

abcbdefb*gbhbijklmb,bx

 

Dada uma string (seqüência de caracteres), lidos um a um e finalizada por um ponto, escreva a quantidade de caracteres iguais fornecidos em seqüência, de acordo com os exemplos:

*

ENTRADA: AAABBBBCCCCC => SAÍDA: 3A, 4B, 5C ENTRADA: XXXXACCCXX => SAÍDA: 4X, 1A, 3C, 2X

 

Observações 01: - faça uma rotina utilizando simplesmente a escrita dos valores de saída; - refaça a rotina de modo a armazenar a saída na string original; - faça uma rotina que realize o processo inverso, isto é, dada uma string como as de saída enteriormente a transforme nas de entrada.

Observações 02: - considere, inicialmente, um máximo de 9 caracteres consecutivos iguais; - refaça as rotinas considerando qualquer número de caracteres consecutivos iguais.

 
 

Dada uma string (seqüência de caracteres) de entrada, lido um a um, verifique se a seguinte condição é satisfeita:

 
 

-

após uma seqüência ininterrupta de letras ‘A’, a primeira seqüência de letras ‘B’ deve somar o dobro de ‘A’s.

 

Leia strings (seqüência de caracteres) que representem expressões e verifique se os parênteses estão balanceados. Quando um erro for detectado, uma mensagem é apresentada e o programa ignora o resto da string, isto é, pára. Exemplos:

String de Entrada

String de Saída

 

(

))

 

Fecha parênteses em excesso, coluna 3.

(( ) ( ) ))

 

Fecha parênteses em excesso, coluna 7.

*

(

) (

 

Faltou fecha parênteses, coluna 4.

(

) ((bla bla bla – resto da string ignorado

Faltou fecha parênteses , coluna 4.

(

)

( ) ( )

 

OK

(

( x ) ) bla bla ( bla )

OK

(

( )

( ) )

) ( )

Fecha parênteses em excesso, coluna 7.

 

Otimize o programa anterior utilizando apenas três variáveis:

 
 

s – para armazenar a string

i – para percorrer a string (índice)

 

np – para o controle da parentetização

 

Mesmo que o programa anterior, mas misturando colchetes e parênteses. Aplique as regras de parentetização normal.

String de Entrada

String de Saída

 

[

( )

( ( )

) ]

OK

(

[

]

] )

Fecha colchetes em excesso, coluna 4.

(

[

]

( ]

Faltou fecha parênteses, coluna 5.

 

Otimize o programa anterior utilizando apenas quatro variáveis:

 
 

s – para armazenar a string

 

i – para percorrer a string (índice)

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

22

np – para o controle dos parênteses nc – para o controle dos colchetes Repita
np – para o controle dos parênteses
nc – para o controle dos colchetes
Repita o exercício anterior, mas não aceitando abrir colchetes se houver parênteses aberto (em outras palavras, nunca aceite
colchetes dentro de parênteses).
Crie uma string s, de comprimento 10;
Leia esta string, colocando apenas caracteres numéricos e sem repetição;
Limpe a tela, escreva a string e, debaixo dela, escreva asteriscos seguindo os números que foram digitados.
Exemplo:
String de Entrada: “24681357”.
Saída:
2
4
6
8
1
3
5
7
*
pule para a segunda coluna
*
pule para a quarta coluna
*
pule para a oitava coluna
*
pule para a sétima coluna
*
pule para a quinta coluna
*
encerra pois já passou pela primeira coluna
Idem ao exercício anterior, mas verifique também se ao caminhar dentro da string todas as posições visitadas, listando as
posições não visitadas o vídeo.
Fazer uma função que substitua todos os pontos decimais por vírgulas decimais em um cadeia str1. Ex.: 9.8 => 9,8 /
100.99 => 100,99
Fazer um programa que inverta uma cadeia. Por exemplo, uma cadeia que contenha “1, 2, 3, 4” deverá ser transformada em
“4, 3, 2, 1”. O programa deve:
- solicitar ao usuário a cadeia original;
- copiá-la para uma cadeia auxiliar;
- inverter a cadeia original, utilizando uma segunda cadeia;
- inverter a cadeia original, sem utilizar uma segunda cadeia.
Dada a string s e um número n de entrada, apresente a string no vídeo em blocos de n caracteres, invertidos em relação ao
original.
Exemplos.
“12345678” , 3
“12345678” , 2
Æ
32165478
Æ
21436587
Dada a string s e os números n e k de entrada, apresente a string no vídeo em blocos de n caracteres, invertidas em blocos de
comprimento k.
Exemplos (os espaços em branco foram utilizados apenas para tornar os exemplos mais claros.
“1234567890” , n = = 4
“1234567890” , n = = 4
“1234567890” , n = = 5
“1234567890” , n = = 5
, k = = 4
, k = = 2
, k = = 2
, k = = 3
Æ
Æ
Æ
Æ
“4321 8765 90”
“2143 6587 09”
“21435 76980”
“32145 87690”
Fazer uma função que recebe uma string como parâmetro e retorna um string obtido ao se eliminar os espaços em branco no
início e fim do string:
"
Bom dia, senhor
"Bom dia, senhor
"
" deve ser transformado em "Bom dia, senhor"
deve ser transformado em "Bom dia, senhor"
"
Bom dia, senhor"
deve ser transformado em "Bom dia, senhor"
Fazer uma função que codifica um string pelo método ZENIT-POLAR:
Z
E N I T
P
O L A R
Ou seja, onde aparece um “Z” no string de entrada, aparecerá um ``P'' na saída; e, semelhantemente, onde aparece um “P” no
string de entrada, aparecerá um “Z” na saída. Isto deve ocorrer para todos os pares em ZENIT-POLAR, maiúsculas e
minúsculas. As outras letras não são alteradas
Por exemplo, o string “Parabens a voce” é codificado para “Zitibols i veco”.
Ao se aplicar duas vezes a transformação, obtém-se o mesmo string, ou seja, a codificação de “Zitibols i veco” é “Parabens a
voce”.
Escreva um programa para calcular a freqüência de ocorrência de cada letra do alfabeto em um texto, onde freqüência de
ocorrência de uma letra é o número de vezes em que este ocorre dividido pelo número total de ocorrências de letras

Jefferson Gustavo Martins

CEFETPR - Medianeira

Jefferson Gustavo Martins

CEFETPR - Medianeira

23

(comprimento do texto menos ocorrências de brancos e sinais de pontuação.
(comprimento do texto menos ocorrências de brancos e sinais de pontuação.
(comprimento do texto menos ocorrências de brancos e sinais de pontuação.
(comprimento do texto menos ocorrências de brancos e sinais de pontuação.

(comprimento do texto menos ocorrências de brancos e sinais de pontuação.

(comprimento do texto menos ocorrências de brancos e sinais de pontuação.

Operações sobre Cadeias de Caracteres (Strings)

Escreva rotinas que implementem as funções de manipulação de strings, conforme especificado a seguir.

 

char *strcat(char *str1, const char *str2)

 

*

strcat concatena uma cópia de str2 em str1. str1 deve ter espaço suficiente para armazenar o conteúdo de ambas.

 

int strcmp(const char *str1, const char *str2)

 

strcmp compara lexicograficamente as strings apontadas por str1 e str2 e devolve um inteiro baseado no resultado:

*

valor menor que 0 valor 0 valor maior que 0

se str1 for menor que str2 se str1 for igual à str2 se str1 for maior que str2

 

char *strcpy(char *str1, const char *str2)

 

*

strcpy copia o conteúdo da string str2 para str1 e devolve um ponteiro para str1.

 

int strlen(const char *str)

*

strlen devolve o número de caracteres contidos em str, sem considerar o caractere nulo (‘\ 0’).

 
 

char *strstr(const char *str1, const char *str2)

 

*

strstr devolve um ponteiro para a primeira ocorrência de str2 em str1, se existir. Caso contrário, strstr retorna um ponteiro nulo (NULL).

 

char *strchr(const char *str, int ch)

 

*

strstr devolve um ponteiro para a primeira ocorrência de ch em str, se existir. Caso contrário, strchr retorna um ponteiro nulo (NULL).

 

void strSub(char *str1, int n, int p, const char *str2)

 

*

strSub substitui n caracteres a partir da posição p da string str1 por str2.

 

Registros

 

1- Criar estruturas para representar:

 

- números racionais (numerador e denominador)

- números reais (parte inteira e parte real)

- um termo de um polinômio

- dados de um livro

- passagem de ônibus

- os dados de um aluno (matrícula, notas bimestrais etc.)

 

- produto de um supermercado (código, preço, peso/capacidade, tipo de embalagem etc.)

- cheque bancário

 

2- Crie estruturas para representar

 

- os dependentes de uma pessoa e inclua a inclua na estrutura definida anteriormente para pessoa

- um talão de cheques (má ximo 50 folhas), onde cada folha tem a estrutura definida anteriormente em cheque bancário

- uma lista de chamada, para a estrutura aluno anteriormente definida, considerando um turma de 20 alunos

- um polinômio com até 20 termos, a partir da estrutura definida anteriormente para um único termo

- o conjunto de livros de uma biblioteca com capacidade para armazenar 1000 livros, a partir da estrutura anterior

*

Escreva um programa que contenha uma estrutura para uma construção, leia os valores dos campos e escreva estes mesmos valores.

 

Bibliografia:

Leon, S. J., Álgebra Linear com Aplicações. 4ª. Edição. Rio de Janeiro: LTC, 1999.

Jefferson Gustavo Martins

CEFETPR - Medianeira