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...
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...
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
...
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;
}
int VerArticulos( int codigo, int cantidad )
int VerArticulos( int codigo[], int cantidad[] );
Tienes esas 2 declaraciones en diferentes partes. Usa la segunda.
EDITO:
void func(int a[]){
}
int main(){
int var[10];
func(var);
}
Eso es un ejemplo. Espero que te sirva :o
pues me ha quedado asi...
/// variables globales
int AnhiadirArticulos();
int Transacciones();
int VerArticulos( int codigo[], int cantidad[] );
Citar
/// funcion que llama los articulos
case 2:
VerArticulos( codigo[art], cantidad[art] );
break;
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
int AnhiadirArticulos()
{
int art, tran, op, cod;
int cantrecibida, cantvendida;
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, cantidad );
}
int VerArticulos( int codigo[], int cantidad[] )
{
int art;
for ( int i=1; i<=art; i++ )
{
cout << codigo[i] << "\t\t" << cantidad[i];
}
}
tienes que inicializar esta variable
int art;
Cita de: YDOM en 1 Junio 2014, 01:15 AM
pues me ha quedado asi...
for ( int i=1; i<=art; i++ )
{
cout << codigo[i] << "\t\t" << cantidad[i];
}
}
mmmm los arrays empiezan en el 0.
y como dicen arriba mio, te falta declarar algunas variables.
Cita de: MessageBoxA en 1 Junio 2014, 01:31 AM
tienes que inicializar esta variable
int art;
aqui esta y el error continua, no si es que estoy declarando en el sitio incorrecto la variable, pero hay esta...
using namespace std;
[.....]
int AnhiadirArticulos();
int Transacciones();
int VerArticulos( int codigo[], int cantidad[], int art );
int menu()
{
int opcion, codigo, cantidad, art;
[.....]
case 2:
VerArticulos( codigo[art], cantidad[art], art );
break;
case 3:
Transacciones();
break;
case 4:
return 0;
break;
default:
cout << "OPCION INVALIDA, INTENTE DE NUEVO";
menu();
}
return 0;
}
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=0; 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, cantidad, art );
menu();
return art;
}
int VerArticulos( int codigo[], int cantidad[], int art )
{
int art;
[.....]
for ( int i=0; i<=art; i++ )
{
cout << codigo[i] << "\t\t" << cantidad[i];
}
[.....]
menu();
return art;
}
[.....]
/// Erro que manda el programa...
/// C:\Users\Foto Artes\Downloads\13 funciones.cpp||In function 'int menu()':|
/// C:\Users\Foto Artes\Downloads\13 funciones.cpp|30|error: invalid types 'int[int]' for array subscript|
/// C:\Users\Foto Artes\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)) ===|
int menu()
{
int opcion, codigo, cantidad, art; //estas diciendo que "codigo" y "cantidad" son variables enteras!!!
[.....]
case 2:
VerArticulos( codigo[art], cantidad[art], art ); // y aqui estas diciendo que son vectores.
break;
case 3:
Transacciones();
break;
case 4:
return 0;
break;
default:
cout << "OPCION INVALIDA, INTENTE DE NUEVO";
menu();
}
return 0;
}
conclusion: ¿o son vectores, o son variables enteras?
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. :-\
#include <stdio.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int AnhiadirArticulos();
int Transacciones( int );
int VerArticulos( const int art, int codigo[], int cantidad[] );
int menu()
{
int opcion, art, codigo[0], cantidad[0];
system("cls");
cout << endl << endl;
cout << "MARQUE << 1 >> PARA VER NUESTROS ARTICULOS" << endl;
cout << "MARQUE << 2 >> PARA HACER TRANSACCIONES" << endl;
cout << "MARQUE << 3 >> PARA SALIR DEL PROGRAMA" << endl;
cout << "MARQUE UNA OPCION PARA CONTINUAR ";
cin >> opcion;
system("cls");
switch ( opcion )
{
case 1:
VerArticulos( art, codigo, &cantidad[0] );
break;
case 2:
Transacciones( art );
break;
case 3:
return 0;
break;
default:
cout << "OPCION INVALIDA, INTENTE DE NUEVO";
menu();
}
return 0;
}
int AnhiadirArticulos()
{
int art, tran, op, cod;
art = tran = op = cod = 0;
system("cls");
cout << endl << endl;
cout<<"CON CUANTOS ARTICULOS INICIA EL ALMACEN: ";
cin>>art;
int codigo[art];
int cantidad[art];
for ( int i=0; i<art; i++ )
{
system("cls");
cout << endl << endl;
cout << "INGRESE EL ARTICULO " << i+1 << endl;
cout << "CODIGO ";
cin >> codigo[i];
cout << "CANTIDAD ";
cin >> cantidad[i];
}
VerArticulos( art, codigo, &cantidad[0] );
/* aqui cuando llama a la funcion VerArticulos() me muestra la lista de los articulos sin problemas,
pero cuando me sale el menu principal y le digo que me muestre la lista de articulos "funcion de mas abajo"
me imprime una secuencia de numeros sin sentido alguno y al final me arroja unos ceros "0" y se cierra el programa...*/
return 0;
}
int VerArticulos( int art, int codigo[], int cantidad[] )
{
system("cls");
cout << endl << endl;
cout << "CODIGO\t\tCANTIDAD" << endl << endl;
for ( int i=0; i<art; i++ )
{
cout << codigo[i] << "\t\t" << cantidad[i] << endl;
}
cout << endl << endl;
cout << "PRESIONE UNA TECLA PARA IR AL MENU";
cin.get();
cin.get();
menu();
return 0;
}
int Transacciones( int art )
{
int tran, op, cod;
int cantrecibida, cantvendida;
int codigo[0], cantidad[0];
cout << endl;
cout<<"TRANSSACCIONES POR DIA ";
cin>>tran;
for( int l=0; l<tran; l++)
{
system("cls");
cout<<" MARQUE << 1 >> SI ES PROVEERDOR"<<endl;
cout<<" MARQUE << 2 >> SI ES UN CLIENTE"<<endl;
cout<<" MARQUE UNA OPCION PARA "<<endl;
cin>>op;
if( op == 1 )
{
cout<<"INGRESE CODIGO DEL ARTICULO "<<endl;
cin>>cod;
for ( int j=0; j<art; j++ )
{
if ( cod == codigo[j] )
/* en esta parte del codigo me arroja siempre un error diciendome que el articulo no existe
osea toma el "else" de este "if" lo mismo pasa con la condicional de mas abajo*/
{
cout << "CUANTOS ARTICULOS INGRESARAN ";
cin >> cantrecibida;
cantidad[j] = cantidad[j] + cantrecibida;
cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
}
else
{
cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
cin.get();
cin.get();
system("cls");
menu();
}
}
}
else if ( op == 2 )
{
cout<<"INGRESE CODIGO DEL ARTICULO "<<endl;
cin>>cod;
for ( int j=0; j<art; j++ )
{
if ( cod == codigo[j] )
{
cout << "ARTICULOS VENDIDOS ";
cin >> cantvendida;
cantidad[j] = cantidad[j] - cantvendida;
cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
}
else
{
cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
cin.get();
cin.get();
system("cls");
menu();
}
}
}
else
{
cout << "DIGITO UN DATO INVALIDO, POR FAVOR" << endl;
cout << "PRESIONE UNA TECLA PARA CONTINUAR ";
cin.get();
cin.get();
int main();
}
}
return art;
}
int main()
{
AnhiadirArticulos();
menu();
return 0;
}
||=== Build: Debug in 13 (compiler: GNU GCC Compiler) ===|
E:\C++\13\main.cpp||In function 'int menu()':|
E:\C++\13\main.cpp|27|warning: 'art' may be used uninitialized in this function [-Wmaybe-uninitialized]|
||=== Build finished: 0 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
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
#include <stdio.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int art=0, *codigo, *cantidad;
int menu(int art, int &codigo, int &cantidad);
int AnhiadirArticulos();
int Transacciones(int art);
int VerArticulos(int art, int codigo[], int cantidad[] );
int menu(int art, int &codigo, int &cantidad)
{
int opcion;
system("cls");
cout << endl << endl;
cout << "MARQUE << 1 >> PARA VER NUESTROS ARTICULOS" << endl;
cout << "MARQUE << 2 >> PARA HACER TRANSACCIONES" << endl;
cout << "MARQUE << 3 >> PARA SALIR DEL PROGRAMA" << endl;
cout << "MARQUE UNA OPCION PARA CONTINUAR ";
cin >> opcion;
system("cls");
switch ( opcion )
{
case 1:
VerArticulos( art, &codigo, &cantidad);
break;
case 2:
Transacciones( art );
break;
case 3:
return 0;
break;
default:
cout << "OPCION INVALIDA, INTENTE DE NUEVO";
//menu(art, &codigo, &cantidad);
}
return 0;
}
int AnhiadirArticulos()
{
int tran=0, op=0, cod=0;
system("cls");
cout << endl << endl;
cout<<"CON CUANTOS ARTICULOS INICIA EL ALMACEN: ";
cin>>art;
int codigo[art];
int cantidad[art];
for ( int i=0; i<art; i++ )
{
system("cls");
cout << endl << endl;
cout << "INGRESE EL ARTICULO " << i+1 << endl;
cout << "CODIGO ";
cin >> codigo[i];
cout << "CANTIDAD ";
cin >> cantidad[i];
}
VerArticulos( art, codigo, cantidad);
/* aqui cuando llama a la funcion VerArticulos() me muestra la lista de los articulos sin problemas,
pero cuando me sale el menu principal y le digo que me muestre la lista de articulos "funcion de mas abajo"
me imprime una secuencia de numeros sin sentido alguno y al final me arroja unos ceros "0" y se cierra el programa...*/
return 0;
}
int VerArticulos(int art, int codigo[], int cantidad[])
{
system("cls");
cout << endl << endl;
cout << "CODIGO\t\tCANTIDAD" << endl << endl;
for ( int i=0; i<art; i++ )
{
cout << codigo[i] << "\t\t" << cantidad[i] << endl;
}
cout << endl << endl;
cout << "PRESIONE UNA TECLA PARA IR AL MENU";
cin.get();
cin.get();
menu(art,*codigo,*cantidad);
return 0;
}
int Transacciones(int art )
{
int tran, op, cod;
int cantrecibida, cantvendida;
int codigo[0], cantidad[0];
cout << endl;
cout<<"TRANSSACCIONES POR DIA ";
cin>>tran;
for( int l=0; l<tran; l++)
{
system("cls");
cout<<" MARQUE << 1 >> SI ES PROVEERDOR"<<endl;
cout<<" MARQUE << 2 >> SI ES UN CLIENTE"<<endl;
cout<<" MARQUE UNA OPCION PARA "<<endl;
cin>>op;
if( op == 1 )
{
cout<<"INGRESE CODIGO DEL ARTICULO "<<endl;
cin>>cod;
for ( int j=0; j<art; j++ )
{
if ( cod == codigo[j] )
/* en esta parte del codigo me arroja siempre un error diciendome que el articulo no existe
osea toma el "else" de este "if" lo mismo pasa con la condicional de mas abajo*/
{
cout << "CUANTOS ARTICULOS INGRESARAN ";
cin >> cantrecibida;
cantidad[j] = cantidad[j] + cantrecibida;
cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
}
else
{
cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
cin.get();
cin.get();
system("cls");
menu(art,*codigo,*cantidad);
}
}
}
else if ( op == 2 )
{
cout<<"INGRESE CODIGO DEL ARTICULO "<<endl;
cin>>cod;
for ( int j=0; j<art; j++ )
{
if ( cod == codigo[j] )
{
cout << "ARTICULOS VENDIDOS ";
cin >> cantvendida;
cantidad[j] = cantidad[j] - cantvendida;
cout << "MUCHAS GRACIAS, TRANSACCION EXITOSA";
cout << "EXISTEN " << cantidad[j] << " UNIDADES DEL ARTICULO" << endl << endl;
}
else
{
cout << "EL CODIGO INGRESADO NO ES CORRECTO" << endl;
cout << "PRESIONE UNA TECLA PARA IR AL MENU ";
cin.get();
cin.get();
system("cls");
menu(art,*codigo,*cantidad);
}
}
}
else
{
cout << "DIGITO UN DATO INVALIDO, POR FAVOR" << endl;
cout << "PRESIONE UNA TECLA PARA CONTINUAR ";
cin.get();
cin.get();
int main();
}
}
return art;
}
int main()
{
AnhiadirArticulos();
menu(art,*codigo,*cantidad);
return 0;
}