Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Ordenação e Pesquisa (Busca)

Como usar a Ordenação da Bolha em C para ordenar os valores de um vetor em ordem crescente ou decrescente - Exercícios Resolvidos de C

Quantidade de visualizações: 332 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 C 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
Resposta/Solução:

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

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

#include <stdio.h>
#include <stdlib.h>

#define TAM_VETOR 10

// função principal do programa
int main(int argc, char *argv[]){
  // vamos declarar e construir um vetor de 10 elementos
  int valores[TAM_VETOR];
  int i, j, temp;
	  
  // vamos pedir que o usuário informe os valores
  for(i = 0; i < TAM_VETOR; i++){
    printf("Informe o valor para o índice %d: ", i);
    scanf("%d", &valores[i]);
  }
    
  // vamos mostrar o vetor informado
  printf("\nO array informado foi:\n\n");
  for(i = 0; i < TAM_VETOR; i++){
    printf("%d   ", valores[i]);
  }
    
  // vamos ordenar os elementos do vetor usando a ordenação da bolha
  // laço externo de trás para frente
  for(i = TAM_VETOR - 1; i > 1; i--){
    for(j = 0; j < i; j++){ // 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
  printf("\n\nO array ordenado é:\n\n");
  for(i = 0; i < TAM_VETOR; i++){
    printf("%d   ", valores[i]);
  }
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}


Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Matemática e Estatística

Como calcular MDC em C

Quantidade de visualizações: 23585 vezes
Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada:

Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b.

O trecho de código abaixo mostra como calcular o MDC de dois números informados:

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

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

// função que recebe dois inteiros e retorna
// o Máximo Divisor Comum dos dois 
int MDC(int a, int b){
  int resto;
 
  while(b != 0){
    resto = a % b;
    a = b;
    b = resto;
  }
 
  return a;
} 
 
int main(int argc, char *argv[]){
  int x, y;
	
  setlocale(LC_ALL,""); // para acentos do português
	
  printf("Este programa permite calcular o MDC\n");
  printf("Informe o primeiro número: ");
  scanf("%d", &x);
  printf("Informe o segundo número: ");
  scanf("%d", &y);
 
  printf("O Máximo Divisor Comum de %d e %d é %d",
    x, y, MDC(x, y));
  
  printf("\n\n");
  system("pause");
  return 0;
}

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

Este programa permite calcular o MDC
Informe o primeiro número: 12
Informe o segundo número: 9
O Máximo Divisor Comum de 12 e 9 é 3


C ::: Dicas & Truques ::: Struct (Estruturas, Registros)

Linguagem C para iniciantes - Como usar estruturas (struct) em C

Quantidade de visualizações: 68100 vezes
Vetores e matrizes (arrays) são muito importantes quando precisamos agrupar várias variáveis de um mesmo tipo de dados. Porém, há casos em que precisamos agrupar variáveis de diferentes tipos. Para estes casos a linguagem C nos fornece as estruturas (struct). Veja como declará-las:

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

// uma estrutura Pessoa
struct Pessoa
{
  char *nome;
  int idade;
};

Veja que esta estrutura possui dois tipos de dados diferentes: um ponteiro para uma cadeia de caracteres e uma variável do tipo int.

Para declarar variáveis do tipo Pessoa você tem duas opções. A primeira consiste em declarar as variáveis juntamente com a declaração da estrutura. Veja:

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

// uma estrutura Pessoa
struct Pessoa
{
  char *nome;
  int idade;
}pessoa, cliente, chefe;

A outra forma consiste em declarar a variável no local no qual ela será usada. Esta forma é mais prática. Veja um exemplo completo de como isso é feito:

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

#include <stdio.h>
#include <stdlib.h>

// uma estrutura Pessoa
struct Pessoa
{
  char *nome;
  int idade;
};

int main(int argc, char *argv[])
{
  // declara uma variável do tipo struct
  struct Pessoa cliente;
  cliente.nome = "Osmar J. Silva";
  cliente.idade = 36;

  // obtém os dados
  printf("O nome do cliente e: %s\n", cliente.nome);
  printf("A idade do cliente e: %d\n", cliente.idade);

  printf("\n\n");
  system("PAUSE");
  return 0;
}



C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercício Resolvido de C - Usando um laço for para percorrer os elementos de uma matriz e exibir a soma dos valores positivos e a quantidade de valores negativos

Quantidade de visualizações: 11688 vezes
Exercícios Resolvidos de C - Usando um laço for para percorrer os elementos de uma matriz e exibir a soma dos valores positivos e a quantidade de valores negativos

Pergunta/Tarefa:

Considere a seguinte matriz de inteiros:

// uma matriz de inteiros contendo sete elementos
int valores[] = {-3, 9, 12, -34, -2, 20, 10};


Escreva um programa C que usa um laço for para percorrer todos os elementos desta matriz e exibir a soma dos valores positivos e a quantidade de valores negativos. Seu programa deverá exibir uma saída com a mensagem:

A soma dos valores positivos é: 51
A quantidade de valores negativos é: 3


Resposta/Solução:

Veja abaixo a resolução completa para esta tarefa:

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

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // uma matriz de inteiros contendo sete elementos
  int valores[] = {-3, 9, 12, -34, -2, 20, 10};
    
  // o primeiro passo é criar uma variável que vai receber a soma
  // dos valores positivos
  int soma_positivos = 0;

  // agora uma variável para receber a quantidade de valores negativos
  int quant_negativos = 0;
  
  int i;

  // agora vamos usar uma laço for para percorrer todos os elementos
  // da matriz
  for(i = 0; i < 7; i++){
    // vamos verificar se o valor do elemento atual é negativo
    if(valores[i] < 0){
      quant_negativos++;  
    }
    else{ // o valor é positivo
      soma_positivos = soma_positivos + valores[i]; 
    }
  }

  // vamos exibir a soma dos valores positivos
  printf("A soma dos valores positivos é: %d\n", soma_positivos);

  // vamos exibir a quantidade de valores negativos
  printf("A quantidade de valores negativos é: %d\n", quant_negativos);

  system("PAUSE");	
  return 0;
}



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 comprimento equivalente das perdas de cargas singulares da tubulação anteriormente citada, considerando que o tubo perde linearmente 0,135 m de carga por metros de tubulação?

Selecione a resposta:

A) 9 m.

