Autor
|
Tema: RECURSION en su estado mas puro para invertir un vector! (Leído 5,682 veces)
|
Elias Flores
Desconectado
Mensajes: 13
|
#include <iostream> #include <cstdlib> #include <conio.h> #include <string> #include <ctime> using namespace std; void cargar (int arreglo[],int num2,int n); void mostrar (int arreglo[],int num2,int n); void invertir (int arreglo[],int a,int b); void mostrarinversa (int arreglo[],int num2,int n); int main (){ int n; cout<<"ingrese la longitud del vector: ";cin>>n; int arreglo[n]; cargar (arreglo,0,n); cout<<endl<<endl; mostrar (arreglo,0,n); cout<<endl<<endl; invertir (arreglo,0,n); cout<<endl<<endl; mostrarinversa (arreglo,n-n+1,n); getch(); return 0; } void invertir(int arreglo[],int a ,int b){ int n=b-a+1; int aux; if (n>1) { invertir(arreglo,a+1,b-1); aux=arreglo[a]; arreglo[a]=arreglo[b ] ; arreglo[ b]=aux ; } } void mostrarinversa (int arreglo[],int num2,int n){ if (n>0){ mostrarinversa(arreglo,num2+1,n-1); cout<<arreglo[num2]<<" ";} } void cargar (int arreglo[],int num2,int n){//en el siguiente metodo le pasado el vector y el indice que comienza en cero = num2 if (n>0){ //num2 debe ir aumentando de 1 en 1 srand(time(0)); //el srand sirve para sincronizar el rand con el reloj del pc cargar(arreglo,num2+1,n-1); //llamamos a la misma funcion cargar pero menos el ultimo dato n-1 arreglo[num2]=1+rand()% 10;} } void mostrar (int arreglo[],int num2,int n){ if (n>0){ mostrar(arreglo,num2+1,n-1); cout<<arreglo[num2]<<" ";} }
hola necesito ayuda en esto tengo que llevarlo a una matriz pero todo tiene que ser recurisvo desde cargar la matriz hasta mostrar la matriz solo se puede usar "If" HELP aun son muy nuevo en esto de la recursion Mod: Es obligatorio el uso de etiquetas GeSHi para poner código.
|
|
« Última modificación: 16 Septiembre 2018, 02:57 am por #!drvy »
|
En línea
|
|
|
|
Mr.Moonlight
|
En la funcion invertir habia algunas asignaciones raras void invertir(int arreglo[],int a ,int b){ int n=b-a+1; int aux; if (n>1) { invertir(arreglo,a+1,b-1); aux=arreglo[a]; arreglo[a]=arreglo[b]; arreglo[b]=aux; } }
arreglo es un array , no puedes asignar un array entero a una posición del mismo de esta misma manera no puedes asignar un dato de una posición a todo el array.. no se si me explico
|
|
« Última modificación: 13 Septiembre 2018, 00:18 am por Mr.Moonlight »
|
En línea
|
|
|
|
Elias Flores
Desconectado
Mensajes: 13
|
estoy en un elemento dentro del vector y lo estoy intercambiando a=inicio b= fin luego del intercambio b=inico a=fin
|
|
|
En línea
|
|
|
|
Mr.Moonlight
|
eso es lo que hace el codigo que te puse ahi , ese si funciona ,el que tu pusiste no compilaba
|
|
« Última modificación: 13 Septiembre 2018, 00:43 am por Mr.Moonlight »
|
En línea
|
|
|
|
Elias Flores
Desconectado
Mensajes: 13
|
O_O gracias camarada seguro debi pegarlo mal recien me di cuenta gracias por el aporte
|
|
|
En línea
|
|
|
|
Mr.Moonlight
|
El problemas es que debeis utilizar las etiquetas para insertar codigo , puesto que sino, puede dar lugar a malentendidos como este.. fijandome más detenidamente en tu primer mensaje puedo ver que al no usar las etiquetas ha interpretado [ b ] como si lo estuvieras remarcando en negrita .. por tanto te pido que modifiques el primer mensaje y utilices dichas etiquetas por favor. A la hora de trasladar esto a una matriz..¿supongo que conoceras la forma de invertir una matriz, no? Una matriz inversa es completamente distinto a invertir un vector no se si me explico
|
|
« Última modificación: 13 Septiembre 2018, 18:15 pm por Mr.Moonlight »
|
En línea
|
|
|
|
Elias Flores
Desconectado
Mensajes: 13
|
pues en matriz recursiva estoy cero...... por eso pido ayuda al foro si alguien podria hacer algun ejemplo o modificar mi codigo para tener una matriz caracol recursiva, solo quiero saber el metodo para llenar una matriz recursiva de hay me guio en la logica para llenarla al estilo caracol! HELP FORO
|
|
|
En línea
|
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
int suma(arreglo a, int i, int j) { if(i==0 && j==0) return a[i][j]; else if(i>-1) if(j>=-1) return a[i][j]+suma(a,i,j-1); else return a[i][j]+suma(a,i-1,j+COLUMNAS-1); }
void mostrar(arreglo a, int n) { if(n>=0) cout << a[n] << " "; mostrar(a,n-1); }
void como_la_realidad(short vida) { if(vida<=1){ cout << "Entrando en el sueño"; } else{ como_la_realidad(vida-1); cout << " del sueño"; } }
Mod: No hacer triple post. Usa el botón "Modificar".
|
|
« Última modificación: 16 Septiembre 2018, 01:31 am por #!drvy »
|
En línea
|
7w7
|
|
|
Elias Flores
Desconectado
Mensajes: 13
|
int suma(arreglo a, int i, int j) { if(i==0 && j==0) return a[i][j]; else if(i>-1) if(j>=-1) return a[i][j]+suma(a,i,j-1); else return a[i][j]+suma(a,i-1,j+COLUMNAS-1); }
la variable "COLUMNAS" cuando lo declaras y cual es su valor ? O_O Mod: Obligatorio el uso de etiquetas GeSHi para códigos.
|
|
« Última modificación: 16 Septiembre 2018, 01:32 am por #!drvy »
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Pon todo el código dentro de las etiquetas que se generan cuándo le das al desplegable 'Código GeSHi'.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
invertir el orden de un vector
Programación C/C++
|
indict
|
2
|
3,507
|
22 Junio 2013, 17:34 pm
por leosansan
|
|
|
invertir un vector en C
Programación C/C++
|
windic
|
7
|
37,014
|
16 Septiembre 2018, 04:46 am
por Beginner Web
|
|
|
Invertir un vector
Programación C/C++
|
bryanrz96
|
1
|
2,695
|
3 Diciembre 2015, 04:56 am
por Zodiak98
|
|
|
Nostalgia en estado puro: Windows 95 en tu navegador web
Noticias
|
wolfbcn
|
1
|
1,421
|
31 Enero 2016, 17:03 pm
por crazykenny
|
|
|
invertir un vector
Programación C/C++
|
creiko
|
4
|
5,341
|
12 Abril 2016, 05:02 am
por Gunhack
|
|