void add(){ cout<<"请输入增加商品数量 \n"; string q;int w;double e; cin>>a; for(int i=0;i<a;i++){ cout <<"请输入商品名字,序号,价格 \n"; cin >>q>>w>>e; g[i].name=q; g[i].num=w; g[i].prices=e; } } void show(){ for(int i=0;i<a;i++){ cout<<"序号"<<g[i].num<<"名字"<<g[i].name<<"价格"<<g[i].prices<<"\n"; } }
时间: 2024-03-31 08:37:30 浏览: 14
根据你提供的代码,add() 函数和 show() 函数都没有明显的问题。其中,add() 函数会要求用户输入商品的数量,然后循环输入每个商品的名字、序号和价格,并将它们存储在 g 数组中。show() 函数会遍历 g 数组,输出每个商品的名字、序号和价格。
因此,如果你在执行 sort1() 函数时出现了输入1直接退出的问题,很可能是其他部分的代码中出现了问题。你可以检查一下 sort1() 函数被调用的位置,以及 sort1() 函数内部的实现是否有误。如果还有其他的问题,请提供更多的信息,我会尽力帮助你解决问题。
相关问题
void add(){ cout<<"请输入增加商品数量 \n"; int a;string q;int w;double e; cin>>a; for(int i=0;i<a;i++){ cout <<"请输入商品名字,序号,价格 \n"; cin >>q>>w>>e; g[a].goods(q,w,e); } } void sort(){ for(int i=0;i<10;i++){ g[11]; if(g[i].prices>g[i+1].prices){ g[11]=g[i]; g[i]=g[i+1]; g[i+1]=g[11]; //TODO } //TODO } }我想让sort()函数能读取add()函数中的a,如何更改
要让 `sort()` 函数能够读取 `add()` 函数中的变量 `a`,可以将 `a` 定义为全局变量,这样 `sort()` 函数就可以直接访问到它了。具体的实现方法如下所示:
```cpp
#include <iostream>
#include <string>
using namespace std;
struct Goods {
string name;
int id;
double prices;
};
Goods g[100]; // 定义一个全局的商品数组
int a; // 定义一个全局的变量 a,用于记录要增加的商品数量
void add() {
cout << "请输入增加商品数量:";
cin >> a;
for (int i = 0; i < a; i++) {
string q;
int w;
double e;
cout << "请输入商品名字,序号,价格:";
cin >> q >> w >> e;
g[i].name = q;
g[i].id = w;
g[i].prices = e;
}
}
void sort() {
for (int i = 0; i < a - 1; i++) { // 注意这里是 a-1,因为最后一个元素不需要比较
if (g[i].prices > g[i + 1].prices) {
Goods temp = g[i];
g[i] = g[i + 1];
g[i + 1] = temp;
}
}
}
int main() {
add(); // 先调用 add() 函数来增加商品
sort(); // 然后调用 sort() 函数来对商品进行排序
// 输出排序后的商品信息
for (int i = 0; i < a; i++) {
cout << g[i].name << " " << g[i].id << " " << g[i].prices << endl;
}
return 0;
}
```
在这段代码中,将变量 `a` 定义为全局变量,这样在 `add()` 函数中对它的赋值操作就可以影响到 `sort()` 函数。在 `add()` 函数中输入要增加的商品数量,并将其赋值给全局变量 `a`。在 `sort()` 函数中,通过访问全局变量 `a` 来获取要排序的商品数量,然后进行排序。最后在 `main()` 函数中对商品数组进行遍历输出,从而展示排序后的商品信息。
#include <iostream> #include<math.h> #include <vector> //后续使用容器vector需要 #include <math.h>//进行数学运算需要 #include <fstream> using namespace std; class Goods{ string name; int num; double prices; public: Goods(string a,int b,double c){ name=a;num=b;prices=c; } void shows(){ cout <<"序号"<<num<<"名称"<<name<<"价格"<<prices<<"\n"; } }; void jie(){ printf("1 登录 \n"); printf("2 商品信息管理 \n"); printf("3 权限管理 \n"); printf("4 退出 \n"); } void jie2(){ printf("1 增加商品 \n"); printf("2 修改商品 \n"); printf("3 删除商品 \n"); printf("4 退出 \n"); } void add(){ cout<<"请输入增加商品数量 \n"; int a;string q;int w;double e; cin>>a; Goods g[a]; for(int i=0;i<a;i++){ cout <<"请输入商品名字,序号,价格 \n"; cin >>q>>w>>e; g[a].Goods(q,w,e); }帮我查错
在您的 add 函数中,您尝试使用一个变量 `a` 来定义一个数组的大小,但是在 C++ 中,数组的大小必须是一个常量表达式,也就是在编译时就能确定的值,不能使用变量。如果您需要动态确定数组大小,可以使用 `vector` 来代替数组。另外,在您的循环中,应该使用 `i` 作为下标,而不是 `a`。修改后的代码如下:
```c++
void add(){
cout << "请输入增加商品数量:\n";
int a;
cin >> a;
vector<Goods> goodsList;
for (int i = 0; i < a; i++){
string name;
int num;
double prices;
cout << "请输入商品名字、序号和价格:\n";
cin >> name >> num >> prices;
Goods g(name, num, prices);
goodsList.push_back(g);
}
cout << "增加商品成功!\n";
}
```
然后,您可以在其他函数中以类似的方式使用 `vector` 来存储商品信息。同时,为了更好地维护商品信息,建议将 `Goods` 类中的成员变量设置为私有,并提供相应的公有成员函数来访问和修改商品信息。
阅读全文