标题:C++语句问题
只看楼主
情义控灬浮云
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2017-8-3
结帖率:80.95%
已结贴  问题点数:10 回复次数:3 
C++语句问题
编写一个程序,要求用户输入捐献者数目,然后要求用户输入每一个捐献者的姓名和款项。此程序最后将显示所有捐款超过10000的捐款者的姓名及其捐款数额。该列表前应包含一个标题,指出下面的捐款者是重要捐款人(Grand Patrons)。然后,程序将列出其他的捐款者,该列表要以Patrons开头。如果某种类别没有捐款者,则程序将打印单词“none”。该程序只显示两种类别,而不进行排序。
#include<iostream>
#include<string.h>
int main()
{
    use namespace std;
    int num1,i;
    char name1;
    double dollar;
    string tuhao,tubie;
    struct don
    {
        string name;
        double num;
    }
    cout<<"please enter the number of donor: "<<endl;
    cin>>num1;
    don arr[num1];
    cout<<"please enter everyone's name and money: \n";
    for(i=0;i<num1;i++)
    {
        arr[i].name=cin>>name1;
        arr[i].num=cin>>dollar;
        if(dollar>10000)
            tuhao=name1+dollar;
        else
            tubie=name1+dollar;
    }
    if(tuhao==NULL)
        cout<<" Grand Patrons:\nnone \n";
    else
        cout<<"Grand Patrons:\n"<<tuhao<<endl;
    if(tubie==NULL)
        cout<<"no Patrons \n";
    else
        cout<<"Patrons:\n"<<tubie<<endl;
        return 0;
    }
元老们帮我看一下哪边错了 ,我的string 他为啥识别不出来,很郁闷。
搜索更多相关主题的帖子: C++ string name cout cin 
2018-07-29 23:53
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:7 
C++ 标准已经支持 int[x], x 不是常量表达式这种操作了?

针对你的编译错误说一下吧, 你的程序写的可能还有其他问题自己修正
首先, using namespace std; C++ 里面没有 use 关键字
结构体定义结束之后要加 “;”
arr[i].name = cin >> name1;
还有对应的下面一行
错到爆炸
这句话的顺序是首先输入 name1, 然后把 cin 赋值给结构体里的 name, 也就是 arr[i].name 的类型是 istream, 这显然是错的. 两句话要分开, 条件判断可以直接放 cin >> name, 但是不可以直接赋值
然后 string = NULL
没有这种用法
NULL 是针对 C 类型的指针的
判断 string 是否为空可以用
string a;
if(a.empty()) {//TODO} 或者 if(!a.size()) {//TODO}
string 里面没有重载 operator bool, 直接把 string 用在 条件判断里面也是不行的

[此贴子已经被作者于2018-7-30 02:02编辑过]

2018-07-30 02:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
从你代码之中的数处低级错误上可以看出 你完全不会C++,其它语言也不会

#include <iostream>
#include <string>
#include <vector>
using namespace std;

struct Patron
{
    std::string name;
    double money;

    Patron() : name(), money()
    {
    }
    Patron( const std::string& name, double money ) : name(name), money(money)
    {
    }

    friend std::istream& operator>>( std::istream& is, Patron&  p )
    {
        return is >> p.name >> p.money;
    }
    friend std::ostream& operator<<( std::ostream& os, const Patron&  p )
    {
        return os << '\t' << p.name << '\t' << p.money;
    }
};

int main( void )
{
    vector<Patron> grand_patrons, patrons;

    size_t num;
    cout << "please enter the number of donor: ";
    cin >> num;

    cout << "please enter everyone's name and money: \n";
    for( size_t i=0; i!=num; ++i )
    {
        Patron p;
        cin >> p;
      

        if( p.money > 10000 )
            grand_patrons.push_back( std::move(p) );
        else
            patrons.push_back( std::move(p) );
    }

    cout << "Grand Patrons:\n";
    if( grand_patrons.empty() )
        cout << "    none\n";
    else
        for( const auto& v : grand_patrons )
            cout << v << '\n';

    cout << "Patrons:\n";
    if( patrons.empty() )
        cout << "    none\n";
    else
        for( const auto& v : patrons )
            cout << v << '\n';
}

2018-07-30 09:33
food_bird
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-7-30
得分:0 
我也才自学几天,不过你的里面几个小错误我都可以看出来了,使用命名空间不是using namespace std;吗,还有定义class类struct结构体,大括号后面要加分号;的吧
2018-07-30 18:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-488897-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.522224 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved