Exercícios do projeto de algoritmo

Este espaço é para o desenvolvimento do projeto de algoritmos.

Exercícios

vamos começar a desenvolver os exercícios.

Exercício 1

  1. O que vem a ser um algoritmo?
Algorítmos são sequências finitas de dados que levam a execução e conclusão de determinada tarefa.

Exercício 2

  1. Segundo o livro da referência, quais são as etapas para a construção de um algoritmo?
as etapas para a construção de um algoritmo são, respecitamente, entrada, processamento e saída.

Exercício 3

  1. Quais são os passos para a construção de um algoritmo?
Primeiramente determinar os dados de entrada do algoritmo. Após determinar qual é a entrada, começar a desenvolver detalhadamente quais são os procedimentos, usando apenas um verbo por comando e, por fim, realizar a saída, que é ato processar tudo que foidesenvolvido no decorrer da construção do algoritmo. 

Exercício 4

  1. Faça um algoritmo, apresentado cada passo, para ao seguinte problema: um homem precisa atravessar um rio com um barco que possui capacidade somente para carregar ele mesmo e mais uma de suas três cargas, que são um lobo, uma cabra e um repolho. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? Escreva os passos
# homem pega repolho
# homem entra no barco com repolho
# homem atravessa rio com o barco
# homem sai do barco
# homem deixa repolho em terra
# homem volta para o barco
# Homem atravessa rio
# homem pega lobo
# homem entra no barco com lobo
# homem atravessa rio com o barco
# homem sai do barco
# homem deixa lobo em terra
# homem volta para o barco
# Homem atravessa rio
# homem pega cabra
# homem entra no barco com cabra
# homem atravessa rio com o barco
# homem sai do barco
# homem deixa cabra em terra

#fIM

Exercício 5

5.Faça um algoritmo, apresentado cada passo, para ao seguinte problema: três jesuítas e três canibais precisam atravessar um rio; para tal dispõem de um barco com capacidade para duas pessoas. Por medidas de segurança, não se deve permitir que em alguma margem a quantidade de jesuítas seja inferior a de canibais. Qual a solução para efetuar a travessia com segurança? Elabore os passos de forma a mostrar a resposta, indicando as ações que concretizam a resolução deste problema.

Resposta:

Informações do exercício: Três Jesuítas, Barco, Três Canibais

Ações necessárias para atravessar o rio com a devida segurança

Objetivo final: Atravessar todos os três Jesuítas e os três canibais até ao outro lado da margem do Rio.

Algoritmo

# jesuíta e canibal amarram uma corda no barco
# jesuíta e canibal entram no barco
# jesuíta e canibal atravessam rio
# jesuíta e canibal desembarcam em terra
# jusuítas e canibais puxam corda amarrada
# barco para na margem do rio
# jesuíta e canibal amarram uma corda no barco
# jesuíta e canibal entram no barco
# jesuíta e canibal atravessam rio
# jesuíta e canibal desembarcam em terra
# jusuítas e canibais puxam corda amarrada
# barco para na margem do rio
# jesuíta e canibal amarram uma corda no barco
# jesuíta e canibal entram no barco
# jesuíta e canibal atravessam rio
# jesuíta e canibal desembarcam em terra

#FIM

Exercício 6

Criar duas variáveis que contenham números e apresentar o resultado da soma das combinações dois a dois destes três números. Por exemplo, se forem lidos A, B e C, mostrar A + B, A+ C, B + C.

A <- 2
B <- 3
C <- 4

Soma1 <- A + B
Soma1
## [1] 5
 Soma2 <- A + C
 Soma2
## [1] 6
 Soma3 <- B + C
 Soma3
## [1] 7

Exercício 7

Faça um programa em RStudio para criar duas variáveis A e B e trocar seus valores. Ex:Entrada: A = 6 e B = 8 Saída: A = 8 e B =6.

A <- 6

B <- 8

trocador <- A

A <- B

B <- trocador

print(A)
## [1] 8
print(B)
## [1] 6

Exercício 8

Faça um programa em RStudio para converter uma temperatura de Fahrenheit para Centígrados. C = (F-32) * (5 / 9).

F <- 84

C <- (F - 32)*(5/9)

C
## [1] 28.88889

Exercício 9

  1. Faça um programa em RStudio que crie uma variável X e calcule: A <- X^3- 4 B <- O resto da divisão de X / 3 C <- X^B+2 D <- Raiz quadrada de X^2
x <- 2

a <- 3

b <- 3

Resposta1 <- (x ^ a - 4)
Resposta1
## [1] 4
resposta2 <- (x %% a)
resposta2
## [1] 2
resposta3 <- (x ^ b + 2)
resposta3
## [1] 10
resposta4 <- (x^2)
resposta4
## [1] 4

