Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Im trying to sort a list of Cities and their Temperature using a bubblesort

Im fairly new to C++ and im trying to convert an int "city.temp[4]" to a string and then adding that to an already existing string "city.name[4]" which would then sort the cities and their temperatures based on low to high. The user is the one to name all four cities and assign them a temperature. The bubbleSort is working fine sorting the temperatures by them self but im not sure how to get the cities to follow along with their respective temperatures

#include <iostream>
using namespace std;

class City{
public:
    string name[4];
    int temp[4];

};
    
int main() {    
    City city;
    city.name[4];
    city.temp[4];
  
    cout << "           Please Input the name of 4 different cities and their temperature\n\n\n";

        for(int i=0; i < 4; i++){

            cout << " Input the name and temperature of city (" << i+1 << "): "; getline(cin, city.name[i]); cout << " "; cin >> city.temp[i];
            cin.ignore();    
        }
   
    int length = 4;

    for(int i = 0; i < length; i++){

        for(int j = 0; j < length - 1; j++){

            if(city.temp[j] > city.temp[j+1]){

                int hold = city.temp[j];
                city.temp[j] = city.temp[j+1];
                city.temp[j+1] = hold;
            }
        }
    }




    for(int i = 0; i < length; i++)

        cout << " " << city.temp[i] << " " << city.name[i] << "\n";
   
    return 0;
}

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

The good solution is to have a City-class with a name and a temperature and swap cities based on the order of the temperature with std::sort.

The easy fix for now is to use std::swap to swap the temperatures and at the same time swap the names:

if(city.temp[j] > city.temp[j+1]){
    std::swap(city.temp[j], city.temp[j+1]);
    std::swap(city.name[j], city.name[j+1]);
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading