2017-09-23 94 views
-1

我在做什么错了?我想计算项目的总价格并显示它。 我用for循环描述了我的问题。我要计算物品的总价格

#include<iostream.h> 
#include<conio.h> 

int T,N; 

class item 
{ 
    int quantity; 
    char name[100]; 
    float price; 
    float Total; 
    public: 
    void get_data(); 
    void put_data(); 
    void calculate(); 
    void Total1(); 
}; 



void item::get_data() 
{ 
    cout<<"Enter the name of the item "<<T+1<<" = "; 
    cin>>name; 
    cout<<"Enter the quantity= "; 
    cin>>quantity; 
    cout<<"Enter the price= "; 
    cin>>price; 

    cout<<"\n"; 

} 

void item::put_data() 
{ 
    cout<<"\n"<<name<<"\t\t "<<quantity<<"\t\t "<<price<<"\t\t\t"<<"SR"; 
} 

我想计算物品的总价格,但是当我开始追踪程序时。它不执行函数calculate()的for循环。这就是为什么我无法添加价格变量中存在的值并且无法将其存储在变量Total中。

void item::calculate() 
{ 
    for(T=0;T<N;T++) 
    { 
     Total=Total+price; 
    } 

} 
void item::Total1() 
{ 
    cout<<"\nTotal Amount= "<<Total; 
} 


void main() 
{ 
    int N; 
    clrscr(); 
    cout<<"Enter the Total number of item = "; 
    cin>>N; 
    item i[100]; 
    for(T=0;T<N;T++) 
    { 
     i[T].get_data(); 
    } 

    cout<<"\nName of items"; 
    cout<<"\t\tQuantity "; 
    cout<<"\titem price "; 
    cout<<"\t\tGST "; 

    for(T=0;T<N;T++) 
    { 
     i[T].put_data(); 
    } 

     i[T].calculate(); 


     i[T].Total1(); 


     getch(); 

} 
+0

您是否尝试在'calculate()'(例如'cout << N << endl;')中打印'N'的值?我想你会发现你没有正确初始化它,因为*你有两个同名的变量。* – Beta

+0

我还没有完成它。首先,我必须计算总价格(通过访问价格变量),然后我将在计算的价格上应用GST(商品和服务税)。 – User123

+1

如果要计算所有项目的总价格,该功能应该可能不是项目类别的一部分。现在就像有一罐咖啡豆计算购物车中所有其他物品的总成本。 –

回答

1

你搞砸了很多东西在这里。

一些建议,应使您能够解决您的问题:

1. 避免做这样的事情在全局范围:

int T,N; 

相反声明变量直接在for语句作为指数:

for(int T=0; T<N; T++) 

这会阻止你写erraneous之类的语句

i[T].calculate(); 

这是完全的坚果。 T在循环后没有任何有意义的值,ok,它指向了i []中的最后一个元素。但为什么最后一个元素能够总结所有项目?

  • 正是想想你的容器/包含关系
  • 您使用int T;作为一个指标与所有的项目迭代的容器,但可能是什么意思

    void item::calculate() 
    { 
        for(T=0;T<N;T++) 
        { 
         Total=Total+price; 
        } 
    
    } 
    

    这是项目的成员函数,它应该如何以往任何时候都能够存储在同一容器等物品的价格总结的。你的物品不知道他们在同一个容器中有同物的事实。

    顺便说一句,如果你follower建议1编译器会提到你有什么问题。

    指导意见: 总结不能是项目类的功能。您可以创建一个新的容器类,它为您提供总结和其他内容以及管理项目数组,或者编写一个免费函数,或者作为第一步在main()中对总结进行编码。

    最后会是什么样子(假设你让价格公开):

    int total=0; 
    for(T=0;T<N;T++) 
    { 
        total += i[T].price; 
    } 
    

    或(假设你的价格提供一个getter)

    int total=0; 
    for(T=0;T<N;T++) 
    { 
        total += i[T].price(); 
    } 
    

    ,并使用C++ 11可以使用基于范围的循环

    int total=0; 
    for (const auto & item : items) 
    { 
        total += item.price(); 
    } 
    
    +0

    谢谢schorsch312,非常好的编辑! – DrSvanHay