Exercício 10

  1. Faça um programa em RStudio que crie 11 variáveis com os valores abaixo, calcule a soma e mostre-a no final. Ex. lista de números: 3, 5, 7, 4, 3, 2, 1, 9, 12, 15, 9 | Soma dos números = 70. Agora calcule a média desses números | Média = 70 / 11 = 6,3636.

Repita o exercício com um vetor armazenando os valores.

x1 <- 3
x2 <- 5 
x3 <- 7
x4 <- 4
x5 <- 3
x6 <- 2
x7 <- 1
x8 <- 9
x9 <- 12
x10 <- 15
x11 <- 9

media <- (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11)/11
media
## [1] 6.363636

Exercício 11

  1. Faça um programa em RStudio que calcule o fatorial de um número.
fatorial <- function(n) {
  if (n == 0) {
    return (1)
  } else {
    resultado <- 1
    for (i in 1:n) {
      resultado <- resultado * i
    }
    return (resultado)
  }
}

# Testando a função com o número 9

fatorial(4)
## [1] 24

Exercício 12

  1. Crie uma matriz 4x4. Uma matriz no R comporta somente um tipo de dado (número, texto ou boleano). O comando para criar a matriz é
matriz <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)

Exercício 13

  1. Agora, crie uma matriz com a sequência de 1 a 16.
mat <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)

Exercício 14

  1. Transforme essa matriz em um data.frame Um data.frame é uma estrutura de dados similar a matriz que pode conter dados diferentes em suas variáveis. Lembre-se que também chamamos as colunas de variáveis e as linhas de registros. Uma variável (coluna) não pode conter dados de formas diferentes (textos e números, por exemplo). Ou todas as linhas dessa variável são números, ou todas são texto, ou ainda, boleanos. Utilize o comando “df <- as.data.frame(x)”
df <- as.data.frame
df <- (matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE))

Exercício 15

  1. Utilizando os comandos de repetição e decisão (se for necessário), calcule:
  1. a média de uma coluna da matriz do exercício “13)”.
soma <- 0

for(i in 1:4){soma <- soma +mat[i,2]

}

media <- soma/i
media
## [1] 8
  1. A média de todas as colunas da matriz do exercício “13)”.
  for(j in 1:4){
    soma <- 0
    for(i in 1:4){
    soma <- soma + mat[i,j]
  }
media <- soma/i
print(media)
}
## [1] 7
## [1] 8
## [1] 9
## [1] 10
  1. A média de todas as linhas da matriz do exercício “13)”.
for(i in 1:4){
    soma <- 0
    for(j in 1:4){
    soma <- soma + mat[i,j]
  }
media <- soma/j
print(media)
}
## [1] 2.5
## [1] 6.5
## [1] 10.5
## [1] 14.5
  1. A média dos números pares de todas as colunas da matriz do exercício “13)”.
 for(coluna in 1:4){
    soma <- 0
    contador <- 0
    for(linha in 1:4){
    if(mat[linha,coluna]%%2 == 0){
      soma <- soma + mat[linha,coluna]
      contador <- contador + 1
    }
 }
 if(contador !=0){
    media <- soma/contador
  cat("a média da coluna", coluna, "é", media, "\n")
 } else {
   cat("não existe número par na coluna ", coluna, "\n")
   }
}
## não existe número par na coluna  1 
## a média da coluna 2 é 8 
## não existe número par na coluna  3 
## a média da coluna 4 é 10
  1. A média dos números ímpares de todas as linhas da matriz do exercício “13)”.
for(coluna in 1:4){
  contador <- 0
  soma <- 0
  for(linha in 1:4){
    if(mat[coluna,linha]%%2 != 0){
      soma <- soma + mat[coluna,linha]
      contador <- contador + 1
    }
  }
  if(contador != 0){
    media <- soma/contador
  cat("a média da linha", linha, "é", media, "\n")
  } else {
    cat("não existe número impar na linha", linha, "\n")
  }
}
## a média da linha 4 é 2 
## a média da linha 4 é 6 
## a média da linha 4 é 10 
## a média da linha 4 é 14
  1. A soma da diagonal principal da matriz.
soma <- 0
for(coluna in 1:4){
  for(linha in 1:4){
    if(linha == coluna){
      soma <- soma + mat[linha,coluna]
    
    }
  }
} 
  cat("a média diagornal principal é", soma, "\n")
## a média diagornal principal é 34
  1. A soma da diagonal secundária da matriz (desafio).

Exercício 16

  1. Repita o exercício “15)” com os dados do data.frame do exercício “14)”

a.A média de uma coluna da matriz do exercício “14)”.

matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)

df <- as.data.frame(matriz)

soma_col <- 0

for(linha in 1:dim(df)[1]){
  for(coluna in 1:dim(df)[2]){
    if(coluna == 2){
      soma_col <- soma_col + df[linha, coluna]
    }
  }
}
media_col <- soma_col/dim(df)[1]

