Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD e VBA
PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Python ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercício Resolvido de Python - Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra for menor

Quantidade de visualizações: 5022 vezes
Algoritmos Resolvidos de Python - Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra for menor

Pergunta/Tarefa:

Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra for menor que R$ 20,00; caso contrário, o lucro será de 30%. Elabore um algoritmo que leia o valor do produto e imprima o valor de venda para o produto.

Sua saída deverá ser parecida com:

Informe o valor do produto: 85
O valor de venda é: 110.5
Resposta/Solução:

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

Código para principal.py:

# método principal
def main():
  # valor ler o valor do produto
  valor = float(input("Informe o valor do produto: "))
  
  # vamos calcular o valor de venda
  if valor < 20:
    valor_venda = valor + (valor * (45.0 / 100)) 
  else:
    valor_venda = valor + (valor * (30.0 / 100))
  
  print("O valor de venda é: {0}".format(valor_venda))
  
if __name__== "__main__":
  main()



C++ ::: STL (Standard Template Library) ::: Vector C++

Como retornar uma referência ao último elemento de um vector C++ usando a função back()

Quantidade de visualizações: 7385 vezes
O último elemento de um contêiner STL vector pode ser acessado por meio da função back(). Como esta função é sobrecarregada, temos duas opções:

reference back();
const_reference back() const;  
A primeira versão é do tipo T&, ou seja, retorna uma referência ao último elemento. Veja:

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá inteiros
  vector<int> valores;

  // vamos inserir três elementos
  valores.push_back(54);
  valores.push_back(13);
  valores.push_back(87);

  // vamos obter o valor do último elemento do vector
  // Note que back() pode ser usada dos dois lados
  // de uma operação de atribuição
  int valor = valores.back();
  cout << "Último elemento: " << valor << endl;

  // vamos alterar o valor do último elemento
  valores.back() = 102;

  // vamos testar o resultado
  cout << "Último elemento: " << valores.back() << endl;

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

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

Último elemento: 87
Último elemento: 102

Note que aqui nós usamos:

int valor = valores.back();

para guardar o valor do último elemento na variável valor. Poderíamos também usar:

int& valor = valores.back();
valor = 102;

Agora valor é uma referência direta ao último elemento do vector. Desta forma, qualquer alteração no valor da variável valor afetará também o último elemento do vector.

Observe agora o seguinte trecho de código:

int valor = valores.back(); // o último elemento é 87
valores.back() = 20;
cout << "Último elemento: " << valor << endl;

Aqui nós acessamos o valor do último elemento, guardarmos-o na variável valor e atribuímos o valor 20 à valores.back(). Porém, ao imprimirmos a variável valor o seu conteúdo ainda é 87. De fato, o que gostaríamos é que uma alteração em valores.back() afetasse também a variável valor. Assim:

int& valor = valores.back(); // o último elemento é 87
valores.back() = 20;
cout << "Último elemento: " << valor << endl;

Mas, como evitar alterações diretas na variável valor? Podemos declarar valor como uma referência constante, ou seja, usar a segunda versão da função back(), a saber const T&, que retorna uma referência constante. Veja:

const int& valor = valores.back(); // o último elemento é 87
valores.back() = 20;
valor = 300; // esta linha não compila
cout << "Último elemento: " << valor << endl;

Agora o efeito que queríamos é alcançado. Alterações em valores.back() afetam a variável valor, mas, não podemos alterar valor diretamente, já que esta variável é uma referência constante agora.


C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercício Resolvido de C++ - Escreva um programa em C++ para ler dois números inteiros M e N e, a seguir, imprimir os números pares

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

Escreva um programa em C++ para ler dois números inteiros M e N e, a seguir, imprimir os números pares existentes no intervalo [M, N] e imprimir a multiplicação desses números (os pares). Observe que os valores M e N devem ser fornecidos pelo usuário.

Nota: por se tratar de intervalo fechado [M, N], os números M e N devem ser incluídos na amostra. Além disso, seu código deve assegurar que M seja menor que N.

Sua saída deverá ser parecida com:

Informe o valor de M: 3
Informe o valor de N: 9
Números pares no intervalo [M, N]: 4, 6, 8,
Multiplicação dos números pares no intervalo [M, N]: 192
Resposta/Solução:

