Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
ignaciogb
Nivel 3



Registrado: 15 Oct 2009
Mensajes: 32
Ubicación: Capital Federal
Carrera: Industrial
argentina.gif
MensajePublicado: Lun Jun 13, 2011 12:07 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

ahi me tira un warning pero anda.

mañana lo seguire viendo por hoy ya fue mucha programacion :S

muchas gracias Amadeo


 Género:Masculino  OfflineGalería Personal de ignaciogbVer perfil de usuarioEnviar mensaje privado
Sebastian Santisi
Administrador Técnico


Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451


argentina.gif
MensajePublicado: Lun Jun 13, 2011 12:09 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Hace muuuuchos años que no programo C++... me llamaría la atención que el ISO de C++ fuera más restrictivo que el ANSI-C99 con el tema de los vectores con índice dinámico; pero tampoco me parecería muy descabellado.

Por el tema de new, ¿estás seguro de que chequea algo?; probablemente espere recibir un unsigned y castee a lo pavote con un overflow precioso si le ponés un negativo (como le pasa a malloc() en C)...


Al respecto de la resolución del ejercicio: Sí, declaren un array con una X cantidad fija; chequeen que la cantidad de elementos deseados no sea mayor a X; y trabajen sobre los elementos que el usuario quería y no sobre los que pidieron.


BTW, ¿C++, recursividad y ordenamiento en Computación?... Cabrera se volvió loco Smile.

_________________
Image[tex] ${. \ \ \ \ \ \ \ \ \ .}$ [/tex][tex] ${\Large Usá \LaTeX, no seas foro...}$ [/tex]

Aries Género:Masculino Perro OfflineGalería Personal de Sebastian SantisiVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Fabricio
Nivel 8


Edad: 36
Registrado: 20 Nov 2008
Mensajes: 851
Ubicación: Villa del Parque, barrio turro
Carrera: Civil
CARRERA.civil.3.jpg
MensajePublicado: Lun Jun 13, 2011 1:35 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Recursividad igual dijieron que si lo toman va a ser algo muy basico, la ultima clase dieron archivos y clases, nadie entendio una goma y creo que decidieron no tomarlo en el parcial, lo bueno: aparentemente se olvidaron de los tps porque ya es el 2do parcial el jueves y jamas mencionaron la palabra "TP" xD

_________________
[tex]100 \% \ \  {ingeniero}[/tex]

Aries Género:Masculino Dragón OfflineGalería Personal de FabricioVer perfil de usuarioEnviar mensaje privado
koreano
Nivel 9



Registrado: 15 Jul 2010
Mensajes: 1796

Carrera: No especificada
blank.gif
MensajePublicado: Lun Jun 13, 2011 7:45 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

C++ no tiene VLAs, C99 sí. Si querés un vector de dimensión variable y no querés ocuparte de la memoria usá std::vector.

Código:
#include <iostream>
#include <vector>

int main() {
 int n;
 std::vector<int> nums;
 std::cout << "Ingrese la cantidad de elementos: " <<std>> n;
 nums.resize(n);
 // manipular nums[0]...nums[n-1], etc
 // o podés usar push_back para ir agrandando a medida que insertás
 ..
}


Para mas información googlea "std vector c++". Si no, usá new y delete pero es un desperdicio ponerse a manejar la memoria para estas nimiedades Smile



ps: VLA = http://en.wikipedia.org/wiki/Variable_Length_Array


   OcultoGalería Personal de koreanoVer perfil de usuarioEnviar mensaje privado
ignaciogb
Nivel 3



Registrado: 15 Oct 2009
Mensajes: 32
Ubicación: Capital Federal
Carrera: Industrial
argentina.gif
MensajePublicado: Lun Jun 13, 2011 11:05 pm  Asunto:  otra duda de ejercicio Responder citandoFin de la PáginaVolver arriba

intente hacer este ejercicio pero hay algo que me esta faltando saber, no puedo lograr que funcione la funcion me da errores o me hace cualquiera.
Dice asi: diseñar una funcion que ordene el vector V de N elementos eliminando, de paso, todos aquellos que se repitan.

La idea de como ordenarlos la se, para ir eliminando se me ocurre que vaya comparando y si el numero es distinto al siguiente (eso una vez ordenado el vector) lo mande a un nuevo vector que es el que va a quedar ordenado y sin repeticiones. Ahora, la funcion... como carajo la expreso... como hago para poner que ingrese un vector y salga otro..
Las funciones que hicimos con vectores en clase fueron que devolviera un numero no un vector:S

Agradecere mucho si alguien me sabe responder Smile


 Género:Masculino  OfflineGalería Personal de ignaciogbVer perfil de usuarioEnviar mensaje privado
koreano
Nivel 9