media_col
## [1] 8
  1. A média de todas as colunas da matriz do exercício “14)”
valor_col <- rep(0,dim(df)[1])

for(linha in 1:dim(df)[1]){
  for(coluna in 1:dim(df)[2]){
    valor_col[coluna] <- valor_col[coluna] + df[linha, coluna]
  }
}

valor_col
## [1] 28 32 36 40

c.A média de todas as linhas da matriz do exercício “14)”.

valor_lin <- rep(0,4) 

for(linha in 1:4){
  for(coluna in 1:4){
    valor_lin[linha] <- valor_lin[linha] + matriz[linha, coluna]
  }
}

valor_lin
## [1] 10 26 42 58

d.A média dos números pares de todas as colunas da matriz do exercício “14)”.

valor_col_par <- rep(0,4) 

for(linha in 1:4){
  for(coluna in 1:4){
    if(matriz[linha, coluna]%%2 == 0){
      valor_col_par[coluna] <- valor_col_par[coluna] + matriz[linha, coluna]}
  }
}

valor_col_par
## [1]  0 32  0 40

e.A média dos números ímpares de todas as linhas da matriz do exercício “14)”.

valor_lim_imp <- rep(0,4) 
cont <- rep(0,4)

for(linha in 1:4){
  for(coluna in 1:4){
    if(matriz[linha, coluna]%%2 != 0){
      valor_lim_imp[linha] <- valor_lim_imp[linha] + matriz[linha, coluna]
      cont[linha] <- cont[linha] +1}
  }
}

valor_lim_imp
## [1]  4 12 20 28
  1. A soma da diagonal principal da matriz.
soma_diag <- 0

for(linha in 1:4){
  for(coluna in 1:4){
    if(linha == coluna){
      soma_diag <- soma_diag + matriz[linha, coluna]}
  }
}

soma_diag
## [1] 34
  1. A soma da diagonal secundária da matriz (desafio).
soma_diagSEC <- 0

for(linha in 1:4){
  for(coluna in 1:4){
    if((linha + coluna) == 5){
      soma_diagSEC <- soma_diagSEC + matriz[linha, coluna]}
  }
}

soma_diagSEC
## [1] 34

Exercício 17

  1. Faça um programa em RStudio que crie uma matriz VALOR 6x6 e calcule a soma de cada uma das linhas da matriz. Os valores das somas calculadas devem ser armazenados em um vetor RESULTADO de tamanho 6. Ao final do programa o vetor deve ser impresso.
VALOR <- matrix(data = 1:36, nrow = 6, ncol = 6, byrow = TRUE)

RESULTADO <- rowSums(VALOR)

print(RESULTADO)
## [1]  21  57  93 129 165 201

Exercício 18

  1. Faça um programa em RStudio que crie um data.frame D 5x5 e calcule a média dos valores armazenados na diagonal principal e a soma dos valores armazenados na diagonal secundária.
df <- as.data.frame(matrix(data = 1:25, nrow = 5, ncol = 5, byrow = TRUE))



df1.1 <- 1

df2.2 <- 7

df3.3 <- 13

df4.4 <- 19

df5.5 <- 25


SOMA <-  df1.1 + df2.2 + df3.3 + df4.4 + df5.5 

MEDIA <- SOMA/5

MEDIA
## [1] 13
df5.5 <- 5
df4.4 <- 9
df3.2 <- 13
df2.1 <- 17
df1.4 <- 21

SOMA3<- df5.5 + df4.4 + df3.2 + df2.1 + df1.4

SOMA3
## [1] 65

Exercício 19

  1. Faça um programa em RStudio que crie um data.frame D 4x4, que contenha números entre 0 e 100, e calcule e imprima:
  1. A média dos valores pares armazenados no data.frame;
set.seed(123)

D <- data.frame(matrix(sample(0:100, 16, replace = TRUE), nrow = 4))

colnames(D) <- c("A", "B", "C", "D")

# 

med_par <- mean(D[D %% 2 == 0])


maior_50 <- sum(D > 50)


med_imp <- mean(D[D %% 2 != 0 & D < 30])



colunas_imp <- sum(D[, c(TRUE, FALSE)])


maior_val <- max(D)
menor_val <- min(D)


cat("Média dos valores pares: ", med_par, "\n")
## Média dos valores pares:  63.09091
  1. A quantidade de elementos com valor maior que 50;
cat("elementos maiores que 50: ", maior_50, "\n")
## elementos maiores que 50:  8
  1. A média dos valores ímpares menores que 30 armazenados no data.frame;
cat("Média dos ímpares menores que 30: ", med_imp, "\n")
## Média dos ímpares menores que 30:  13
  1. A soma dos valores das colunas ímpares.