Veja a resolução comentada deste exercício em C++:

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  int m, n, i, multiplicacao = 1;
  
  // vamos pedir para o usuário informar os valores de M e N
  cout << "Informe o valor de M: ";
  cin >> m;
  cout << "Informe o valor de N: ";
  cin >> n;
  
  // M é menor que N?
  if(m >= n){
    cout << "M deve ser menor que N";
  }
  else{
    // mostra os números pares no intervalo
    cout << "Números pares no intervalo [M, N]: ";
    for(i = m; i <= n; i++){
      if(i % 2 == 0){
	cout << i << ", ";
	// aproveitamos para calcular a multiplicação dos números
	// pares no intervalo informado
	multiplicacao = multiplicacao * i;
      } 
    }
		
    // mostramos a multiplicação
    cout << "\nMultiplicação dos números pares no intervalo [M, N]: " <<
      multiplicacao << endl;
  }
  
  cout << "\n\n";
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS; 
}



Python ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

Python Insertion Sort - Como ordenar um vetor de inteiros usando a ordenação Insertion Sort (Ordenação por Inserção)

Quantidade de visualizações: 4338 vezes
Nesta dica veremos como implementar a ordenação Insertion Sort, Insertion-Sort, ou Ordenação por Inserção na linguagem Python.

A ordenação Insertion Sort, Insertion-Sort, ou Ordenação por Inserção, possui uma complexidade de tempo de execução igual à ordenação Bubble Sort (Ordenação da Bolha), ou seja, O(n2). Embora mais rápido que o Bubble Sort, e ser um algorítmo de ordenação quadrática, a ordenação Insertion Sort é bastante eficiente para problemas com pequenas entradas, sendo o mais eficiente entre os algoritmos desta ordem de classificação, porém, nunca recomendada para um grande conjunto de dados.

A forma mais comum para o entendimento da ordenação Insertion Sort é compará-la com a forma pela qual algumas pessoas organizam um baralho num jogo de cartas. Imagine que você está jogando cartas. Você está com as cartas na mão e elas estão ordenadas. Você recebe uma nova carta e deve colocá-la na posição correta da sua mão de cartas, de forma que as cartas obedeçam à ordenação.

A cada nova carta adicionada à sua mão de cartas, a nova carta pode ser menor que algumas das cartas que você já tem na mão ou maior, e assim, você começa a comparar a nova carta com todas as cartas na sua mão até encontrar sua posição correta. Você insere a nova carta na posição correta, e, novamente, a sua mão é composta de cartas totalmente ordenadas. Então, você recebe outra carta e repete o mesmo procedimento. Então outra carta, e outra, e assim por diante, até não receber mais cartas.

Esta é a ideia por trás da ordenação por inserção. Percorra as posições do vetor (array), começando com o índice 1 (um). Cada nova posição é como a nova carta que você recebeu, e você precisa inseri-la no lugar correto no sub-vetor ordenado à esquerda daquela posição.

Vamos ver a implementação na linguagem Python agora? Observe o seguinte código, no qual temos um vetor de inteiros com os elementos {4, 6, 2, 8, 1, 9, 3, 0, 11}:

# método que permite ordenar o vetor de inteiros
# usando a ordenação Insertion Sort
def insertionSort(vetor):
  # percorre todos os elementos do vetor começando
  # pelo segundo elemento
  for i in range(len(vetor)):
    atual = vetor[i] # o valor atual a ser inserido
    # começa a comparar com a célula à esquerda de i
    j = i - 1
      
    # enquanto vetor[j] estiver fora de ordem em relação
    # a atual
    while((j >= 0) and (vetor[j] > atual)):
      # movemos vetor[j] para a direita e decrementamos j
      vetor[j + 1] = vetor[j]
      j = j - 1
      
      # colocamos atual em seu devido lugar
      vetor[j + 1] = atual

# função principal do programa
def main():
  # cria uma lista de inteiros
  valores = [4, 6, 2, 8, 1, 9, 3, 0, 11]
  
  # exibimos o vetor na ordem original
  print("Ordem original:\n")
  for i in range(len(valores)):
    print(valores[i], end = "  ")
    
  # vamos ordenar o vetor agora
  insertionSort(valores)
    
  # exibimos o vetor ordenado
  print("\n\nOrdenado:\n")
  for i in range(len(valores)):
    print(valores[i], end = "  ")

if __name__== "__main__":
  main()

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

Sem ordenação:

4 6 2 8 1 9 3 0 11

Ordenada usando Insertion Sort:

0 1 2 3 4 6 8 9 11


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

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


E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser. Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book Apenas R$ 19,90


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