有道题在VS上是可以运行的,但是在pta上就答案错误,请问哪里出错了呢

有道题在VS上是可以运行的,但是在pta上就答案错误,请问哪里出错了呢

问题描述:

给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。

输入格式:
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。

输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。

输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0
结尾无空行
输出样例:
25.00, Programming in Delphi
18.50, Programming in VB


```c++
// 数据结构2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<string>
#include<iomanip>
using namespace std;
struct book
{
    
    string name;
    float price;
};


int main()
{
    book bookarray[10];
    int num;
    cin >> num;
    
    
    float price1;
    double list[30];
    string title1;
//    cin.ignore();
    for (int i = 0; i < num; i++)
    {
        
        
        cin.ignore();
        getline(cin, bookarray[i].name);
        cin >> price1;
        bookarray[i].price = price1;
        list[i] = price1;
    }
    double max=list[0];
    double min=list[0];
    int maxnumber=0;
    int minnumber = 0;
    for (int i = 0; i < num; i++)
    {
        if (list[i] > max)
        {
            max = list[i];
            maxnumber = i;
        }
        if (list[i] < min)
        {
            min = list[i];
            minnumber = i;
        }
    }
    cout << fixed << setprecision(2) << max << ", " << bookarray[maxnumber].name<< endl;
    cout << fixed << setprecision(2) << min << ", " << bookarray[minnumber].name;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件


```

你代码好复杂

供参考:

#include <iostream>
#include<iomanip>
using namespace std;
struct book
{
    char  name[64];
    float price;
};
int main()
{
    struct book bookarray[10];
    int num;
    cin >> num;
    for (int i = 0; i < num; i++)
    {
        cin.get();
        cin.get(bookarray[i].name,64);
        cin >>bookarray[i].price;
    }
    float max=bookarray[0].price,min=bookarray[0].price;
    int   max_i=0,min_i= 0;
    for (int i = 0; i < num; i++)
    {
        if (bookarray[i].price > max)
        {
            max = bookarray[i].price;
            max_i = i;
        }
        if (bookarray[i].price < min)
        {
            min = bookarray[i].price;
            min_i = i;
        }
    }
    cout << fixed << setprecision(2) << bookarray[max_i].price<< ", " << bookarray[max_i].name<< endl;
    cout << fixed << setprecision(2) << bookarray[min_i].price<< ", " << bookarray[min_i].name;
    return 0;
}