开发者

for loop character printing [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. Closed 11 years ago.

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

ThAnKs FoR aLl ThOsE wHo TrYiNg tO hElP mE!

How to print all the character outside the for-loop that input inside for-loop? It only prints the last character entered in for-loop

input all 4 names of items and price in void shop::getdata()

output of this only prints the name of item that entered last in void shop::getdata() for 4 times in void shop::putdata()

output of price is correct,it prints orderly.

what's the problem with the name of item?

Question:WAP to store pricelist of 5 items & print the largest price as well as the sum of all prices & pricelist also.

#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();
}


It's a little hard to tell what you're asking (you would do well to indent your code and ask a clearer question), but I think your problem (well, the main one you're referring to!) is how you're handling item names.

You've declared your shop to contain an array of 50 chars - that is, 50 single characters. Since you have an array of 50 prices, you almost certainly wanted an array of 50 strings. In basic C, that would be char *item[50], an array of 50 dynamically-allocated char arrays. Since you've tagged this as C++, though, you're better off using a string.


A slightly more modern shop would look like this:

#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;
}

It is not perfect C++ style, but still makes the code easy to read.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