Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: YDOM en 31 Mayo 2014, 23:31 pm



Título: Pasar Array de una funcion a otra
Publicado por: YDOM en 31 Mayo 2014, 23:31 pm
que tal Foro, les pido el favor que me colaboren con este problema...

el problema me pida que llene un vector1[] en una funcion1() y luego en una funcion2() se muestren los valores del vector[1]...

les dejo el codigo de lo que he trabajado...


Código:
int AnhiadirArticulos()
{
    int art, tran, op, cod;
    int cantrecibida, cantvendida;

    system("cls");

    cout << endl << endl;
    cout<<"CON CUANTOS ARTICULOS INICIA EL ALMACEN:  ";
    cin>>art;

    int codigo[art];
    int cantidad[art];

    for ( int i=1; i<=art; i++ )
    {
        system("cls");

        cout << endl << endl;
        cout << "INGRESE EL ARTICULO " << i << endl;
        cout << "CODIGO    ";
        cin >> codigo[i];
        cout << "CANTIDAD  ";
        cin >> cantidad[i];
    }

    VerArticulos( codigo[art], cantidad[art] );
    menu();

    return 0;
}

el contenido de este vector tengo que pasarlo a este otro...

Código:
int VerArticulos( int codigo, int cantidad )
{
    int art;
    int codigo[art], articulo[art];

    system("cls");

    cout << endl << endl;
    cout << "CODIGO\t\tARTICULO" << endl << endl;

    for ( int i=1; i<=art; i++ )
    {
        cout << codigo[i] << "\t\t" << articulo[i];
    }

    cout << "PRESIONE UNA TECLA PARA IR AL MENU";
    cin.get();
    cin.get();

    menu();

    return 0;
}


y esto es parte de la cabecera del programa
Código:
...

int AnhiadirArticulos();
int Transacciones();
int VerArticulos( int codigo[], int cantidad[] );

int menu()
{
    int opcion, codigo, cantidad;
    .....
    cin >> opcion;

    switch ( opcion )
    {
    case 1:
        AnhiadirArticulos();
        break;
    case 2:
        VerArticulos( int codigo, int cantidad );
        break;
    case 3:
        Transacciones();
        break;
    case 4:
        return 0;
        break;
    default:
        cout << "OPCION INVALIDA, INTENTE DE NUEVO";
        menu();
    }

    return 0;
}




Título: Re: Pasar Array de una funcion a otra
Publicado por: ivancea96 en 1 Junio 2014, 00:15 am
Código
  1. int VerArticulos( int codigo, int cantidad )
  2.  
  3. int VerArticulos( int codigo[], int cantidad[] );

Tienes esas 2 declaraciones en diferentes partes. Usa la segunda.


EDITO:

Código
  1. void func(int a[]){
  2. }
  3.  
  4. int main(){
  5.    int var[10];
  6.    func(var);
  7. }
  8.  

Eso es un ejemplo. Espero que te sirva :o


Título: Re: Pasar Array de una funcion a otra
Publicado por: YDOM en 1 Junio 2014, 01:15 am
pues me ha quedado asi...

Código
  1. /// variables globales
  2.  
  3. int AnhiadirArticulos();
  4. int Transacciones();
  5. int VerArticulos( int codigo[], int cantidad[] );
  6.  


Citar

Código
  1. /// funcion que llama los articulos
  2.    case 2:
  3.        VerArticulos( codigo[art], cantidad[art] );
  4.        break;
  5.  
  aqui me lanza estos errores

  /// C:\Users\...s\Downloads\13 funciones.cpp||In function 'int menu()':|
  /// C:\Users\...\Downloads\13 funciones.cpp|30|error: invalid types 'int[int]' for array subscript|
  /// C:\Users\...\Downloads\13 funciones.cpp|30|error: invalid types 'int[int]' for array subscript|
  /// ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


