我有一些工作排序按数字递增,货币值从500到25000不等。但是,我需要分配给每个值的地址,但这些地址(例如:151 Acorn)不遵循字母或数字模式,例如从最高到最低。
是否有任何排序算法可以帮助我?我当前的代码将在下面发布,但我的目标是让set数组的地址和值匹配,从[0] - [6]开始。
#include<iostream>
#include<string>
#include <iomanip>
#include <cstdlib>
using namespace std;
int totalsList(int value[7], string address[7]);
void lookUp(int value[], string address[]);
void display(int value[], string address[]);
void showHighest(int value[], string address[]);
void sortArray(int[], int);
void sortStrings(string[], string);
void showArray(const int[], int);
int main() {
//Definitions
int size = 0;
int value[7] = { 500, 1000, 1500, 6000, 15000, 20000, 25000 };
string address[7]{ "151 Acorn", "120 Xenia", "161 Acorn", "161 Acorn", "200 Main", "200 Acorn", "500 Arcade" };
// MAIN MENU
int choice;
cout << "County Auditor's Tax Look Up Program:\n";
cout << "1.) Display The Data.\n";
cout << "2.) Look up Taxes.\n";
cout << "3.) Sort taxes in ascending order.\n";
cout << "4.) Show Property with largest tax due.\n";
cout << "5.) Exit Program.\n";
cin >> choice;
while (choice <= 5) {
if (choice == 1) {
display(value,address);
}
if (choice == 2) {
lookUp(value,address);
}
if (choice == 3) {
sortArray(value, 7);
sortString(address, 7);
cout << "Sorted Values: \n";
showArray(value, 7);
system("pause");
}
if (choice == 4) {
showHighest(value, address);
}
}
//exit
if (choice == 5) {
return 0;
}
system("pause");
}
void lookUp(int value[], string address[]) {
string add;
cout << "Enter Address: ";
getline(cin, add);
getline(cin, add);
// Validate String entry
if (add != address[0] || add != address[1] || add != address[2] || add != address[3] || add != address[4]
|| add != address[5] || add != address[6] || add != address[7]) {
cout << "This address is not found, please re-enter\n";
}
// Look up function shows cost and address according to arrays
int valCor = 0;
if (add == address[0]) {
valCor = 500;
cout << "The address: " << add << " has tax due of: " << "$" << valCor << endl;
}
if (add == address[1]) {
valCor = 1000;
cout << "The address: " << add << " has tax due of: " << "$" << valCor << endl;
}
if (add == address[2]) {
valCor = value[2];
cout << "The address: " << add << " has tax due of: " << "$" << valCor << endl;
}
if (add == address[3]) {
valCor = value[3];
cout << "The address: " << add << " has tax due of: " << "$" << valCor << endl;
}
if (add == address[4]) {
valCor = value[4];
cout << "The address: " << add << " has tax due of: " << "$" << valCor << endl;
}
if (add == address[5]) {
valCor = value[5];
cout << "The address: " << add << " has tax due of: " << "$" << valCor << endl;
}
if (add == address[6]) {
valCor = value[6];
cout << "The address: " << add << " has tax due of: " << "$" << valCor << endl;
}
system("pause>nul");
}
void display(int value[], string address[]) {
// Display all arrays in table format
cout << "All Addresses and Owed Taxes, correspondingly: \n";
cout << "----------------------------------------------\n";
cout << address[0] << " Tax: $" << value[0] << endl;
cout << address[2] << " Tax: $" << value[0] << endl;
cout << address[3] << " Tax: $" << value[0] << endl;
cout << address[4] << " Tax: $" << value[0] << endl;
cout << address[5] << " Tax: $" << value[0] << endl;
cout << address[6] << " Tax: $" << value[0] << endl;
system("pause");
}
void showHighest(int value[], string address[]){
cout << "Highest Value: \n";
cout << "The Highest Property tax is on the location " << address[6] << "with a tax of: $" << value[6];
}
void sortArray(int array[], int size)
{
bool swap;
int temp;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (array[count] > array[count + 1])
{
temp = array[count];
array[count] = array[count + 1];
array[count + 1] = temp;
swap = true;
}
}
} while (swap);
}
void sortString(string array[], int size)
{
bool swap;
int temp;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (array[count] > array[count + 1])
{
temp = array[count];
array[count] = array[count + 1];
array[count + 1] = temp;
swap = true;
}
}
} while (swap);
}
void showArray(const int array[],int size)
{
for (int count = 0; count < size; count++)
cout << "$" << array[count] << "\n";
cout << endl;
}
答案 0 :(得分:1)
我会使用std::sort。您将需要自己的数据结构来将int和std :: string打包在一起。
旁注:尽量避免使用using namespace std;
。它是bad practice