用于循环字符打印

时间:2011-06-03 14:47:02

标签: c++ loops for-loop char character

.....................嘿嘿嘿嘿,我得答案。请在底部检查....... ..............

ThHnKs可以帮助我们实现目标!

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

  

void shop :: getdata()

中输入所有4个项目名称和价格      

输出仅在 void shop :: putdata()中打印 void shop :: getdata()中最后输入的项目名称4次p>      

价格输出正确,有序打印。

     

项目名称有什么问题?

问题: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 :(得分:1)

有点难以说出你在问什么(你会很好地缩进你的代码并提出一个更清晰的问题),但我认为你的问题(嗯,你指的是主要问题!)是如何你正在处理item名字。

您已宣布您的商店包含50个char s的数组 - 即50个单个字符。由于你有一个50 price的数组,你几乎肯定想要一个包含50个字符串的数组。在基本C中,这将是char *item[50],一个由50个动态分配的char数组组成的数组。但是,由于您已将此标记为C ++,因此最好使用string

答案 1 :(得分: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 ++风格,但仍然使代码易于阅读。