B) 14 m.

C) 10 m.

D) 12 m.

E) 8 m.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Qual é a sintáxe correta do laço FOR em JavaScript?

A) for (var i = 0; i <= 5) {}

B) for var i = 1 to 5 {}

C) for (var i <= 5; i++) {}

D) for (var i = 0; i <= 5; i++) {}
Verificar Resposta Estudar Cards Todas as Questões

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

A responsabilidade moral

A ética leva o homem a questionar constantemente suas ações e as atitudes alheias, tentando definir se elas são boas ou más, corretas ou incorretas. Na condição de disciplina, essa ciência se preocupa com a análise das ideias que envolvem a produção do bem e do mal, ou seja, dedica-se aos seus aspectos teóricos. Em tal perspectiva, pode-se afirmar que o conceito de ética se refere a:

A) quando o ser humano não pode falhar.

B) um conjunto de conhecimentos extraídos dos meios de comunicação.

C) um conjunto de conhecimentos extraídos da investigação do comportamento humano.

D) um conjunto de conhecimentos extraídos da investigação da moral.

E) quando o ser humano falha.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Tipos de Escoamentos

Para um conduto cilíndrico de raio R, calcular a área molhada, o perímetro molhado e o raio hidráulico em duas situações: (1) conduto completamente cheio de água e (2) conduto 50% preenchido. Identificar o escoamento que ocorre em cada uma das situações e qual escoamento é mais influenciado pelas paredes do contorno sólido.

A) A1 = πR2; PM1 = 2πR, RH1 = R, escoamento em conduto forçado
A2 = (πR2)/2; PM2 = πR, RH2 = R/2, escoamento à superfície livre.

O escoamento em 2 é o mais influenciado pelas paredes, pois o RH é menor.

B) A1 = πR2; PM1 = 2πR, RH1 = R/2, escoamento em conduto forçado
A2 = (πR2)/2; PM2 = πR, RH2 = R/2, escoamento à superfície lívre.

Ambos os escoamentos possuem a mesma influência, pois o valor de RH é igual nos dois casos.

C) A1 = πR2; PM1 = 2πR, RH1 = R, escoamento em conduto forçado
A2 = (πR2)/2; PM2 = πR, RH2 = R/2, escoamento à superfície livre.

O escoamento em 1 é o mais influenciado pelas paredes, pois o RH é maior.

D) A1 = πR2; PM1 = 2πR, RH1 = R/2, escoamento em conduto forçado
A2 = (πR2)/2; PM2 = πR, RH2 = R/2, escoamento à superfície livre.

O escoamento em 2 é o mais influenciado pelas paredes, pois a A2 é menor.

E) A1 = πR2; PM1 = 2πR, RH1 = R/2, escoamento à superfície livre
A2 = (πR2)/2; PM2 = πR, RH2 = R/2, escoamento em conduto forçado.

Ambos os escoamentos possuem a mesma influência, pois o valor de RH é igual nos dois casos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

O manômetro

Um manômetro é o instrumento utilizado para medir a pressão de fluidos contidos em recipientes fechados. O manômetro para medição da pressão absoluta é usado quando pressões devem ser medidas, independentemente da pressão atmosférica. A pressão do meio medido é determinada contra uma pressão de referência, sendo que esta última corresponde ao ponto zero da pressão absoluta.

Nesse contexto, determine a pressão manométrica em P devido à deflexão do mercúrio do manômetro em U da figura a seguir.



A) Aproximadamente 77kPa.

B) Aproximadamente 89kPa.

C) Aproximadamente 94kPa.

D) Aproximadamente 106kPa.

E) Aproximadamente 111kPa.
Verificar Resposta Estudar Cards Todas as Questões

Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

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á 57 usuários muito felizes estudando em nosso site.