Citar
y estas son las funciones que hacen el trabajo
Código
  1. int AnhiadirArticulos()
  2. {
  3.    int art, tran, op, cod;
  4.    int cantrecibida, cantvendida;
  5.  
  6.    cout<<"CON CUANTOS ARTICULOS INICIA EL ALMACEN:  ";
  7.    cin>>art;
  8.  
  9.    int codigo[art];
  10.    int cantidad[art];
  11.  
  12.    for ( int i=1; i<=art; i++ )
  13.    {
  14.        system("cls");
  15.  
  16.        cout << endl << endl;
  17.        cout << "INGRESE EL ARTICULO " << i << endl;
  18.        cout << "CODIGO    ";
  19.        cin >> codigo[i];
  20.        cout << "CANTIDAD  ";
  21.        cin >> cantidad[i];
  22.    }
  23.  
  24.    VerArticulos( codigo, cantidad );
  25. }
  26.  
  27. int VerArticulos( int codigo[], int cantidad[] )
  28. {
  29.    int art;
  30.  
  31.   for ( int i=1; i<=art; i++ )
  32.    {
  33.        cout << codigo[i] << "\t\t" << cantidad[i];
  34.    }
  35. }
  36.  
  37.  


Título: Re: Pasar Array de una funcion a otra
Publicado por: MessageBoxA en 1 Junio 2014, 01:31 am
tienes que inicializar esta variable

Código
  1. int art;


Título: Re: Pasar Array de una funcion a otra
Publicado por: kaiserr en 1 Junio 2014, 01:40 am
pues me ha quedado asi...

Código
  1.   for ( int i=1; i<=art; i++ )
  2.   {
  3.       cout << codigo[i] << "\t\t" << cantidad[i];
  4.   }
  5. }
  6.  
  7.  
  8.  


mmmm los arrays empiezan en el 0.
y como dicen arriba mio, te falta declarar algunas variables.


Título: Re: Pasar Array de una funcion a otra
Publicado por: YDOM en 1 Junio 2014, 02:24 am

tienes que inicializar esta variable

Código
  1. int art;

aqui esta y el error continua, no si es que estoy declarando en el sitio incorrecto la variable, pero hay esta...

Código
  1. using namespace std;
  2.  
  3. [.....]
  4.  
  5. int AnhiadirArticulos();
  6. int Transacciones();
  7. int VerArticulos( int codigo[], int cantidad[], int art );
  8.  
  9. int menu()
  10. {
  11.    int opcion, codigo, cantidad, art;
  12.  
  13.     [.....]
  14.  
  15.    case 2:
  16.        VerArticulos( codigo[art], cantidad[art], art );
  17.        break;
  18.    case 3:
  19.        Transacciones();
  20.        break;
  21.    case 4:
  22.        return 0;
  23.        break;
  24.    default:
  25.        cout << "OPCION INVALIDA, INTENTE DE NUEVO";
  26.        menu();
  27.    }
  28.  
  29.    return 0;
  30. }
  31.  
  32. int AnhiadirArticulos()
  33. {
  34.    int art, tran, op, cod;
  35.    int cantrecibida, cantvendida;
  36.  
  37.    system("cls");
  38.  
  39.    cout << endl << endl;
  40.    cout<<"CON CUANTOS ARTICULOS INICIA EL ALMACEN:  ";
  41.    cin>>art;
  42.  
  43.    int codigo[art];
  44.    int cantidad[art];
  45.  
  46.    for ( int i=0; i<=art; i++ )
  47.    {
  48.        system("cls");
  49.  
  50.        cout << endl << endl;
  51.        cout << "INGRESE EL ARTICULO " << i << endl;
  52.        cout << "CODIGO    ";
  53.        cin >> codigo[i];
  54.        cout << "CANTIDAD  ";
  55.        cin >> cantidad[i];
  56.    }
  57.  
  58.    VerArticulos( codigo, cantidad, art );
  59.  
  60.    menu();
  61.  
  62.    return art;
  63. }
  64.  
  65. int VerArticulos( int codigo[], int cantidad[], int art )
  66. {
  67.    int art;
  68.  
  69.       [.....]
  70.  
  71.    for ( int i=0; i<=art; i++ )
  72.    {
  73.        cout << codigo[i] << "\t\t" << cantidad[i];
  74.    }
  75.  
  76.        [.....]
  77.  
  78.    menu();
  79.  
  80.    return art;
  81. }
  82.  
  83.     [.....]
  84. /// Erro que manda el programa...
  85. /// C:\Users\Foto Artes\Downloads\13 funciones.cpp||In function 'int menu()':|
  86. /// C:\Users\Foto Artes\Downloads\13 funciones.cpp|30|error: invalid types 'int[int]' for array subscript|
  87. /// C:\Users\Foto Artes\Downloads\13 funciones.cpp|30|error: invalid types 'int[int]' for array subscript|
  88. /// ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
  89.  
  90.  
  91.  