cat("Soma dos das colunas ímpares: ", colunas_imp, "\n")
## Soma dos das colunas ímpares:  397
  1. O maior e o menor valor armazenado.
cat("Maior valor armazenado: ", maior_val, "\n")
## Maior valor armazenado:  100

Exercício 20

  1. Faça um programa em RStudio que com base no salário de um funcionário (criado por vocês), calcule e mostre o seu salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre seu salário base e paga 10% de imposto sobre o salário base.
# salario base é o salario sobre qual iremos calcular os de gratifiocação e impsotos
salario_base <- 800

# gratificação é 5% do valor do salário base
grat <- salario_base * 0.05

# imposto é 10% do salário base
imposto <- salario_base * 0.1

salario <- salario_base + grat -imposto

salario
## [1] 760

Exercício 21

  1. Faça um programa em RStudio para calcular o salário mensal final de um vendedor. As seguintes informações determinam esse valor:
  1. salário fixo: R$ 3.000,00
  2. total de vendas por ele efetuadas: R$ 25.000,00
  3. percentual que ele recebe sobre o total de vendas (5%)
  4. IRPF de 7,5% sobre o salário fixo
  5. INSS de 11% sobre o salário fixo mais a comissão de vendas
salario_fixo <- 3000
total_vendas <- 25000
perc_vendas <-  total_vendas * 0.05
IRPF <- salario_fixo * 0.075
INSS <- (salario_fixo + perc_vendas)* 0.11

salario <- salario_fixo + perc_vendas - IRPF - INSS

salario 
## [1] 3557.5
cat( "BILHETE DE PAGAMENTO \n",
  "--------------------------------------", "\n",   
  "salario base         ", salario_fixo,"\n",
  "percentual de vendas" , perc_vendas,"\n",
  "imposto de renda   " ,  IRPF, "\n",
  "INSS                " ,  INSS,  "\n",
  "--------------------------------------", "\n",
  "liquido a receber   " , salario
)
## BILHETE DE PAGAMENTO 
##  -------------------------------------- 
##  salario base          3000 
##  percentual de vendas 1250 
##  imposto de renda    225 
##  INSS                 467.5 
##  -------------------------------------- 
##  liquido a receber    3557.5

Exercício 22

  1. Faça um programa em RStudio para efetuar a estimativa da quantidade de litros de cerveja consumida por um determinado bloco durante o carnaval. Outras informações: • o bloco tem 1000 pessoas; • cada pessoa consome em média 3 latões; • considerar que uma caixa de cerveja tem 12 latões; • sabe-se que cada latão tem 473 ml e que 1 litro tem 1000 ml; • considerar que o carnaval são quatro dias; Qual a quantidade de caixas de cerveja consumidas durante um dia? E durante os cinco dias? Supondo que cada caixa custa R$ 42,00 e é vendida a R$ 84,00 (R$ 7,00 cada lata), informar o o consumo em litros do bloco e o lucro auferido.
n_pessoas <- 1000

media_consumo <- 3

latoes_caixa <- 12

ml_latao <- 473

ml_litro <- 1000

carnaval_dias <- 5

custo_caixa <- 42

venda_caixa <- 84

# consumo total em litros

litros_total <- n_pessoas * media_consumo * ml_latao / ml_litro * carnaval_dias

# caixas de cerveja consumidas em um dia

caixas_dia <- (n_pessoas * media_consumo) / latoes_caixa


# Calcular a quantidade de caixas de cerveja consumidas em cinco dias

caixas_dias <- caixas_dia * carnaval_dias


#  lucro auferido

lucro_caixa <- venda_caixa - custo_caixa

lucro_total <- lucro_caixa * caixas_dias


# Imprimir resultados

cat("Quantidade de caixas de cerveja consumidas por dia:", round(caixas_dias, 2), "\n")
## Quantidade de caixas de cerveja consumidas por dia: 1250

Exercício 23

  1. Dois times de futebol fizeram uma disputa entre eles e jogaram 10 partidas. Os resultados de cada jogo foram armazenados em uma matriz JOGO 10x2, onde cada linha representa um jogo e cada coluna um time. Faça um programa em RStudio que calcule a média de gols realizados por cada time.
jogo <- matrix(data = c(4,2,2,3,5,2,1,3,2,1,1,1,1,1,1,1,1,1,1,1), ncol = 2)

soma_fla <- 0
soma_flu <- 0
for(i in 1:10){
  soma_flu <- soma_flu + jogo[i,2]
  soma_fla <- soma_fla + jogo[i,1]
}
media_fla <- soma_fla/10
media_flu <- soma_flu/10

cat("A média de gols do fla foi ", media_fla, "\n")
## A média de gols do fla foi  2.5
cat("A média de gols do flu foi ", media_flu, "\n") 
## A média de gols do flu foi  1