首页 > 编程语言 >C++-练习-67

C++-练习-67

时间:2024-11-10 08:49:06浏览次数:3  
标签:const Item top 练习 C++ item 67 return Stack

题目:

考虑下面的结构声明

struct customer {

        char fullname[35];

        double payment;

};

编写一个程序,它从栈中添加和删除customer结构(栈用Stack类声明)。每次customer结构被删除时,其payment的值都被添加到总数中,并报告总数。

源代码:

test.h

#ifndef STACK_H_
#define STACK_H_

typedef struct customer {
        char fullname[35];
        double payment;
}Item;

class Stack
{
private:
        enum {MAX = 10};
        Item items[MAX];
        int total;
        int top;
public:
        Stack();
        bool isempty() const;
        bool isfull() const;

        bool push(const Item& item);

        int pop(Item& item);
};

#endif

test.cpp

#include "test.h"
#include <iostream>
#include <cctype>

int main()
{
	using namespace std;
	Stack st;
	char ch;
	Item po;
	cout << "Please enter A to add a purchase order,\n"
		<< "P to process a PO, or Q to quit.\n";
	while (cin >> ch && toupper(ch) != 'Q')
	{
		while (cin.get() != '\n')
			continue;
		if (!isalpha(ch))
		{
			cout << '\a';
			continue;
		}
		switch (ch)
		{
		case 'A':
		case 'a': 
			cout << "请输入fullname: ";
			cin.getline(po.fullname, 35);
			cout << "请输入payment: ";
			(cin >> po.payment).get();
			if (st.isfull())
				cout << "stack already full\n";
			else
				st.push(po);
			break;

	case 'P':
	case 'p':
		if (st.isempty())
			cout << "stack already empty\n";
		else
		{
			cout << "payment总数:" << st.pop(po) << endl;;
		}
		break;

	}
	cout << "Please enter A to add a purchase order,\n"
		<< "P to process a PO,or Q to quit.\n";
	}
	cout << "Bye\n";
	return 0;
}

test_function.cpp

#include "test.h"

Stack::Stack()
{
        top = 0;
        total = 0;
}

bool Stack::isempty() const
{
        return top == 0;
}
bool Stack::isfull() const
{
        return top == MAX;
}

bool Stack::push(const Item& item)
{
        if (top < MAX)
        {
                items[top++] = item;
                return true;
        }
        else
                return false;
}

int Stack::pop(Item& item)
{
        if (top > 0)
        {
                item = items[--top];
                return total += item.payment;
        }
        else
        {
                return 0;
        }
}

演示效果:


如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

标签:const,Item,top,练习,C++,item,67,return,Stack
From: https://blog.csdn.net/little_startoo/article/details/143480958

相关文章

  • C++代码优化(二): 区分接口继承和实现继承
    目录1.引言2.接口继承3.实现继承4.如何选择接口继承与实现继承5.完整实例6.总结1.引言        在C++中,区分接口继承和实现继承是一种良好的编程实践,有助于提高代码的可维护性、可读性和可扩展性。接口继承通常指的是从基类继承纯虚函数(purevirtualfunctions......
  • 华为OD机试2024年E卷-MVP争夺战[100分]( Java | Python3 | C++ | C语言 | JsNode | Go
    题目描述在星球争霸篮球赛对抗赛中,最大的宇宙战队希望每个人都能拿到MVP,MVP的条件是单场最高分得分获得者。可以并列所以宇宙战队决定在比赛中尽可能让更多队员上场,并且让所有得分的选手得分都相同,然而比赛过程中的每1分钟的得分都只能由某一个人包揽。输入描述输入第一行......
  • 华为OD机试2024年E卷-AI识别面板[100分]( Java | Python3 | C++ | C语言 | JsNode | Go
    题目描述AI识别到面板上有N(1≤N≤100)个指示灯,灯大小一样,任意两个之间无重叠。由于AI识别误差,每次别到的指示灯位置可能有差异,以4个坐标值描述AI识别的指示灯的大小和位置(左上角x1,y1,右下角x2,y2),请输出先行后列排序的指示灯的编号,排序规则:每次在尚未排序的灯中挑选最高的......
  • 【C++】详细介绍:priority_queue的使用、适配器、deque介绍、仿函数
    目录一、介绍二、使用三、函数模版和类模板的区别四、适配器1、适配器适配栈扩展:2、deque(双端队列)缺省模版五、仿函数一、介绍(1)、priority_queue称为优先级队列,是一种容器适配器,不是队列也不是容器。(2)、该结构的底层是堆结构,默认是大堆,用模版参数来区分是大堆......
  • sql语句练习-心得及体会
    `我我我,又郁闷了,每次在本应该掌握的地方出问题,我的问题:代码:values=','.join(['%s']*len(data))与 k=', '.join('%s' * len(data)) 第一个问题:为什么要在'%s'外加个[]?在', '.['%s']*len(data)的返回结果是['%s......
  • Python--案例练习print(x>=y and ch < ‘b‘ and y)
    Python3运行x=23y=1ch='B'print(x>=yandch<'b'andy)解释:在表达式 x>=yandch<'b'andy 中:x>=y 是 True,因为23大于等于1。ch<'b' 是 True,因为'B'在ASCII表中比'b'小('B'......
  • c++中使用using namespace的命名空间污染问题
    如果 a.h 中使用了 usingnamespaceaa;,并且 b.cpp 包含了 a.h,那么在 b.cpp 中可以直接使用 aa 命名空间中的内容,因为 usingnamespaceaa; 会被一并包含进来。解释usingnamespace 会将指定命名空间中的所有符号引入当前作用域。当 b.cpp 包含 a.h 时,a.h 中......
  • C++和C中的结构体兼容问题Anonymous non-C-compatible type given name for linkage p
    这个编译错误消息指的是,在typedef声明中引入了一个匿名非C兼容类型,编译器为了链接处理给它了一个名字,但它建议添加一个标签名称来显式命名该类型,以便更好地支持C语言的兼容性和跨文件链接。问题原因在C++中,匿名结构体和匿名联合体是合法的,它们可以在没有显式名称的情况下......
  • C++基础学习3
    //3.常量和变量://生活中的一些数据//有些数据不能变:血型、性别、圆周率//有些数据可以变:年龄、身高、体重、工资//在C语言中的描述://变量:能被改变的量//常量:不能被改变的量//intmain()//{// //创建一个变量// //int=类型、age=变量的名字、=是赋值的意思、23是数值// ......
  • B2067 药房管理
    番外篇:点赞加关注加评论,未来有人请你旅游题目描述对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不......