Sábado 14 de Diciembre de 2024, 09:44
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Como crear una lista
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Como crear una lista (Leído 4024 veces)
Hypocrisy
Miembro activo
Mensajes: 29
Como crear una lista
«
en:
Lunes 6 de Abril de 2009, 19:55 »
0
Buenas...tengo un problema bastante tonto...llevo dias y dias dandolo vueltas y nada...A ver si me podeis hechar una mano
Tngo este codigo :
int main(int argc, char *argv[])
{
// Creation of a list of cars
vector<Car *> cars;
// Adding cars to the list
Car *c1= new Car("AAA1111", "Leon");
cars.push_back(c1);
Car *c2= new Car("BBB2222", "Sierra");
cars.push_back(c2);
Car *c3= new Car("ZZZ8888", "Alhambra");
cars.push_back(c3);
Car *c4= new Car("FFF4444", "Mondeo");
cars.push_back(c4);
Car *c5= new Car("NNN0000", "Avensis");
// Let's print to the console all the cars in the list
cout << listCars(cars) << endl;
Tengo que hacer la parte de codigo que se encargue de hacer la lista y lo maximo que he conseguido hacer es esto :
string listCars(vector<Car*> cars) {
stringstream res;
int suma;
for (int i = 0; i<5; i++){
suma+= cars
;
res<< cars
->str();
}
return (res.str());
}
str es esto::
string Car::str() {
stringstream res;
res << "plate:" << this->getPlate();
res << " model:" << getModel();
return res.str();
}
El codigo que crea la lista no funciona.... y nose porque...me podeis dar alguna pista --_--''
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #1 en:
Lunes 6 de Abril de 2009, 20:30 »
0
La proxima vez por favor un codigo que compile asi no tardo un buen rato en hacerlo yo.
Lo ideal es usar un iterador pero asi te funcionara:
Código: Text
for (int i = 0; i < cars.size(); i++)
El problema es que nunca empujaste el c5, con lo cual no habia 5 elemento en el vector.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #2 en:
Lunes 6 de Abril de 2009, 23:03 »
0
Voy a probarlo rapidamente y ahora os cuento....muxisimas gracias
EI: juntando mensajes.
bua...no habia caido tio XD el .size....muchisimas gracias
Por cierto...para separar las lineas como deberia hacerlo..quiero decir:
que cada vez k introduzca un modelo y su matricula saltara una linea y luego pusiera otra...
Ejemplo
PLATE: AAA1111 MODEL: LEON
PLATE: AAAA4322 MODEL : CHOTO
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #3 en:
Martes 7 de Abril de 2009, 00:36 »
0
De nadas
Lo del salto de linea lo iba a poner como PD en el mensaje anterior pero al final me dije, bueno, lo querra asi
Código: Text
res<< cars[i]->str() << endl;
PD. ¿Modelo choto? Juaz
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #4 en:
Martes 7 de Abril de 2009, 00:38 »
0
eso ya lo tenia...el problema es que no hace el "enter" entre los modelos...
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #5 en:
Martes 7 de Abril de 2009, 00:47 »
0
Si pones el endl tal como figura ahi arriba el formato es este:
plate:XXXXX model:XXXXX
plate:XXXXX model:XXXXX
plate:XXXXX model:XXXXX
plate:XXXXX model:XXXXX
etc.
¿No es eso lo que querias?
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #6 en:
Martes 7 de Abril de 2009, 00:48 »
0
JUAS....y yo sin darme cuenta XDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #7 en:
Martes 7 de Abril de 2009, 03:19 »
0
Bueno...ahora tengo otro problema bien gordo...debo ordenar la lista dicha antes segun plate o model...y me proponen hacerlo asi:
bool orderCarsByPlate(Car *c1, Car *c2)
{
return (c1<c2);
}
/**
* @param cars the cars vector to be ordered by plate
* @return the cars vector be ordered by plate
*/
vector<Car *> orderCarsByPlates(vector<Car *> cars)
{
string plate;
for ( int i=0; i < cars.size(); i++)
plate= (cars
->getPlate());
vector<string> myvector (plate);
vector<int>::iterator it;
sort (plate.begin(),plate.end(),orderCarsByPlates)
for (it=plate.begin(); it!=plate.end(); ++it){
*it= cars;
return cars;
}
Bueno, he editado porque el metodo swap no me sale y no lo entiendo tampoco. Ahora estoy intentando utilizar por el metodo "sort" que me ha recomendado el profesor Y me ha salido algo asi. Tengo que ordenar la lista , ordenandola con las matriculas y luego ordenandolas con los modelos. Como podria ordenarla con el metodo sort??
P.D Pido ayuda por aqui ya que mi profesor suda de mi el hijo***. Doy mi msn por si alguien me kiere ayudar:satanempire_666@hotmail.com..estoy dispuesto hasta pagar XD.
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #8 en:
Martes 7 de Abril de 2009, 14:21 »
0
Ahi tenes un bucle infinito, orderCarsByPlate llama a sort y sort llama a orderCarsByPlate.
Mira aca como funciona
sort
.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #9 en:
Martes 7 de Abril de 2009, 15:45 »
0
entonces que deberia hacer? crear un vector nuevo que haga referencia a ordercarsbyplate...es que sienceramente nose que hacer la verda...
bool orderCarsByPlate(Car *c1, Car *c2)
{
return (c1<c2);
}
vector<Car *> orderCarsByPlates(vector<Car *> cars)
{
string plate;
for ( int i=0; i < cars.size(); i++)
plate= (cars
->getPlate());
vector<string> myvector (plate);
vector<int>::iterator it;
sort (plate.begin(),plate.begin()+4)
sort (plate.begin(),plate.end(),orderCarsByPlates)
for (it=plate.begin(); it!=plate.end(); ++it){
*it= cars;
return cars;
}nuevo vector que haga referiencia a ordercarsbyPlATE??estaria en las mismas
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #10 en:
Martes 7 de Abril de 2009, 15:47 »
0
Eso tendria mas sentido supongo, cuando llegue a casa donde tengo el esqueleto que tuve que hacer para compilar originalmente tu codigo me fijo.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #11 en:
Martes 7 de Abril de 2009, 16:03 »
0
hombre me seria de gran ayuda intentar tener el codigo para mañana...a ver si podemos hacer algo. Estaria tan agradecido...si necesitas un favor sexual o dinero yo te lo hago XDDDDDDD
Intentare mirar a ver que puedo hacer...pero me sigue dando fallo en el bucle for :S
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #12 en:
Martes 7 de Abril de 2009, 16:11 »
0
¿Estas cambiando el codigo, no?
Esto es lo que tiene logica siendo que sobrecargas la funcion orderCarsByPlates:
Código: Text
sort (plate.begin(),plate.end(),orderCarsByPlates);
No necesito ningun favor, gracias, ya le hubiera dado una ojeada si hubieras dejado una version compilable pero como no lo hiciste y no me gusta trabajar el doble no voy a continuar hasta tener el esqueleto que tuve que crear.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #13 en:
Martes 7 de Abril de 2009, 16:18 »
0
Bueno..he terminado de cambiar el codigo. Me compila correctamente sin ningun error, pero no me ordena nada. a ver si ves algo raro
bool orderCarsByPlate(Car *c1, Car *c2)
{
return (c1<c2);
}
vector<Car *> orderCarsByPlates(vector<Car *> cars)
{
for ( int i=0; i < cars.size(); i++)
plate= (cars
->getPlate());
vector <string> plate (plate);
vector<int>::iterator it;
sort (plate.begin(),plate.begin()+2);
sort (plate.begin()+2,plate.end(),orderCarsByPlates);
sort (plate.begin(),plate.end(),orderCarsByPlates);
for (it=plate.begin(); it!=plate.end(); ++it){
it= cars;
return cars;
}
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #14 en:
Martes 7 de Abril de 2009, 16:49 »
0
Segun entiendo sobrecargando el operador < en Car lo unico que tendrias que hacer es esto:
Código: Text
sort (cars.begin(),cars.end());
begin y end son los intervalos sobre los que trabajara el algoritmo, no hace falta hacer un bucle si ya le decimos que ordene todo el vector.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #15 en:
Martes 7 de Abril de 2009, 17:08 »
0
Entonces estas diciendo de cambiar plate...que seria la matricula por cars? He probado lo que has dicho y sigue sin ordenarme nada :S
{
return (c1<c2);
}
vector<Car *> orderCarsByPlates(vector<Car *> cars)
{
for ( int i=0; i < cars.size(); i++)
plate= (cars
->getPlate());
vector <string> plate (plate);
vector<int>::iterator it;
sort (cars.begin(),cars.begin()+2);
sort (cars.begin()+2,cars.end(),orderCarsByPlates);
sort (cars.begin(),cars.end(),orderCarsByPlates);
for (it=cars.begin(); it!=cars.end(); ++it){
it= cars;
return cars;
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #16 en:
Martes 7 de Abril de 2009, 17:57 »
0
Yo decia otra cosa pero parece que al llamar a sort sin parametros no llama al operador sobrecargado < de Car (supongo que esto es por el tipo de datos del vector que es un puntero), entonces es asi de simple:
Código: Text
bool orderCarsByPlate(Car *c1, Car *c2)
{
return c1->plate < c2->plate;
}
Y en tu main:
Código: Text
// Let's print to the console all the cars in the list
cout << listCars(cars) << endl;
sort(cars.begin(), cars.end(), orderCarsByPlate);
cout << listCars(cars) << endl;
Vas a ver dos outputs, el segundo ordenado por la patente.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #17 en:
Martes 7 de Abril de 2009, 20:03 »
0
hasta que no llegue a casa no lo podre probar...a ti te funciona???:S
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #18 en:
Martes 7 de Abril de 2009, 20:51 »
0
Perfectamente, sino no lo hubiera puesto.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #19 en:
Martes 7 de Abril de 2009, 21:00 »
0
entonces el codigo al completo quedaria asi:
Código: C++
bool
orderCarsByPlate
(
Car
*
c1, Car
*
c2
)
{
return
c1
-
>
plate
<
c2
-
>
plate
;
}
vector
<
Car
*
>
orderCarsByPlates
(
vector
<
Car
*
>
cars
)
{
for
(
int
i
=
0
;
i
<
cars.
size
(
)
;
i
++
)
plate
=
(
cars
[
i
]
-
>
getPlate
(
)
)
;
vector
<
string
>
plate
(
plate
)
;
vector
<
int
>
::
iterator
it
;
sort
(
cars.
begin
(
)
,cars.
begin
(
)
+
2
)
;
sort
(
cars.
begin
(
)
+
2
,cars.
end
(
)
,orderCarsByPlates
)
;
sort
(
cars.
begin
(
)
,cars.
end
(
)
,orderCarsByPlates
)
;
for
(
it
=
cars.
begin
(
)
;
it
!
=
cars.
end
(
)
;
++
it
)
{
it
=
cars
;
return
cars
;
si no es asi, copia tu codigo y me lo enseñas...a ver como ta kedao a ti...luego lo pruebo en casa y te comento que hasta las 23:30 no llegare a casa
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #20 en:
Martes 7 de Abril de 2009, 21:05 »
0
No, esa funcion (vector<Car *> orderCarsByPlates(vector<Car *> cars)) es totalmente innecesaria.
Agregas una nueva funcion: bool orderCarsByPlate(Car *c1, Car *c2);
Y desde el main llamas a sort asi como te puse antes:
Código: Text
// Let's print to the console all the cars in the list
cout << listCars(cars) << endl;
sort(cars.begin(), cars.end(), orderCarsByPlate);
cout << listCars(cars) << endl;
La segunda impresion en pantalla estara ordenada por patente.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #21 en:
Martes 7 de Abril de 2009, 21:10 »
0
Entonces todo lo que hecho ha sido una tonteria XDD??....Lo has solucionado todo con una linea o_O...pensaba que lo mio era necesario XDDDD. Es que aun no lo he probado, luego lo pruebo y comento.
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #22 en:
Martes 7 de Abril de 2009, 21:23 »
0
Si, eso estaba mal, igual son 4 lineas no una, la funcion de comparacion tambien es necesaria:
Código: Text
bool orderCarsByPlate(Car *c1, Car *c2)
{
return c1->plate < c2->plate;
}
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Hypocrisy
Miembro activo
Mensajes: 29
Re: Como crear una lista
«
Respuesta #23 en:
Martes 7 de Abril de 2009, 23:52 »
0
eres dios....eres el puto amo....me funciona a la perfeccion...muxisimas gracias tio...kreo k me asomare mas por el foro pk merece la pena
estar aqui.
No entendia muy bien lo de sort...pero gracias a ti y a mi profe ya lo entiendo
es muy util la verdad
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Como crear una lista
«
Respuesta #24 en:
Miércoles 8 de Abril de 2009, 08:08 »
0
De nadas
Ese sort es un algoritmo de la STL, estan para simplificar la vida del programador de C++
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Como crear una lista