Autor |
Mensaje |
WoS
Nivel 6
Edad: 32
Registrado: 15 Jun 2011
Mensajes: 217
Carrera: No especificada
|
|
Aebi escribió:
|
Buenisimo, yo no probe todo esto en la computadora, pero igualemente por lo que veo en la poca teoria que nos dieron se supone que si vos haces esto por medio de una funcion, cuando declaras V[] en el prototipo, pones entre corchetes la maxima dimension posible arbitrariamente, pero la que usas al llamarla a un programa la declaras en el mismo programa.
No se si entendio bien lo que quiero decir porque no se casi nada del tema y entonces me cuesta explicarlo. Espero que corrijan facil como el ultimo parcial jaja.
|
Sí, entiendo lo que querés decir... yo también estoy bastante en tarlipes con lo que van a tomar porque bueh... vos sabrás como fueron estas últimas 3 clases jaja, la verdad que nos re dejaron en banda.
Un ejemplo de lo que podrías hacer en ese caso es esto:
float funcion(int dimension, int vector[]);
Fijate que entre los corchetes no puse nada porque la dimension se la doy después según lo que ingrese el usuario. Aparentemente es válido poner eso en el prototipo (los corchetes vacíos).
Y adentro del main puse esto:
cout<<"Ingrese cantidad de elementos";
cin>>d;
int vec[d]; //Declaro el vector luego de que el usuario ingreso el largo, para que tenga el largo deseado.
Acá cuando declaro el vector adentro del main sí tengo que especificar la dimensión, por eso hago que el usuario la ingrese primero y después lo declaro. Igual me gustaría que alguien que tenga un poco más de idea me diga si está bien lo que estoy diciendo o no.
|
|
|
|
_________________ Last night Darth Vader came down from planet Vulcan and he told me that if I didn't take Loraine to the dance, that he'd melt my brain!
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
Lo que que vos necesitas hacer es lo siguiente
cout<<"ingresar nuero";
cin>>n;
V = new int[n];
Pero como dicen que no vieron punteros(aunque un vector definido antes es un puntero a memoria estatica) la forma que escribieron arriba de despues poner "int V[n]" es valida porque en c++ podes definir las variables donde se te cante.
|
|
|
|
_________________ ━━━━━┓ \\
┓┓┓┓┓┃
┓┓┓┓┓┃ ヽ○ノ
┓┓┓┓┓┃ /
┓┓┓┓┓┃ ノ)
┓┓┓┓┓┃
┓┓┓┓┓┃
▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
|
|
|
|
Huey 7
Nivel 6
Registrado: 03 Mar 2010
Mensajes: 267
Carrera: Electrónica
|
|
Qué curso tan raro...
WoS escribió:
|
[...] Y adentro del main puse esto:
cout<<"Ingrese cantidad de elementos";
cin>>d;
int vec[d]; //Declaro el vector luego de que el usuario ingreso el largo, para que tenga el largo deseado.
|
Eso válido en C, nomás, donde un array del estilo de vec se llama variable length array (VLA). O sea, un array cuyo tamaño es fijo pero se conoce en tiempo de ejecución (en ese ejemplo, cuando se lee d de cin).
C++ estándar no soporta VLAs, porque hace lo mismo con otra cosa (los std::vectors y demás cosas de su biblioteca estándar). Muchos compiladores de C++ igual aceptan código así como extensión no estándar, porque C lo acepta. Supongo que debe ser este caso.
Pero siendo que esto es 75.01, estaba por preguntar si en el curso mencionan algo de punteros. Porque si no, teóricamente tampoco pueden "saber" por qué el ejemplo de CSebas para "devolver un array" (que en realidad devuelve un puntero al primer elemento) funciona...
Sin usar punteros, VLAs, std::vectors, memoria dinámica (new), ni nada (), la solución "clásica" es declarar un array de tamaño fijo (conocido en tiempo de compilación) y suficientemente grande, pero después usar sólo la cantidad de elementos que se necesitan, almacenado en otra variable. Como dijo DiegoSLTS:
#define TMAX 100 //Tamano maximo que se puede llegar a necesitar
//No hace falta poner el tamano entre corchetes en el prototipo por razones que no se pueden explicar sin saber punteros
void funcion(int dimension, int vector[]){
//Hacer algo con el vector
}
int main(){
int vec[TMAX]; //vec tiene realmente 100 elementos, y se sabe en tiempo de compilación...
cout<<"Ingrese cantidad de elementos";
cin>>d;
if (d >= TMAX)
{
//Explotar
//...
return 1;
}
//... pero solo se usa vec[0] a vec[d-1], el resto se desperdicia.
funcion(d, vec);
//etc. etc. etc.
return 0;}
Eso sí es C++ estándar (feo).
|
|
|
|
_________________
|
|
|
|
|
Polito!
Nivel 7
Edad: 35
Registrado: 09 Feb 2010
Mensajes: 332
Carrera: Mecánica
|
|
Gente yo tengo varios ejercicios de matrices y vectores, manden mp que les paso por mail todo lo que les pueda servir!
|
|
|
|
_________________ Riquelme esta felí
|
|
|
|
|
WoS
Nivel 6
Edad: 32
Registrado: 15 Jun 2011
Mensajes: 217
Carrera: No especificada
|
|
Muchas gracias a todos por ayudar y por la buena onda! El parcial fue ayer, espero que me haya ido bien, pero es medio difícil saberlo a esta altura porque hay diferencias abismales en los criterios de corrección de cada profesor...
|
|
|
|
_________________ Last night Darth Vader came down from planet Vulcan and he told me that if I didn't take Loraine to the dance, that he'd melt my brain!
|
|
|
|
|
|
Ir a página Anterior 1, 2, 3, 4, 5, 6, 7, 8, 9
|
Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
|
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker365 Attacks blocked.
|