gpt4 book ai didi

c++ - 如何按特定模式对字符串数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:47 25 4
gpt4 key购买 nike

我正在对数字进行一些工作排​​序,货币值(value)从 500 到 25000 不等。但是,我需要为每个值分配地址,但这些地址(例如:151 Acorn)不遵循字母或数字模式,例如从最高到最低。

有什么排序算法可以帮助我吗?我当前的代码将在下面发布,但我的目标是让集合数组具有匹配的地址和值,从 [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;
}

最佳答案

我会使用 std::sort .您将需要自己的数据结构来将 int 和 std::string 打包在一起。

旁注:尽量避免using namespace std;。是bad practice

关于c++ - 如何按特定模式对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com