Ir ao conteúdo

Problema Procedimento Recursivo


gustavomaes

Posts recomendados

Postado

Boa noite.

Tenho que fazer um procedimento recursivo em c++ que pegue um vetor e inverta ele.

Exemplo: pegar um Vetor [1] [2] [3] e salvar como [3] [2] [1]...

Fiz o seguinte:

#include <cstdlib>
#include <iostream>

using namespace std;

void inverte (int x[], int fim, int c){
int aux;
if (c < fim)
aux = x[fim];
x[fim] = x[c];
x[c] = aux;
inverte (x, fim -1, c +1);
}



int main(int argc, char *argv[]){
int n;
cout << "Informe o tamanho do Vetor" << "\n";
cin >> n;

int x[n];

for (int i = 0; i < n; i++){
cout << "Informe o vaor do vetor:";
cin >> x[i];
}

inverte (x, n - 1, 0);

cout << "seu vetor invertido é: ";

for (int i = 0; i < n; i++){
cout << "[" << x[i] << "] ";
}


system("PAUSE");
return EXIT_SUCCESS;
}

porém quando rodo o programa trava :/

Se alguém puder ajudar (y)

valeu

Postado

Um erro grave é: Você está declarando "int x[n]", porém, "n" não foi especificado ainda. Isso vai dar erro. Precisa estabelecer um limite, ou então, fazer alocação dinâmica.

Além disso, corrija a função "inverte()":


void inverte (int x[], int inicio, int fim)
{
int aux = 0;

if ( (fim - inicio) > 2 ) // Menor que 2, já começa a inversão.
inverte(x, inicio+1, fim-1);

aux = x[inicio];
x[inicio] = x[fim];
x[fim] = aux;

return;
}

E chame ela como:


inverte(x, 0, n-1); // matriz, valor inicial e final

Postado

Na verdade até vai, mas vai ter que lançar mão da extensão do g++ para VLA's..

Com -Wvla aí ele aponta:

$ g++ -Wvla vla.cpp

vla.cpp: In function 'int main()':

vla.cpp:10:10: warning: variable length array 'vet' is used

Para o caso do C++ eu realmente acho que não vale a pena ficar fazendo uso disso.

Abs

NW

Arquivado

Este tópico foi arquivado e está fechado para 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...