Python ::: Desafios e Lista de Exercícios Resolvidos ::: Ordenação e Pesquisa (Busca) |
Exercícios Resolvidos de Python - Como usar a Ordenação da Bolha em Python para ordenar os valores de um vetor em ordem crescente ou decrescenteQuantidade de visualizações: 985 vezes |
|
Pergunta/Tarefa: A Ordenação da Bolha, ou ordenação por flutuação (literalmente "por bolha"), também chamada de Bubble Sort, é um algoritmo de ordenação dos mais simples. A ideia é percorrer o array diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequência. Essa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível, e disso vem o nome do algoritmo. No melhor caso, o algoritmo executa n operações relevantes, onde n representa o número de elementos do vetor. No pior caso, são feitas n2 operações. A complexidade desse algoritmo é de ordem quadrática. Por isso, ele não é recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados. Escreva um programa Python que declara, constrói um vetor de 10 inteiros e peça para o usuário informar os valores de seus elementos. Em seguida use a ordenação da bolha para ordenar os elementos em ordem crescente. Sua saída deverá ser parecida com: Informe o valor para o índice 0: 84 Informe o valor para o índice 1: 23 Informe o valor para o índice 2: 9 Informe o valor para o índice 3: 5 Informe o valor para o índice 4: 11 Informe o valor para o índice 5: 3 Informe o valor para o índice 6: 50 Informe o valor para o índice 7: 7 Informe o valor para o índice 8: 2 Informe o valor para o índice 9: 73 O array informado foi: 84 23 9 5 11 3 50 7 2 73 O array ordenado é: 2 3 5 7 9 11 23 50 73 84 Veja a resolução comentada deste exercício usando Python:
# função principal do programa
def main():
# vamos declarar e construir um vetor de 10 elementos
valores = [0 for x in range(10)]
# vamos pedir que o usuário informe os valores
for i in range(0, len(valores)):
valores[i] = int(input("Informe o valor para o índice {0}: ".format(i)))
# vamos mostrar o vetor informado
print("\nO array informado foi:\n\n")
for i in range(0, len(valores)):
print(valores[i], end=" ")
# vamos ordenar os elementos do vetor usando a ordenação da bolha
# laço externo de trás para frente
for i in range(len(valores) - 1, 0, -1):
for j in range(0, i): # laço interno vai no fluxo normal
if valores[j] > valores[j + 1]: # temos que trocá-los de lugar
temp = valores[j]
valores[j] = valores[j + 1]
valores[j + 1] = temp
# vamos exibir o vetor já ordenado
print("\n\nO array ordenado é:\n\n")
for i in range(0, len(valores)):
print(valores[i], end=" ")
print("\n")
if __name__== "__main__":
main()
|
C ::: C para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a norma ou módulo de vetores nos espaços R2 e R3 usando C - Geometria Analítica e Álgebra Linear usando CQuantidade de visualizações: 4840 vezes |
|
Em Geometria Analítica e Álgebra Linear, a magnitude, norma, comprimento, tamanho ou módulo (também chamado de intensidade na Física) de um vetor é o seu comprimento, que pode ser calculado por meio da distância de seu ponto final a partir da origem, no nosso caso (0,0). Considere o seguinte vetor no plano, ou seja, no espaço bidimensional, ou R2: \[\vec{v} = \left(7, 6\right)\] Aqui este vetor se inicia na origem (0, 0) e vai até as coordenadas (x = 7) e (y = 6). Veja sua plotagem no plano 2D: ![]() Note que na imagem já temos todas as informações que precisamos, ou seja, o tamanho desse vetor é 9 (arredondado) e ele faz um ângulo de 41º (graus) com o eixo x positivo. Em linguagem mais adequada da trigonometria, podemos dizer que a medida do cateto oposto é 6, a medida do cateto adjacente é 7 e a medida da hipotenusa (que já calculei para você) é 9. Note que já mostrei também o ângulo theta (__$\theta__$) entre a hipotenusa e o cateto adjacente, o que nos dá a inclinação da reta representada pelos pontos (0, 0) e (7, 6). Relembrando nossas aulas de trigonometria nos tempos do colegial, temos que o quadrado da hipotenusa é a soma dos quadrados dos catetos, ou seja, o Teorema de Pitágoras: \[a^2 = b^2 + c^2\] Como sabemos que a potenciação é o inverso da radiciação, podemos escrever essa fórmula da seguinte maneira: \[a = \sqrt{b^2 + c^2}\] Passando para os valores x e y que já temos: \[a = \sqrt{7^2 + 6^2}\] Podemos comprovar que o resultado é 9,21 (que arredondei para 9). Não se esqueça da notação de módulo ao apresentar o resultado final: \[\left|\vec{v}\right| = \sqrt{7^2 + 6^2}\] E aqui está o código C que nos permite informar os valores x e y do vetor e obter o seu comprimento, tamanho ou módulo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]){
float x, y, norma;
// vamos ler os valores x e y
printf("Informe o valor de x: ");
scanf("%f", &x);
printf("Informe o valor de y: ");
scanf("%f", &y);
// vamos calcular a norma do vetor
norma = sqrt(pow(x, 2) + pow(y, 2));
// mostra o resultado
printf("A norma do vetor é: %f", norma);
printf("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código C nós teremos o seguinte resultado: Informe o valor de x: 7 Informe o valor de y: 6 A norma do vetor é: 9.219544457292887 Novamente note que arredondei o comprimento do vetor para melhor visualização no gráfico. Para calcular a norma de um vetor no espaço, ou seja, no R3, basta acrescentar o componente z no cálculo. |
C++ ::: STL (Standard Template Library) ::: unordered_map |
Como contar as frequências de palavras em uma frase ou texto em C++ usando um unordered_mapQuantidade de visualizações: 1034 vezes |
|
Nesta dica mostrarei como podemos usar o mapa não ordenado (unordered_map) da linguagem C++ para contar as frequências das palavras individuais de uma palavra ou texto. O exemplo mostrado aqui serve como base para a criação de aplicações muito interessantes. Veja o código C++ completo:
#include <string>
#include <iostream>
#include <unordered_map>
#include <bits/stdc++.h>
using namespace std;
// protótipo da função que exibe a frequência de palavras em uma
// frase ou texto
void exibir_frequencias(const string &frase);
int main(int argc, char *argv[]){
// vamos declarar uma frase
// retirei acentos e pontuações de propósito
string frase = "Gosto de Java e Python pois quero aprender Java";
// mostramos a frase
cout << "A frase é: " << frase << endl;
// chamamos a função que exibe as frequencias
cout << "\nA frequência das palavras é:\n" << endl;
exibir_frequencias(frase);
cout << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
// função que exibe a frequência de palavras em uma
// frase ou texto
void exibir_frequencias(const string &frase){
// vamos declarar um mapa que terá como chave uma string
// e como valor um int
unordered_map<string, int> frequencias;
// agora convertemos a frase recebido como argumento
// em um objeto stringstream
stringstream ss(frase);
// e percorremos as palavras individualmente
string palavra;
while (ss >> palavra){
// essa palavra já existe no mapa?
if (frequencias.find(palavra) == frequencias.end()){
// adiciona esta palavra ao mapa
frequencias[palavra] = 1;
}
else{
// já existe. Vamos incrementar esta frequência
frequencias[palavra] = frequencias[palavra] + 1;
}
}
// agora percorremos o mapa não ordenado, acessando
// cada chave e mostrando a frequencia de cada palavra
unordered_map<string, int>:: iterator p;
for (p = frequencias.begin(); p != frequencias.end(); p++){
cout << "(" << p->first << ", " << p->second << ")\n";
}
}
Ao executar este código C++ nós teremos o seguinte resultado: A frase é: Gosto de Java e Python pois quero aprender Java A frequência das palavras é: (aprender, 1) (quero, 1) (pois, 1) (Gosto, 1) (Java, 2) (e, 1) (de, 1) (Python, 1) |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Um programa Java que solicita ao usuário que informe sua idade em anos, meses e dias e mostre sua idade em diasQuantidade de visualizações: 14450 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que solicite ao usuário que informe sua idade em anos, meses e dias, ou seja, sua idade atual em anos e a quantidade de meses e dias decorridos desde seu aniversário. Seu programa deverá exibir uma saída parecida com: Informe sua idade em anos, meses e dias Anos: 25 Meses: 2 Dias: 12 Idade expressa em dias: 9197 Resposta/Solução: Veja a resolução comentada deste exercício usando Java console (lendo a entrada do usuário por meio do uso da classe Scanner):
public static void main(String[] args){
// não se esqueça de adicionar um import para a classe Scanner
// import java.util.Scanner;
// vamos criar um objeto da classe Scanner
Scanner entrada = new Scanner(System.in);
// variáveis que vão guardar a idade em anos, meses e dias;
int anos, meses, dias;
int idade_dias; // guardará a idade em dias
System.out.println("Informe sua idade em anos, meses e dias");
// obtém os anos
System.out.print("Anos: ");
anos = Integer.parseInt(entrada.nextLine());
// obtém os meses
System.out.print("Meses: ");
meses = Integer.parseInt(entrada.nextLine());
// obtém os dias
System.out.print("Dias: ");
dias = Integer.parseInt(entrada.nextLine());
// vamos calcular a idade em dias
idade_dias = (anos * 365) + (meses * 30) + dias;
// vamos exibir o resultado
System.out.println("Idade expressa em dias: " + idade_dias);
}
|
Nossas 20 dicas & truques de programação mais populares |
|
C - Como escrever uma função strtoupper() em C para transformar uma palavra inteira em letras maiúsculas |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Ruby - Como inserir uma substring em uma determinada posição de uma string em Ruby usando a função insert() C - Como ler o conteúdo de um arquivo um caractere de cada vez usando a função fgetc() da linguagem C |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







