-
Posts
3 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Larissapereir
-
-
Meu código já está fazendo as viradas no array, porém preciso printar na tela uma sequência de viradas que resulte na pilha ordenada. Por exemplo:
Exemplo 1
Exemplo de entrada:
5
5 1 2 3 4
Exemplo de Saída:
1 2 0
Exemplo 2
Exemplo de entrada:
5
5 4 3 2 1
Exemplo de Saída:
1 0
Meu código:
#include <stdlib.h> #include <stdio.h> /* Inverte o array[0..i] */ void virar(int arr[], int i) { int temp, start = 0; while (start < i) { temp = arr[start]; arr[start] = arr[i]; arr[i] = temp; start++; i--; } } //Retorna o índice do elemento máximo no array[0..n-1] int findMax(int arr[], int n) { int mi, i; for (mi = 0, i = 0; i < n; ++i) if (arr[i] > arr[mi]) mi = i; return mi; } // A principal função que sorteia o array usando a função virar void tapiocaSort(int *arr, int n) { for (int curr_size = n; curr_size > 1; --curr_size) { //Encontra o índice do elemento máximo do array[0..curr_size-1] int mi = findMax(arr, curr_size); //Move o elemento máximo para o final da matriz atual, se ainda não estiver no final if (mi != curr_size-1) { //Para mover para o final do array, primeiro move-se o número máximo para o início virar(arr, mi); //Agora move o número máximo para o final, revertendo o array atual virar(arr, curr_size-1); } } } //Função para imprimir o array de tamanho n void printArray(int arr[], int n) { for (int i = 0; i < n; ++i) printf("%d ", arr[i]); } int main() { int n; scanf("%d", &n); int vetor[n]; int size = 0; int value = 0; //enquanto conseguir ler valores antes de chegar no fim do arquivo while(scanf("%d ", &value) > 0) { vetor[size++] = value; } tapiocaSort(vetor, n); puts("Sorted Array "); printArray(vetor, n); return 0; }
-
Como faço para imprimir os índices originais depois que o vetor estiver ordenado. Meu professor orientou a criar um vetor para guardar os índices, porém não sei como acessar o número do índice. Segue abaixo o código:
#include <stdio.h> void ordenar_vetor(int [], int); int main(void){ int n; scanf("%d", &n); int A[n]; int size = 0; int value = 0; //enquanto conseguir ler valores antes de chegar no fim do arquivo while(scanf("%d ", &value) > 0) { A[size++] = value; } /* ordena o vetor em ordem crescente */ ordenar_vetor(A, n); /* mostra o vetor v ordenado */ for(int i = 0; i < n; i++){ printf("%d ", A[i]); } printf("\n"); return 0; } void ordenar_vetor(int v[], int tamanho) { int i, j, temp; for(i = 0; i < tamanho - 1; i++){ for(j = 0; j < tamanho - 1; j++){ if(v[j] > v[j + 1]){ temp = v[j]; v[j] = v[j + 1]; v[j + 1] = temp; } } } }
Exemplo de entrada:5
4 5 3 7 1
Exemplo de Saída:
4 2 0 1 3
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
Implementar um TAD - Caçador de Mitos
em C/C#/C++
Postado
Olá, o problema é o seguinte: tenho a main com a seguinte implementação
Tenho que implementar a estrutura abaixo:
Na função add(int x, int y) tenho que armazenar o quadrante que caiu o raio no quadrante X,Y e na função mesmo_lugar() devolver 1 se dois raios caíram no mesmo lugar e 0 caso contrário, mas não sei como implementá-las, alguém pode me ajudar, por favor?