Ir ao conteúdo

Posts recomendados

Postado

Bom dia pessoal, estou tendo dificuldades em utilizar o algoritmo buble short para ordenação.

No meu exemplo em questão, tenho que ordenar 10 numeros na ordem crecente utilizando esse allgoritmo.

#include <stdio.h>
#include <stdlib.h>
#define max 20
  /* Definição da função bubble_sort */
  void bubble_sort (int vet[], int max) {      
    int flag, i, aux;   
    
    do {
      flag = 0;
      for (i = 0; i < (max - 1); i++) {
   
   /* Verfica se o vetor está em ordem, no caso ele coloca em ordem crescente, para decrescente trocar '>' por '<' */
   if (vet[i] > vet[i+1]) {
     /* Caso não esteja, ordena */
     aux = vet[i];
     vet[i] = vet[i+1];
     vet[i+1] = aux;
     flag =1;
   }
      }
    /* Repete enquanto algum valor estiver fora de ordem */  
    } while (flag == 1);
    
    /* Imprime o vetor ordenado em ordem crescente */
    for (i = 0; i < max; i++) {
      printf ("%d ",vet[i]);
    }
    printf ("\n");
    return 0;
  }

int main () {
   
  int max, i;
  printf("DIGITE 20 NUMEROS REAIS\n");
  /* Lê o total de números do vetor */
  scanf ("%d", &max);
  
  /* Define o vetor com o número max de algarismos */
  int vetor[max];
  
  for (i = 0; i < max; i++) {
    /* Lê cada indice do vetor */
    scanf ("%d",&vetor[i]);
  }
  
  /* Dentro dessa função o vetor será ordenado */
  void bubble_sort(vetor, max); 
  return 0;
}

está dando erro nas linhas 37,37, 32 e 48

Postado
#include <stdio.h>
#include <stdlib.h>
//#define max 20    Você está declarando uma variavel com o mesmo nome na main
  /* Definição da função bubble_sort */
  void bubble_sort (int vet[], int max) {
    int flag, i, aux;

    do {
      flag = 0;
      for (i = 0; i < (max - 1); i++) {

   /* Verfica se o vetor está em ordem, no caso ele coloca em ordem crescente, para decrescente trocar '>' por '<' */
   if (vet[i] > vet[i+1]) {
     /* Caso não esteja, ordena */
     aux = vet[i];
     vet[i] = vet[i+1];
     vet[i+1] = aux;
     flag =1;
   }
      }
    /* Repete enquanto algum valor estiver fora de ordem */
    } while (flag == 1);

    /* Imprime o vetor ordenado em ordem crescente */
    for (i = 0; i < max; i++) {
      printf ("%d ",vet[i]);
    }
    printf ("\n");
    return 0;
  }

int main () {

  int max, i;
  printf("DIGITE 20 NUMEROS REAIS\n"); //Pede o tamanho do vetor na verdade
  /* Lê o total de números do vetor */
  scanf ("%d", &max);

  /* Define o vetor com o número max de algarismos */
  int vetor[max];

  for (i = 0; i < max; i++) {
    /* Lê cada indice do vetor */
    scanf ("%d",&vetor[i]);
  }

  /* Dentro dessa função o vetor será ordenado */
  /*void*/ bubble_sort(vetor, max); //Aqui não vai o void
  return 0;
}

Inseri comentários nas linhas 3, 35 e 48

  • Curtir 1
Postado
#include <stdio.h>
#include <stdlib.h>
//#define max 20    Você está declarando uma variavel com o mesmo nome na main
  /* Definição da função bubble_sort */
  void bubble_sort (int vet[], int max) {
    int flag, i, aux;

    do {
      flag = 0;
      for (i = 0; i < (max - 1); i++) {

   /* Verfica se o vetor está em ordem, no caso ele coloca em ordem crescente, para decrescente trocar '>' por '<' */
   if (vet[i] > vet[i+1]) {
     /* Caso não esteja, ordena */
     aux = vet[i];
     vet[i] = vet[i+1];
     vet[i+1] = aux;
     flag =1;
   }
      }
    /* Repete enquanto algum valor estiver fora de ordem */
    } while (flag == 1);

    /* Imprime o vetor ordenado em ordem crescente */
    for (i = 0; i < max; i++) {
      printf ("%d ",vet[i]);
    }
    printf ("\n");
    return;
  }

int main () {
  int max = [20];
  int i;
  printf("DIGITE 20 NUMEROS REAIS\n"); //tamanho do vetor na verdade
  scanf ("%d", &max);

  /* Define o vetor com o número max de algarismos */
  int vetor[max];

  for (i = 0; i < max; i++) {
    /* Lê cada indice do vetor */
    scanf ("%d",&vetor[i]);
  }

  /* Dentro dessa função o vetor será ordenado */
  /*void*/ bubble_sort(vetor, max); //Aqui não vai o void
  return 0;
}

@MassakiMsk refiz as alterações necessárias, mesmo assim o programa não compila

print questao.png

Postado
3 minutos atrás, MassakiMsk disse:

@idkgabz Acho que entendi, então no caso você não vai usar o int vetor[max] né? Porque é ele quem está recebendo os numeros digitados pelo usuário.

@MassakiMsk exatamente, seria interessante eu criar um laço de repetição então ?

Postado

@MassakiMsk

#include <stdio.h>
#include <stdlib.h>
//#define max 20    Você está declarando uma variavel com o mesmo nome na main
  /* Definição da função bubble_sort */
  void bubble_sort (int vet[], int max) {
    int flag, i, aux;

    do {
      flag = 0;
      for (i = 0; i < (max - 1); i++) {

   /* Verfica se o vetor está em ordem, no caso ele coloca em ordem crescente, para decrescente trocar '>' por '<' */
   if (vet[i] > vet[i+1]) {
     /* Caso não esteja, ordena */
     aux = vet[i];
     vet[i] = vet[i+1];
     vet[i+1] = aux;
     flag =1;
   }
      }
    /* Repete enquanto algum valor estiver fora de ordem */
    } while (flag == 1);

    /* Imprime o vetor ordenado em ordem crescente */
    for (i = 0; i < max; i++) {
      printf ("%d ",vet[i]);
    }
    printf ("\n");
    return;
  }

int main () {
  int vetor[max];
  int i;
  printf("DIGITE 20 NUMEROS REAIS\n"); //tamanho do vetor na verdade
  scanf ("%d", &vetor[max]);

  /* Define o vetor com o número max de algarismos */
 

  for (i = 0; i < max; i++) {
    /* Lê cada indice do vetor */
    scanf ("%d",&vetor[i]);
  }

  /* Dentro dessa função o vetor será ordenado */
  /*void*/ bubble_sort(vetor, max); //Aqui não vai o void
  return 0;
}

continua dando erro..

Postado
int main () {
  int i, max = 20; // pode usar variavel ou pode usar #define max 20
  int vetor[max]; // vetor de 20 int em malloc: (sizeof(int)*20)
  
  printf("DIGITE 20 NUMEROS REAIS\n"); //tamanho do vetor na verdade
  //scanf ("%d", &vetor[max]); isso não é usado fora do loop

  for (i = 0; i < max; i++) {
    /* Lê cada indice do vetor */
    scanf ("%d",&vetor[i]);
  }

  /* Dentro dessa função o vetor será ordenado */
  /*void*/ bubble_sort(vetor, max); //Aqui não vai o void
  return 0;
}

O erro ocorreu, por que você tentou usar o índice max no vetor, pois o mesmo é inexistente, sendo que se um vetor é declarado com 20, os índices serão de 0 a 19.

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!