RECURSION en su estado mas puro para invertir un vector!

Iniciado por Elias Flores, 12 Septiembre 2018, 23:27 PM

0 Miembros y 1 Visitante están viendo este tema.


Beginner Web

COLUMNAS es solo representativo
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

const int FILAS=3, COLUMNAS=4;
typedef int arreglo[FILAS][COLUMNAS];

int suma(arreglo a, int i, int j);

int main()
{
arreglo miarreglo={{1,1,1,1},{2,2,2,2},{3,3,3,3}};
cout << "SUMA: " << suma(miarreglo,FILAS-1,COLUMNAS-1) << endl;
system("pause");
}

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);
}
;-)
7w7

Elias Flores

#12
 :o :huh: Nica estoy cero........... no se si notaron los codigos que subo al foro en la funcion main nunca coloco una operacion matematica para nada solo lo utilizo para llamar a otras funciones y las funciones predeterminadas son siempre de tipo void solo la funcion que muestra el vector es de tipo "int"........ bueno aqui nace un problema ya que en matrices tengo que crear un metodo que carge la matriz y en dev c++ cuando envio una matriz simpre debo limitar el numero de columnas SIEMPRE y es hay donde me pierdo completamente OJO los ejercicios los hago asi para tener mas orden y para que sean mas entendibles!. Posdata aqui dejo mi logica de cargar una matriz en modo modular en otras palabras de manera muy simple y vaga si lo puedo llamar asi XD

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <string>
#include <ctime>
using namespace std;
int main(){
int numE;
int f,c;
cout<<"Ingrese el tamaño de la fila: ";cin>>f;
cout<<"Ingrese el tamaño de la columna: ";cin>>c;
int matriz [f][c];
srand(time(0));
for (int i=0;i<f;i++){
for (int j=0;j<c;j++){
    numE=1+rand()% 9;
matriz[i][j]=numE;
}
}
for (int i=0;i<f;i++){
for (int j=0;j<c;j++){
    cout<<matriz[i][j]<<" ";
}cout<<endl;
}
getch();
return 0;
}


Ahora solo hay que llevarlo a metodo recursivo un metodo dentro del main que llame a un metodo externo de tipo void que carge la matriz y un metodo de tipo "int" que muestre la matriz este de tipo entero porque tiene que devolver un valor real no como el void que no devuelve nada soy nuevo en Dev c++ esto ya lo tengo en c++ builder usando sus librerias de StringGrid pero yo quiero hacerlo libre  :¬¬.......  :¬¬ :-\  ¿Alguien que quiera participar O_0?

Beginner Web

Código (cpp) [Seleccionar]
#include <iostream>
#include <ctime>

using namespace std;

const int FILAS=3, COLUMNAS=4;
typedef int arreglo[FILAS][COLUMNAS];

void cargar(arreglo &a, int i, int j);
void mostrar(arreglo a, int i, int j);
int suma(arreglo a, int i, int j);

int main()
{
arreglo miarreglo;
srand(time(0));
cargar(miarreglo,0,0);
mostrar(miarreglo,0,0);
cout << "SUMA: " << suma(miarreglo,FILAS-1,COLUMNAS-1) << endl;
system("pause");
}

void cargar(arreglo &a, int i, int j)
{
    a[i][j]=1+rand()% 10;
    if(i<FILAS){
    if(j<COLUMNAS){
    cargar(a,i,j+1);
}
else{
cargar(a,i+1,0);
}
}
}

void mostrar(arreglo a, int i, int j)
{
    if(i<FILAS){
    if(j<COLUMNAS){
    cout << a[i][j] << " ";
    mostrar(a,i,j+1);
}
else{
cout << endl;
mostrar(a,i+1,0);
}
}
}

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);
}

;-)
7w7