Você está aqui: Ruby ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Escreva um programa Ruby para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no array - Lista de Exercícios Resolvidos de Ruby

Quantidade de visualizações: 1108 vezes
Pergunta/Tarefa:

Dado o seguinte vetor de inteiros:

# vamos declarar e construir um vetor de 8 inteiros
valores = [0, 3, 0, 5, 7, 4, 0, 9]
Escreva um programa Ruby para mover todos os zeros para o final do vetor, ou seja, para a direita, sem alterar a ordem dos elementos diferentes de zero já presentes no array e sem criar um vetor adicional ou temporário.

Sua saída deverá ser parecida com:

Vetor na ordem original:

0   3   0   5   7   4   0   9   

Vetor com os zeros deslocados para o final:

3   5   7   4   9   0   0   0
Resposta/Solução:

Veja a resolução comentada deste exercício usando Ruby:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# vamos declarar e construir um vetor de 8 inteiros
valores = [0, 3, 0, 5, 7, 4, 0, 9]   
	
# vamos mostrar o vetor na ordem original
print("Vetor na ordem original:\n")
for i in (0..valores.length - 1)
  printf("%d   ", valores[i])
end    
	
# vamos inicializar j como 0 para que ele aponte para
# o primeiro elemento do vetor
j = 0
    
# agora o laço for percorre todos os elementos do vetor,
# incrementanto a variável i e deixando o j em 0
for i in (0..valores.length - 1)
  # encontramos um valor que não é 0
  if(valores[i] != 0)
    # fazemos a troca entre os elementos nos índices
    # i e j
    temp = valores[i]
    valores[i] = valores[j]
    valores[j] = temp
    # e avançamos o j para o elemento seguinte
    j = j + 1
  end
end

# agora mostramos o resultado
print("\n\nVetor com os zeros deslocados para o final:\n")
for i in (0..valores.length - 1)
  printf("%d   ", valores[i])
end

Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes.

Link para compartilhar na Internet ou com seus amigos:

Ruby ::: Dicas & Truques ::: Data e Hora

Como usar a classe Date do Ruby em seus programas

Quantidade de visualizações: 7428 vezes
A classe Date da linguagem Ruby representa datas. Ela o faz trabalhando com anos, meses, semanas e dias. Tenha em mente que, ao usar a classe Date não temos acesso a nada relacionado a horas, minutos ou segundos.

Internamente, uma data é representada como um número: ajd (Astronomical Julian Day Number). O dia da reforma do calendário (Day of Calendar Reform), sg, também é armazenado, para conversões para outros formatos de datas (há também um campo chamado "of" para a diferença de fuso horário, mas este é usado somente na subclasse DateTime).

Um novo objeto Date é criado usando-se um dos métodos de criação de objetos da classe. E tais métodos recebem nomes de acordo com o formato de data. Além disso, os argumentos fornecidos devem obedecer ao formato de data desejado, por exemplo, Date::civil() (apelido para Date::new()) com ano, mês e dia do ano, ou Date::ordinal() com ano e dia do ano. Todos estes métodos de criação de objetos da classe também aceitam o dia da reforma do calendário (Day of Calendar Reform) como um argumento opcional.

Objetos Date são imutáveis após sua criação.

Após criarmos um objeto Date, valores de data podem ser obtidos para os diferentes formatos de data suportados usando métodos de instância. Por exemplo, mon() retorna o mês civil, cwday() retorna o dia comercial da semana, e yday() retorna o dia ordinal do ano. Valores Date podem ser obtidos em qualquer formato, independente de qual formato foi usado para criar a instância do objeto.

A classe Date inclui o módulo Comparable, o que permite que objetos Date possam ser comparados e ordenados, faixas de datas possam ser criadas e assim por diante.

Veja no trecho de código abaixo como podemos criar um objeto Date representando a data atual:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importa o módulo date
require 'date'

# obtém a data de hoje
hoje = Date.today

# exibe o resultado
puts "Hoje é " + hoje.strftime("%e/%m/%Y")



Ruby ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em Ruby usando o método cos() da biblioteca Math - Calculadora de cosseno em Ruby

Quantidade de visualizações: 733 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem Ruby. Esta método, que faz parte da biblioteca Math, recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