Registrado: 15 Jul 2010
Mensajes: 1796

Carrera: No especificada
blank.gif
MensajePublicado: Lun Jun 13, 2011 11:34 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Si es C++, simplemente ponés std::vector como input y output y listo. Por ejemplo:

Código:
std::vector ordena(std::vector v) {
 // hacer algo con v;
 return v;
}


Si estás hablando de "vectores" aka arrays manejados como punteros entonces tenés que devolver el puntero al primer elemento y el tamaño. Tenés 2 opciones... o te creás un tipo nuevo que tenga un puntero y el tamaño, por ejemplo struct VectInt { int* head; size_t size; }; o usás funciones que trabajen con los argumentos por referencia y no devuelvan nada, algo como:

Código:
void ordenar(int* vector, size_t size) {
 // hacer algo con *vector y size
 // por ejemplo
 // for(int i = 0;i < size; ++i) std::cout << vector[i];
}


Es decir, en vez de entra cuchillo salen tripas como dijiste, es entra cuchillo, sale cuchillo con tripas.

Te sugiero que le hagas la gran TKB y si es C++ que uses la std lib lo mas posible para evitar "ensuciarse las manos" con punteros y memoria dinámica al pedo Smile


   OcultoGalería Personal de koreanoVer perfil de usuarioEnviar mensaje privado
ignaciogb
Nivel 3



Registrado: 15 Oct 2009
Mensajes: 32
Ubicación: Capital Federal
Carrera: Industrial
argentina.gif
MensajePublicado: Lun Jun 13, 2011 11:44 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

uhhh no entendi casi nada.. :S. es C++ pero no vimos vectores: lo que seria asignar un valor a un vector y no mucho mas.. no tengo ni idea de lo que es " std::vector como input y output " y esto " struct VectInt { int* head; size_t size; } "menos que menos..


 Género:Masculino  OfflineGalería Personal de ignaciogbVer perfil de usuarioEnviar mensaje privado
Sebastian Santisi
Administrador Técnico


Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451


argentina.gif
MensajePublicado: Lun Jun 13, 2011 11:46 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Pobrecitos, pobrecitos.

En el segundo ejemplo de koreano yo pondría algo así:

void pisarelementos(int vector[], int tamanio) {
int i;
for(i = 0; i < tamanio; i++) vector[i] = 0;
}

O sea, no hace falta la notación de punteros y es importante que lo que hagan adentro de la función con el vector va a modificar al vector con el que la llamaron.

También funciona esto:

void funcion(int vector[N]) { ... }

Si N es fijo, pueden usar eso.

Si no quieren ordenar sobre el mismo vector; la función puede recibir dos vectores, uno de origen y otro de destino... y como valor de retorno puede entregar la longitud del vector de retorno, que si se eliminaron duplicados puede ser menor a la original.


De todos modos: Qué ganas de complicarlos mal, eh.

_________________
Image[tex] ${. \ \ \ \ \ \ \ \ \ .}$ [/tex][tex] ${\Large Usá \LaTeX, no seas foro...}$ [/tex]

Aries Género:Masculino Perro OfflineGalería Personal de Sebastian SantisiVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
ignaciogb
Nivel 3



Registrado: 15 Oct 2009
Mensajes: 32
Ubicación: Capital Federal
Carrera: Industrial
argentina.gif
MensajePublicado: Lun Jun 13, 2011 11:48 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

en algun lado de internet lei algo de usar funciones con vectores y matrices que no devuelvan nada.. en este caso, se podria usar una funcion que agarre dos vectores del programa, ordene el primero y mande al segundo los valores sin repetir y no duvuelva nada, sino que cuando el programa siga, lo haga con los valores ya modificados por la funcion.. nose si se entiende..
Tal vez con una funcion void, puede ser?


 Género:Masculino  OfflineGalería Personal de ignaciogbVer perfil de usuarioEnviar mensaje privado
ignaciogb
Nivel 3



Registrado: 15 Oct 2009
Mensajes: 32
Ubicación: Capital Federal
Carrera: Industrial
argentina.gif
MensajePublicado: Lun Jun 13, 2011 11:51 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

ahhh mientras escribia yo respondiste vos sebastian, ahora entiendo mejor..
muchas gracias muchachos!! soy de madera con estas cosas


 Género:Masculino  OfflineGalería Personal de ignaciogbVer perfil de usuarioEnviar mensaje privado
Sebastian Santisi
Administrador Técnico


Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451


argentina.gif
MensajePublicado: Lun Jun 13, 2011 11:52 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Es lo que dije arriba Smile.

int funcionqueordena(int vectorordenado[], int vectordesordenado[]) {
// Magia.
return tamaniodelvectorordenado;
}

