用于循环字符打印

for loop character printing

本文关键字:打印 字符 循环 用于      更新时间:2023-10-16

。。。。。。。。。。。。。。。。。。。。。嘿,伙计们,我得到了答案。请在底部查看

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个chars组成的数组,也就是说,包含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++风格,但仍然使代码易于阅读。