ayuda con estructuras c++

Iniciado por indict, 12 Enero 2013, 18:03 PM

0 Miembros y 1 Visitante están viendo este tema.

indict

Querría hacer una función que dada un número n de países me ordene por países,  ejemplo:

españa 120
francia 70
españa 50
perú  100
francia 80


me ordene por españa 120, españa 50, francia 70, francia 80, perú 100

Gracias

#inlcude<iostream>
#include<vector>
#include<algorithm>

using namespace std;

struct pais{
       string nom;
       int q;};
       
int main(){
int n;
cin>>n;
vector<pais>v(n);
int i=0;
while(i<n){
           cin>>v[i].nom;
           cin>>v[i].q;
           i=i+1;}     
       
sort(v.begin(),v.end(),ordena_nom);







vector<pais>total();

total.push_back(v[0]);

int main(){

int i=1;

while(i<v.size()){
                 
                  if (v[i].nom==v[i-1].nom){
                  totals[total.size()-1].quantitat=total[total.size()-1].quantitat + v[i].quantitat;}
                  else {p.nom=v[i].nom;
                  p.q=v[i].q;
                  total.push_back(p);}

dooque

Hola!

No leí el código pero no veo tu pregunta/problema/duda al respecto! Por lo que no se como ayudarte.

Saludos.
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.  -- Kernighan

zonahurbana

No lo he probado, pero esto debería andar bien:
Código (cpp) [Seleccionar]
pais temp;
for(int i=0; i<v.size(); ++i)
for(int j=i+1; j<v.size(); ++i)
if( (v[i].nom > v[j].nom) || (v[i].nom == v[j].nom && v[i].q < v[j].q) )
temp = v[i];
v[i] = v[j];
v[j] = temp;
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

BlackZeroX

#3
@zonahurbana
Si te fijas bien el usa ya el proceso sort()... PERO NO DICE ni aclara su problema.

En el sort() usas el proceso ordena_nom() pero no dejas su código... ¿Si te COMPILA este código? yo creo que no.

Dulces Lunas!¡.
The Dark Shadow is my passion.