兔兔小小淘气 2021-05-01 17:11 采纳率: 66.7%
浏览 100
已采纳

c++字符串string问题

【输入形式】用户首先在第一行输入一个正整数,该正整数表示待排序的用户数目,然后在下面多行输入多个用户的信息,每行的输入格式为:姓名 电话。以回车结束每个用户的输入。
【输出形式】程序输出排序后的结果。每行的输出结果格式也是: 姓名 电话。姓名和电话字段中间没有空格,要求用户姓名不能超过10个字符,超出10个字符时候只取前10个字符作为姓名。电话号码不能超过10位,超过10位时只按10位处理。输出姓名、电话字段各占12个字符宽,输出格式采用默认对齐方式。另外,用户的数量要求不超过50个。
【样例输入】
3
amethystic 1234567
amethyst 654321
wangwei 7645434
【样例输出】
####amethyst######654321
##amethystic#####1234567
#####wangwei#####7645434
【样例说明】程序根据用户姓名的词典顺序排序,最后按照姓名#电话的格式输出。另外,由于规定姓名和电话之间用空格分割,所以输入姓名时请将姓和名一起输入,中间不要有空格。另外输出时候程序将自动补齐12字符宽。程序输出结尾有个回车符。

 

 

然后下面是我写的,还没写一些其他细节的,就看string赋值那块,出了问题

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
#define N 50


class PhoneBook
{
public:

    void input()
    {
        cin>>name>>num;
    }
    string getname()
    {
        return name;
    }
    int getnum()
    {
        return num;
    }
    void set1(string nam,int nu)
    {
        name=nam;
        num=nu;
    }
    void display()
    {
        cout<<name<<num<<endl;
    }

private:
    string name;
    int num;
};


void SortBook(PhoneBook book[],int n)
{
    int i,j,num1,num2;
    string name1,name2;



    for(i = n-1;i>0;i--)
    {
        for(j = 0;j<i;j++)
        {
            name1 = book[j].getname, name2 = book[j+1].getname;
            if(name1>name2)
            {
                num1 = book[j].getnum,num1 = book[j].getnum;
                book[j].set1(name2,num1);
                book[j+1].set1(name1,num2);
            }

            
        }
    }
}


int  main()
{
        PhoneBook  mybook[N];
        int  n;
        int  i;
        cin>>n;
        for(i=0;i<n;i++)
                mybook[i].input();
        SortBook(mybook,n);
        for(i=0;i<n;i++)
                mybook[i].display();
        return  0;
}

然后SortBook函数里面的冒泡排序出现错误了,具体如下:

大佬告诉我是什么回事

  • 写回答

2条回答 默认 最新

  • i__0o0__ 2021-05-01 17:22
    关注

    name1 = book[j].getname, name2 = book[j+1].getname;

    改成

    name1 = book[j].getname;

    name2 = book[j+1].getname;

    应该是这个逗号的问题,if里面还有一个

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号