在披萨饼题目下,使用new为结构体分配内存,而不是声明一个结构体变量。另外,让程序在请求 输入披萨饼公司之前输入披萨饼的直径。
时间: 2024-09-18 20:17:34 浏览: 58
在C++中,如果你想动态地为结构体分配内存而不是预先声明一个固定大小的结构体变量,你可以使用`new`关键字创建一个动态数组或单独的对象。在这个披萨饼的例子中,假设我们想让用户先输入披萨的直径,然后再根据用户的输入来决定是否创建新的披萨实例,我们可以这样做:
```cpp
#include <iostream>
#include <string>
using namespace std;
struct Pizza {
string companyName;
double diameter;
float weight;
};
int main() {
int num_pizzas;
cout << "请输入披萨的数量: ";
cin >> num_pizzas;
Pizza* pizzas = new Pizza[num_pizzas]; // 动态分配内存
for (int i = 0; i < num_pizzas; i++) {
cout << "请输入第 " << (i+1) << " 个披萨的直径(单位: cm): ";
cin >> pizzas[i].diameter;
// 这里可以根据用户需求添加对直径或其他信息的输入,目前仅保存直径
}
// 现在你可以继续询问用户公司名称并将其添加到已有的pizzas数组中
for (int i = 0; i < num_pizzas; i++) {
cout << "请输入第 " << (i+1) << " 个披萨的公司名称: ";
getline(cin, pizzas[i].company_name);
cout << "请输入第 " << (i+1) << " 个披萨的重量(单位: g): ";
cin >> pizzas[i].weight;
}
// 显示所有披萨信息
for (int i = 0; i < num_pizzas; i++) {
cout << "披萨 " << (i+1) << " 的信息:\n";
cout << "公司名称: " << pizzas[i].company_name << "\n";
cout << "直径: " << pizzas[i].diameter << "cm\n";
cout << "重量: " << pizzas[i].weight << "g" << endl;
}
delete[] pizzas; // 释放内存
return 0;
}
```
在这个程序中,我们首先询问用户披萨的数量,然后动态分配了对应数量的`Pizza`结构体数组。之后按照用户输入顺序收集披萨信息。记得在结束时使用`delete[]`来释放动态分配的内存。
阅读全文