Título: Re: Pasar Array de una funcion a otra
Publicado por: MessageBoxA en 1 Junio 2014, 06:03 am
Código
  1. int menu()
  2. {
  3.    int opcion, codigo, cantidad, art;   //estas diciendo que "codigo" y "cantidad" son variables enteras!!!
  4.  
  5.     [.....]
  6.  
  7.    case 2:
  8.        VerArticulos( codigo[art], cantidad[art], art ); // y aqui estas diciendo que son vectores.
  9.        break;
  10.    case 3:
  11.        Transacciones();
  12.        break;
  13.    case 4:
  14.        return 0;
  15.        break;
  16.    default:
  17.        cout << "OPCION INVALIDA, INTENTE DE NUEVO";
  18.        menu();
  19.    }
  20.  
  21.    return 0;
  22. }

conclusion: ¿o son vectores, o son variables enteras?


Título: Re: Pasar Array de una funcion a otra
Publicado por: YDOM en 1 Junio 2014, 22:10 pm
que tal chicos, miren le he hecho otras modificaciones al programa pero aun me sigue arrojando problemas, debo decirles que es la primera vez que hago esto de pasar arrays entre funciones.  :-\ 


Código
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. int AnhiadirArticulos();
  8. int Transacciones( int );
  9. int VerArticulos( const int art, int codigo[], int cantidad[] );
  10.  
  11. int menu()
  12. {
  13.    int opcion, art, codigo[0], cantidad[0];
  14.    system("cls");
  15.    cout << endl << endl;
  16.    cout << "MARQUE << 1 >> PARA VER NUESTROS ARTICULOS" << endl;
  17.    cout << "MARQUE << 2 >> PARA HACER   TRANSACCIONES" <<  endl;
  18.    cout << "MARQUE << 3 >> PARA  SALIR   DEL  PROGRAMA" << endl;
  19.    cout << "MARQUE UNA OPCION PARA CONTINUAR        ";
  20.    cin >> opcion;
  21.  
  22.    system("cls");
  23.  
  24.    switch ( opcion )
  25.    {
  26.    case 1:
  27.        VerArticulos( art, codigo, &cantidad[0] );
  28.        break;
  29.    case 2:
  30.        Transacciones( art );
  31.        break;
  32.    case 3:
  33.        return 0;
  34.        break;
  35.    default:
  36.        cout << "OPCION INVALIDA, INTENTE DE NUEVO";
  37.        menu();
  38.    }
  39.  
  40.    return 0;
  41. }
  42.  
  43. int AnhiadirArticulos()
  44. {
  45.    int art, tran, op, cod;
  46.    art = tran = op = cod = 0;
  47.  
  48.    system("cls");
  49.  
  50.    cout << endl << endl;
  51.    cout<<"CON CUANTOS ARTICULOS INICIA EL ALMACEN:  ";
  52.    cin>>art;
  53.  
  54.    int codigo[art];
  55.    int cantidad[art];
  56.  
  57.    for ( int i=0; i<art; i++ )
  58.    {
  59.        system("cls");
  60.  
  61.        cout << endl << endl;
  62.        cout << "INGRESE EL ARTICULO " << i+1 << endl;
  63.        cout << "CODIGO    ";
  64.        cin >> codigo[i];
  65.        cout << "CANTIDAD  ";
  66.        cin >> cantidad[i];
  67.    }
  68.  
  69.    VerArticulos( art, codigo, &cantidad[0] );
  70.    /* aqui cuando llama a la funcion VerArticulos() me muestra la lista de los articulos sin problemas,
  71.         pero cuando me sale el menu principal y le digo que me muestre la lista de articulos "funcion de mas abajo"
  72.         me imprime una secuencia de numeros sin sentido alguno y al final me arroja unos ceros "0" y se cierra el programa...*/
  73.  
  74.    return 0;
  75. }
  76.  
  77. int VerArticulos( int art, int codigo[], int cantidad[] )
  78. {
  79.    system("cls");
  80.  
  81.    cout << endl << endl;
  82.    cout << "CODIGO\t\tCANTIDAD" << endl << endl;
  83.  
  84.    for ( int i=0; i<art; i++ )
  85.    {
  86.        cout << codigo[i] << "\t\t" << cantidad[i] << endl;
  87.    }
  88.  
  89.    cout << endl << endl;
  90.    cout << "PRESIONE UNA TECLA PARA IR AL MENU";
  91.    cin.get();
  92.    cin.get();
  93.  
  94.    menu();
  95.  
  96.    return 0;
  97. }
  98.  
  99. int Transacciones( int art )
  100. {
  101.    int tran, op, cod;
  102.    int cantrecibida, cantvendida;
  103.    int codigo[0], cantidad[0];
  104.  
  105.    cout << endl;
  106.    cout<<"TRANSSACCIONES POR DIA  ";
  107.    cin>>tran;
  108.  
  109.    for( int l=0; l<tran; l++)
  110.    {
  111.        system("cls");
  112.  
  113.        cout<<" MARQUE << 1 >> SI ES PROVEERDOR"<<endl;
  114.        cout<<" MARQUE << 2 >> SI ES UN CLIENTE"<<endl;
  115.        cout<<" MARQUE UNA OPCION PARA        "<<endl;
  116.        cin>>op;
  117.  
  118.        if( op == 1 )
  119.        {
  120.            cout<<"INGRESE CODIGO DEL ARTICULO    "<<endl;
  121.            cin>>cod;
  122.  
  123.            for ( int j=0; j<art; j++ )
  124.            {
  125.                if ( cod == codigo[j] )
  126.                /* en esta parte del codigo me arroja siempre un error diciendome que el articulo no existe
  127.                     osea toma el "else" de este "if" lo mismo pasa con la condicional de mas abajo*/
  128.                {
  129.                    cout << "CUANTOS ARTICULOS INGRESARAN    ";
  130.                    cin >> cantrecibida;
  131.                    cantidad[j] = cantidad[j] + cantrecibida;
  132.                    cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
  133.                    cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
  134.                }
  135.                else
  136.                {
  137.                    cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
  138.                    cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
  139.                    cin.get();
  140.                    cin.get();
  141.                    system("cls");
  142.                    menu();
  143.                }
  144.  
  145.            }
  146.        }
  147.        else if ( op == 2 )
  148.        {
  149.            cout<<"INGRESE CODIGO DEL ARTICULO "<<endl;
  150.            cin>>cod;
  151.  
  152.            for ( int j=0; j<art; j++ )
  153.            {
  154.                if ( cod == codigo[j] )
  155.                {
  156.                    cout << "ARTICULOS VENDIDOS     ";
  157.                    cin >> cantvendida;
  158.                    cantidad[j] = cantidad[j] - cantvendida;
  159.                    cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
  160.                    cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
  161.                }
  162.                else
  163.                {
  164.                    cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
  165.                    cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
  166.                    cin.get();
  167.                    cin.get();
  168.                    system("cls");
  169.                    menu();
  170.                }
  171.            }
  172.        }
  173.        else
  174.        {
  175.            cout << "DIGITO UN DATO INVALIDO, POR FAVOR" << endl;
  176.            cout << "PRESIONE UNA TECLA PARA CONTINUAR ";
  177.            cin.get();
  178.            cin.get();
  179.            int main();
  180.        }
  181.    }
  182.  
  183.    return art;
  184. }
  185.  
  186. int main()
  187. {
  188.    AnhiadirArticulos();
  189.    menu();
  190.  
  191.    return 0;
  192. }
  193.  

