用于循环字符打印
for loop character printing
。。。。。。。。。。。。。。。。。。。。。嘿,伙计们,我得到了答案。请在底部查看
ThAnKs FoR aLl ThOsE wHo TrYiNg tO hElP mE
如何打印在for循环外输入的所有字符?它只打印为循环输入的最后一个字符
在void shop::getdata()中输入所有4个商品名称和价格
此项的输出仅打印void shop::getdata()中最后一个在void shoe::putdata()中输入的项的名称4次
价格输出正确,打印有序。
物品名称有什么问题?
问题:WAP存储5种商品的价格表&打印最大的价格以及所有价格的总和&价格表。
#include<iostream.h>
#include<conio.h>
#include<string.h>
class shop
{
int i;
char item[50];
float price[50];
public:
void getdata();
void putdata();
float sum();
float lar();
};
void shop::getdata()
{
for(i = 0; i <= 4; i++)
{
cout << "Enter the item name:" << "n";
cin >> item;
cout << "Enter price:" << "n";
cin >> price[i];
}
}
void shop::putdata()
{
cout << "ttPRICE LIST" << "n";
cout << "tt**********" << "n";
cout << "ITEM NAMEtttPRICE" << "n";
cout << "*********ttt*****" << "n";
for(i = 0; i <= 4; i++)
{
cout << item << "tttt";
cout << price[i] << "n";
}
}
float shop::sum()
{
float sum = 0;
for( i= 0; i <= 4; i++)
{
sum = sum + price[i];
}
cout << "ttttsum is:" << sum << "n";
return sum;
}
float shop::lar()
{
float lar;
lar = price[0];
for(i = 0; i <= 4; i++)
{
if (price[i] > lar)
lar = price[i];
}
cout << "tttlargest is:" << lar;
return lar;
}
void main()
{
shop x;
int c;
clrscr();
x.getdata();
do
{
cout << "nn1.PRICE LISTn";
cout << "2.SUMn";
cout << "3.LARGESTn";
cout << "4.EXITn";
cout << "Enter your choicen";
cin >> c;
switch (c)
{
case 1:
x.putdata();
break;
case 2:
x.sum();
break;
case 3:
x.lar();
break;
default:
cout << "PRESS ANY KEY TO EXITn";
break;
}
}
while(c >= 1 && c <= 3);
getch();
}
答案
#include<iostream.h>
#include<conio.h>
#include<string.h>
class shop
{
int i;
char item[50];
float price;
float e[10];
public:
void getdata();
void putdata();
float sum();
float lar();
};
void shop::getdata()
{
cout << "Enter the item name:" << "n";
cin >> item;
cout << "Enter price:" << "n";
cin >> price;
}
void shop::putdata()
{
cout << item << "tttt";
cout << price << "n";
}
float shop::sum()
{
float sum = 0;
for( i= 0; i <= 4; i++)
{
cout<<"Enter prices"<<"n";
cin>>e[i];
sum = sum + e[i];
}
cout << "ttttsum is:" << sum << "n";
return sum;
}
float shop::lar()
{
float lar;
lar = e[0];
for(i = 0; i <= 4; i++)
{
if (e[i] > lar)
lar = e[i];
}
cout << "tttlargest is:" << lar;
return lar;
}
void main()
{
shop x[10];
int c,i;
clrscr();
for(i=0;i<=4;i++)
x[i].getdata();
do
{
cout << "nn1.PRICE LISTn";
cout << "2.SUMn";
cout << "3.LARGESTn";
cout << "4.EXITn";
cout << "Enter your choicen";
cin >> c;
switch (c)
{
case 1:
for(i=0;i<=4;i++)
x[i].putdata();
break;
case 2:
x[i].sum();
break;
case 3:
x[i].lar();
break;
default:
cout << "PRESS ANY KEY TO EXITn";
break;
}
}
while(c >= 1 && c <= 3);
getch();
}
很难判断你在问什么(你最好缩进代码,问一个更清晰的问题),但我认为你的问题(好吧,你指的主要问题!)是如何处理item
名称。
您已经声明您的商店包含一个由50个char
s组成的数组,也就是说,包含50个单个字符。由于您有一个由50个price
组成的数组,因此几乎可以肯定您想要一个由50字符串组成的数组。在基本C中,这将是char *item[50]
,一个由50个动态分配的char数组组成的数组。既然您已经将其标记为C++,那么您最好使用string
。
稍微现代化一点的商店会是这样的:
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::ostream;
using std::string;
using std::vector;
class Item {
string m_name;
double m_price;
public:
Item(const string &name, double price)
: m_name(name), m_price(price) {
};
string name() const { return m_name; }
double price() const { return m_price; }
};
class Shop {
vector<Item> m_items;
public:
void readData();
void writeData() const;
double getPriceSum() const;
double getMaxPrice() const;
};
void Shop::readData() {
for (;;) {
string name, end_of_line;
double price;
cout << "Enter the item name (or nothing to finish input): ";
getline(cin, name);
if (name == "") {
break;
}
cout << "Enter the price: ";
cin >> price;
// the previous ">>" left the end-of-line in the stream,
// so read it now.
getline(cin, end_of_line);
m_items.push_back(Item(name, price));
}
}
void Shop::writeData() const {
for (size_t i = 0; i < m_items.size(); i++) {
const Item &item = m_items[i];
cout << item.name() << "t" << item.price() << "n";
}
}
double Shop::getPriceSum() const {
double sum = 0.0;
for (size_t i = 0; i < m_items.size(); i++) {
sum += m_items[i].price();
}
return sum;
}
double Shop::getMaxPrice() const {
double max = 0.0; // assume that all prices are positive
for (size_t i = 0; i < m_items.size(); i++) {
max = std::max(max, m_items[i].price());
}
return max;
}
int main() {
Shop shop;
shop.readData();
shop.writeData();
cout << "sum: " << shop.getPriceSum() << "n";
cout << "max: " << shop.getMaxPrice() << "n";
return 0;
}
它不是完美的C++风格,但仍然使代码易于阅读。
相关文章:
- 打印字符数组地址的正确方法
- c ++控制台应用程序,如何在控制台外部打印字符
- 无法使用 swprintf 在 WCHAR* 中打印字符*
- 存储和打印字符,但输出不是预期的
- 如何使 printf 以与 NSLog 相同的方式打印字符缓冲区?
- 在带有 (void*) 强制转换的字符串中打印字符的内存地址
- C++无法打印字符变量
- 无法打印字符向量C++向量
- 为什么在编辑 fastq 文件并将输出写入新的 fastq 文件时引入不可打印字符?
- C :如何询问文件名并打印字符数组
- 循环中的 Cout 不会按定义的字符逐个打印字符
- (C++) 打印字符数组字符串的单词时出现问题
- 用putchar在屏幕上打印字符
- 在C 中使用继续语句的打印字符
- 在 for 循环 c++ 中打印字符
- 使用while和if递归打印字符
- 打印字符数组 c++
- 如何使用Xcode中的Unicode打印字符╔(和其他字符)
- cout.put() 是否推荐使用 cout<< 打印字符
- C++ 中的密码 |打印字符后删除字符