首页 文章

for循环字符打印[关闭]

提问于
浏览
-3

.....................HEY GUYS,I GOT THE ANSWER.PLEASE CHECK OUT AT BOTTOM.....................

ThAnKs可以满足您的需求!

如何打印for循环中输入的for循环外的所有字符?它只打印在for循环中输入的最后一个字符

在void shop :: getdata()的输出中输入所有4个项目的名称和价格只输出在void shop :: getdata()中最后输入的项目的名称4次在void shop :: putdata()输出价格是正确的,它打印有序 . 项目名称有什么问题?

Question :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 << "\t\tPRICE LIST" << "\n";
  cout << "\t\t**********" << "\n";
  cout << "ITEM NAME\t\t\tPRICE" << "\n";
  cout << "*********\t\t\t*****" << "\n";
  for(i = 0; i <= 4; i++)
  {
    cout << item << "\t\t\t\t";
    cout << price[i] << "\n";
  }
}

float shop::sum()
{
  float sum = 0;
  for( i= 0; i <= 4; i++)
  {
    sum = sum + price[i];
  }
  cout << "\t\t\t\tsum 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 << "\t\t\tlargest is:" << lar;
  return lar;
}

void main()
{
  shop x;
  int c;
  clrscr();
  x.getdata();
  do
  {
    cout << "\n\n1.PRICE LIST\n";
    cout << "2.SUM\n";
    cout << "3.LARGEST\n";
    cout << "4.EXIT\n";
    cout << "Enter your choice\n";
    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 EXIT\n";
      break;
    }
  }
  while(c >= 1 && c <= 3);
  getch();
}

ANSWER

#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 << "\t\t\t\t";
    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 << "\t\t\t\tsum 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 << "\t\t\tlargest is:" << lar;
  return lar;
}

void main()
{
  shop x[10];
  int c,i;
  clrscr();
  for(i=0;i<=4;i++)
  x[i].getdata();
  do
  {
    cout << "\n\n1.PRICE LIST\n";
    cout << "2.SUM\n";
    cout << "3.LARGEST\n";
    cout << "4.EXIT\n";
    cout << "Enter your choice\n";
    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 EXIT\n";
      break;
    }
  }
  while(c >= 1 && c <= 3);
  getch();
}

2 回答

  • 0

    稍微更现代的商店看起来像这样:

    #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风格,但仍然使代码易于阅读 .

  • 1

    它__19594_重新询问(你会很好地缩进你的代码并提出更清晰的问题),但我认为你的问题(好吧,主要是你're referring to!) is how you'处理 item 名称 .

    你已经宣布你的商店包含50个 char 的数组 - 即50个单个字符 . 由于你有一个50 price 的数组,你几乎肯定想要一个包含50个字符串的数组 . 在基本C中,这将是 char *item[50] ,一个由50个动态分配的char数组组成的数组 . 因为've tagged this as C++, though, you'最好使用string .

相关问题