puts "Cosseno de 0 = " + Math.cos(0).to_s
puts "Cosseno de 1 = " + Math.cos(1).to_s
puts "Cosseno de 2 = " + Math.cos(2).to_s

Ao executar este código Ruby nós teremos o seguinte resultado:

Cosseno de 0 = 1.0
Cosseno de 1 = 0.5403023058681398
Cosseno de 2 = -0.4161468365471424

Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo:




Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como converter uma string em um valor inteiro em Ruby usando a função to_i da classe String

Quantidade de visualizações: 11302 vezes
Em algumas situações precisamos transformar um valor contido em uma string em um valor numérico do tipo inteiro. Em Ruby podemos fazer isso usando o método to_i da classe String.

Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# um número inteiro declarado como string
valor = "34"

# vamos somar este número a um outro
resultado = 30 + valor.to_i

# exibe o resultado
puts resultado

Ao executar este código Ruby nós teremos o seguinte resultado:

64


Vamos testar seus conhecimentos em Ética e Legislação Profissional

Postura ética profissional

Os engenheiros são profissionais responsáveis por criar soluções para situações do dia a dia que, de certa forma, pareciam impossíveis. Eles otimizaram as formas de transporte, de construção e, principalmente, de produção das indústrias. Diante dessas inovações, é comum que esses profissionais enfrentem situações éticas em que precisem decidir se avançam ou não com tais projetos.

Quanto ao conceito de ética na engenharia, é correto afirmar que:

A) A ética na engenharia é um aspecto que deve ser considerado em segundo lugar ante os benefícios que pode trazer à humanidade.

B) A ética engloba a avaliação racional de ganhos e riscos, definindo as responsabilidades individuais durante a execução de um projeto.

C) A ética engloba a avaliação social dos riscos e das responsabilidades coletivas durante a execução de um projeto.

D) A ética é um conceito que não se aplica à engenharia, somente à medicina, por esta área tratar diretamente da vida de um indivíduo.

E) A ética somente diz respeito à engenharia, pois as descobertas realizadas por tal área englobam um grande número de pessoas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Serviços preliminares e instalações provisórias

Em um canteiro de obras:

A) São permitidas a entrada e a permanência de trabalhadores que não sejam compatíveis com a fase da obra.

B) É permitida a entrada rápida de trabalhadores que não estejam assegurados.

C) São proibidas a entrada e a permanência de quaisquer trabalhadores, independentemente da fase da obra.

D) É proibida a entrada de trabalhadores que não estejam assegurados, mas é permitida a permanência de trabalhadores que não sejam compatíveis com a fase da obra.

E) São proibidas a entrada e a permanência de trabalhadores que não estejam assegurados e que não sejam compatíveis com a fase da obra.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em AutoCAD Civil 3D

Quando criamos um novo COGO Point usando a opção Manual do Point Creation Tool (Create Ground Data -> Points), qual é o primeiro parâmetro de ponto solicitado?

A) Localização do ponto (point location)

B) Número do ponto (point number)

C) Nome do ponto (point name)

D) Descrição do ponto (point description)
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Perda de Carga Localizada, Acessórios de Tubulação

Considerando a questão: "Qual a perda de carga singular em um conduto de 100 m, diâmetro de 100 mm, com um fluido escoando a 2 m/s, apresentando as seguintes singularidades rosqueadas na tubulação: válvula globo totalmente aberta e cotovelo de 45º com raio normal?".

Qual o valor do fator de atrito f na tubulação anteriormente citada? Qual valor do somatório de Ks tornaria a perda de carga singular idêntica à perda de carga linear?

A) 0,66 e 66,2.

B) 0,066 e 66,2.

C) 0,132 e 66,2.

D) 0,066 e 132,4.

E) 0,132 e 132,4.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil no código de defesa do consumidor

A Constituição Federal brasileira confere à defesa do consumidor garantia de:

A) ordem social.

B) direitos e garantias fundamentais.

C) direitos políticos.

D) princípio fundamental.

E) direito de nacionalidade.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Ruby

Veja mais Dicas e truques de Ruby

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 10 usuários muito felizes estudando em nosso site.