gpt4 book ai didi

C++ 在从文件中获取数据时使用 strcpy 和 strcmp 按字母顺序对数组进行排序?

转载 作者:行者123 更新时间:2023-11-30 03:23:47 25 4
gpt4 key购买 nike

我几乎可以正常工作了,但是它会将以大写字母开头的姓氏与不以大写字母开头的姓氏分开。

示例文件

LastName FirstName DaysofRental BalanceDue

史密斯乔 15 100.50

约翰 10 95.20

安德森保罗 30 20.00

O'Donell Miriam 10 24.30

福斯特山姆 30 15.00

Zom Pete 10 20.00

模拟寒冷 100 30

史密蒂克里斯 200 200

徐康纳 1 200

阿尼洛史蒂夫 0 0

正在输出什么“已排序”文件

LastName FirstName DaysofRental BalanceDue

安德森保罗 30 $20.00

小约翰 10 美元 95.20 美元

福斯特山姆 30 岁 $15.00

模拟寒冷 100 $30.00

O'Donell Miriam 10 $24.30

史密斯·乔 15 岁 $100.50

僵尸皮特 10 $20.00

阿尼洛史蒂夫 0 $0.00
斯密蒂克里斯 200 $200.00
徐康纳 1 $200.00

#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <fstream>
#include <string.h>
using namespace std;
const int STRINGSIZE = 30;
const int LISTSIZE = 10;
const int HEADSIZE = 4;

typedef char STRING30[STRINGSIZE];
typedef STRING30 NAMES[LISTSIZE];

int main(int argc, char** argv)
{
ofstream outfile;
outfile.open("sorted.txt");

int count,
count2,
mindex;

int rdays[LISTSIZE],
hrdays;

double baldue[LISTSIZE],
totalbaldue,
hbaldue,
tempnum;

NAMES first,
last,
header;

STRING30 mname,
tempname;

ifstream in;
in.open("invoice1_test1.txt");

//Input Section

if(in.is_open())
{
in >> header[0]
>> header[1]
>> header[2]
>> header[3];

int count = 0;

while(!in.eof())
{
in >> last [count]
>> first[count]
>> rdays[count]
>> baldue[count];
count++;
}
in.close();
}

else

{
cout << "File failed to open" << endl;
}

for(count = 0; count < LISTSIZE; count++)
{
mindex = count;
strcpy(mname, last[count]);
for(count2 = count; count2 < LISTSIZE; count2++)
{
if(strcmp(last[count2], mname) == -1)
{
mindex = count2;
strcpy(mname, last[count2]);
}
}

strcpy(tempname, last[count]);
strcpy(last[count], mname);
strcpy(last[mindex], tempname);

strcpy(tempname, first[count]);
strcpy(first[count], first[mindex]);
strcpy(first[mindex], tempname);

tempnum = rdays[count];
rdays[count]= rdays[mindex];
rdays[mindex]= tempnum;

tempnum = baldue[count];
baldue[count] = baldue[mindex];
baldue[mindex] = tempnum;
}
outfile << setiosflags(ios::showpoint | ios::fixed) << setprecision(2);

outfile << left << setw(20) << header[0] << setw(20) << header[1] << setw(20) << header[2] << setw(20) << header[3] << endl;

for(int count = 0; count<LISTSIZE; count++)
{
outfile << left << setw(20) << last[count] << setw(20) << first[count] << setw(20) << rdays[count] << "$" << setw(20) << baldue[count] << endl;
}

最佳答案

使用 if (strcmpi(last[count2], mname) < 0);为了比较,而不是 if (strcmp(last[count2], mname) ==-1);

strcmpi()功能与strcmp()相同但它不区分大小写。

同时添加 exit(1)如果ifstream in打不开。

关于C++ 在从文件中获取数据时使用 strcpy 和 strcmp 按字母顺序对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50185062/

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