Código
  1. ||=== Build: Debug in 13 (compiler: GNU GCC Compiler) ===|
  2. E:\C++\13\main.cpp||In function 'int menu()':|
  3. E:\C++\13\main.cpp|27|warning: 'art' may be used uninitialized in this function [-Wmaybe-uninitialized]|
  4. ||=== Build finished: 0 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
  5.  


Título: Re: Pasar Array de una funcion a otra
Publicado por: MessageBoxA en 2 Junio 2014, 01:14 am
sucede q hay valores que no pasas por referencia

fijate de las modifcaciones que le hice (solo para que funcionara la funcion de mostrar el inventario), para la funcion de transacciones te tocara hacer lo mismo

Código
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6. int  art=0, *codigo, *cantidad;
  7. int menu(int art, int &codigo, int &cantidad);
  8. int AnhiadirArticulos();
  9. int Transacciones(int art);
  10. int VerArticulos(int art, int codigo[], int cantidad[] );
  11.  
  12. int menu(int art, int &codigo, int &cantidad)
  13. {
  14.    int opcion;
  15.    system("cls");
  16.    cout << endl << endl;
  17.    cout << "MARQUE << 1 >> PARA VER NUESTROS ARTICULOS" << endl;
  18.    cout << "MARQUE << 2 >> PARA HACER   TRANSACCIONES" <<  endl;
  19.    cout << "MARQUE << 3 >> PARA  SALIR   DEL  PROGRAMA" << endl;
  20.    cout << "MARQUE UNA OPCION PARA CONTINUAR        ";
  21.    cin >> opcion;
  22.    system("cls");
  23.  
  24.    switch ( opcion )
  25.    {
  26.    case 1:
  27.        VerArticulos( art, &codigo, &cantidad);
  28.        break;
  29.    case 2:
  30.        Transacciones( art );
  31.        break;
  32.    case 3:
  33.        return 0;
  34.        break;
  35.    default:
  36.        cout << "OPCION INVALIDA, INTENTE DE NUEVO";
  37.        //menu(art, &codigo, &cantidad);
  38.    }
  39.  
  40.    return 0;
  41. }
  42.  
  43. int AnhiadirArticulos()
  44. {
  45.    int tran=0, op=0, cod=0;
  46.  
  47.    system("cls");
  48.  
  49.    cout << endl << endl;
  50.    cout<<"CON CUANTOS ARTICULOS INICIA EL ALMACEN:  ";
  51.    cin>>art;
  52.  
  53.    int codigo[art];
  54.    int cantidad[art];
  55.  
  56.    for ( int i=0; i<art; i++ )
  57.    {
  58.        system("cls");
  59.  
  60.        cout << endl << endl;
  61.        cout << "INGRESE EL ARTICULO " << i+1 << endl;
  62.        cout << "CODIGO    ";
  63.        cin >> codigo[i];
  64.        cout << "CANTIDAD  ";
  65.        cin >> cantidad[i];
  66.    }
  67.  
  68.    VerArticulos( art, codigo, cantidad);
  69.    /* aqui cuando llama a la funcion VerArticulos() me muestra la lista de los articulos sin problemas,
  70.         pero cuando me sale el menu principal y le digo que me muestre la lista de articulos "funcion de mas abajo"
  71.         me imprime una secuencia de numeros sin sentido alguno y al final me arroja unos ceros "0" y se cierra el programa...*/
  72.  
  73.    return 0;
  74. }
  75.  
  76. int VerArticulos(int art, int codigo[], int cantidad[])
  77. {
  78.    system("cls");
  79.  
  80.    cout << endl << endl;
  81.    cout << "CODIGO\t\tCANTIDAD" << endl << endl;
  82.  
  83.    for ( int i=0; i<art; i++ )
  84.    {
  85.        cout << codigo[i] << "\t\t" << cantidad[i] << endl;
  86.    }
  87.  
  88.    cout << endl << endl;
  89.    cout << "PRESIONE UNA TECLA PARA IR AL MENU";
  90.    cin.get();
  91.    cin.get();
  92.  
  93.    menu(art,*codigo,*cantidad);
  94.  
  95.    return 0;
  96. }
  97.  
  98. int Transacciones(int art )
  99. {
  100.    int tran, op, cod;
  101.    int cantrecibida, cantvendida;
  102.    int codigo[0], cantidad[0];
  103.  
  104.    cout << endl;
  105.    cout<<"TRANSSACCIONES POR DIA  ";
  106.    cin>>tran;
  107.  
  108.    for( int l=0; l<tran; l++)
  109.    {
  110.        system("cls");
  111.  
  112.        cout<<" MARQUE << 1 >> SI ES PROVEERDOR"<<endl;
  113.        cout<<" MARQUE << 2 >> SI ES UN CLIENTE"<<endl;
  114.        cout<<" MARQUE UNA OPCION PARA        "<<endl;
  115.        cin>>op;
  116.  
  117.        if( op == 1 )
  118.        {
  119.            cout<<"INGRESE CODIGO DEL ARTICULO    "<<endl;
  120.            cin>>cod;
  121.  
  122.            for ( int j=0; j<art; j++ )
  123.            {
  124.                if ( cod == codigo[j] )
  125.                /* en esta parte del codigo me arroja siempre un error diciendome que el articulo no existe
  126.                     osea toma el "else" de este "if" lo mismo pasa con la condicional de mas abajo*/
  127.                {
  128.                    cout << "CUANTOS ARTICULOS INGRESARAN    ";
  129.                    cin >> cantrecibida;
  130.                    cantidad[j] = cantidad[j] + cantrecibida;
  131.                    cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
  132.                    cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
  133.                }
  134.                else
  135.                {
  136.                    cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
  137.                    cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
  138.                    cin.get();
  139.                    cin.get();
  140.                    system("cls");
  141.                    menu(art,*codigo,*cantidad);
  142.                }
  143.  
  144.            }
  145.        }
  146.        else if ( op == 2 )
  147.        {
  148.            cout<<"INGRESE CODIGO DEL ARTICULO "<<endl;
  149.            cin>>cod;
  150.  
  151.            for ( int j=0; j<art; j++ )
  152.            {
  153.                if ( cod == codigo[j] )
  154.                {
  155.                    cout << "ARTICULOS VENDIDOS     ";
  156.                    cin >> cantvendida;
  157.                    cantidad[j] = cantidad[j] - cantvendida;
  158.                    cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
  159.                    cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
  160.                }
  161.                else
  162.                {
  163.                    cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
  164.                    cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
  165.                    cin.get();
  166.                    cin.get();
  167.                    system("cls");
  168.                    menu(art,*codigo,*cantidad);
  169.                }
  170.            }
  171.        }
  172.        else
  173.        {
  174.            cout << "DIGITO UN DATO INVALIDO, POR FAVOR" << endl;
  175.            cout << "PRESIONE UNA TECLA PARA CONTINUAR ";
  176.            cin.get();
  177.            cin.get();
  178.            int main();
  179.        }
  180.    }
  181.  
  182.    return art;
  183. }
  184.  
  185. int main()
  186. {
  187.    AnhiadirArticulos();
  188.    menu(art,*codigo,*cantidad);
  189.  
  190.    return 0;
  191. }