_________________
Image[tex] ${. \ \ \ \ \ \ \ \ \ .}$ [/tex][tex] ${\Large Usá \LaTeX, no seas foro...}$ [/tex]

Aries Género:Masculino Perro OfflineGalería Personal de Sebastian SantisiVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
koreano
Nivel 9



Registrado: 15 Jul 2010
Mensajes: 1796

Carrera: No especificada
blank.gif
MensajePublicado: Mar Jun 14, 2011 9:58 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Están enseñando el ABC de las malas prácticas Very Happy


   OcultoGalería Personal de koreanoVer perfil de usuarioEnviar mensaje privado
Fabricio
Nivel 8


Edad: 36
Registrado: 20 Nov 2008
Mensajes: 851
Ubicación: Villa del Parque, barrio turro
Carrera: Civil
CARRERA.civil.3.jpg
MensajePublicado: Mie Jun 15, 2011 12:47 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

muchachos/as estoy re perdido con vectores xD, aver si me pueden dar una mano, es muy basico este ejercicio y no me sale Sad

Me pide hacer un programa para que dados 2 vectores de N elementos cada uno haga el vector suma, para no hacerla tan densa el N lo tome como 3, pero cuando lo compilo, el vector suma me da cualquier cosa, hice esto:

Cita:
#include <iostream>
using namespace std;
int main(){
int vectorA[2],vectorB[2],vectorsuma[2],i;
cout<<"ingrese un vector de 3 componentes "<<endl;
for(i=0;i<=2;i++){
cin>>vectorA[i];
}
cout<<"ingrese un vector de 3 componentes "<<endl;
for(i=0;i<=2;i++){
cin>>vectorB[i];
}
for(i=0;i<=2;i++){
vectorsuma[i]=vectorA[i]+vectorB[i];
}
cout<<vectorsuma;
}



cuando compilo, hago por ejemplo (1,2,3)+(1,2,3) y me da que es igual a 0x23ff34 Shocked

_________________
[tex]100 \% \ \  {ingeniero}[/tex]

Aries Género:Masculino Dragón OfflineGalería Personal de FabricioVer perfil de usuarioEnviar mensaje privado
RJC
Nivel 2



Registrado: 27 Mar 2008
Mensajes: 19

Carrera: Informática, Sistemas y
CARRERA.informatica.png
MensajePublicado: Mie Jun 15, 2011 1:36 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Ojo que creo que estas cometiendo dos errores.
En primer lugar si queres que tus arrays tengan 3 elementos, al declararlos lo tenes que hacer con esa misma cantidad, por ejemplo, int vectorA[3], en el cual como luego bien tuviste en cuenta vas a tener como indices validos desde 0 hasta 2.
Otra cosa que tenes que chequear es en el momento de hacer la impresion del resultado. Al hacer un cout de la variable que declaraste como vector esto no hace que imprima el contenido sino la posicion de memoria en la cual se encuentra el primer elemento del mismo. Para ver bien el contenido te recomiendo hacer un bucle como los que hiciste para la entrada de datos, solo que esta vez haciendo un cout del vectorsuma[i].
Espero que te sirva.


 Género:Masculino  OfflineGalería Personal de RJCVer perfil de usuarioEnviar mensaje privado
Fabricio
Nivel 8


Edad: 36
Registrado: 20 Nov 2008
Mensajes: 851
Ubicación: Villa del Parque, barrio turro
Carrera: Civil
CARRERA.civil.3.jpg
MensajePublicado: Mie Jun 15, 2011 1:49 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

No se si lo habre entendido bien pero lo corregi asi

Cita:
#include <iostream>
using namespace std;
int main(){
int vectorA[2],vectorB[2],vectorsuma[2],i;
cout<<"ingrese un vector de 3 componentes "<<endl;
for(i=0;i<=2;i++){
cin>>vectorA[i];
}
cout<<"ingrese un vector de 3 componentes "<<endl;
for(i=0;i<=2;i++){
cin>>vectorB[i];
}
for(i=0;i<=2;i++){
vectorsuma[i]=vectorA[i]+vectorB[i];
cout<<vectorsuma[i];
}
}


ahora me da un vector de resultado, pero da mal igual, por ejemplo, para (2,3,4)+(2,3,4) me da (4,4,4)

lo que entiendo por el ultimo for que hice seria asi:

el contenido de vectorsuma en la posicion i seria igual a la suma de los contenidos de las posiciones i de los vectores A y B, y me devolveria ese valor

_________________
[tex]100 \% \ \  {ingeniero}[/tex]

Aries Género:Masculino Dragón OfflineGalería Personal de FabricioVer perfil de usuarioEnviar mensaje privado
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

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 CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.2639s ][ Pedidos: 20 (0.2058s) ]