[英]c++ program gives an error“ the value of 'i' is not initiated”
此代码给出错误“ i”未启动,有人可以帮忙吗? 该程序很容易编译。 在运行时,每个开关盒均可工作,但2个除外。
#include<iostream>
using namespace std;
const int m=50;
class ITEMS
{
int itemCode[m];
float itemPrice[m];
int count;
public:
void CNT(void)
{
count=0;
}
void getItem(void);
void displaySum(void);
void remove(void);
void displayItems(void);
};
使用的功能。
void ITEMS :: getItem (void)
{
cout<<"entr itm cod";
cin>> itemCode[count];
cout<<"entr itm cost";
cin>> itemPrice[count];
count++;
}
问题在这里。 此函数“ displaySum(void)”必须通过汇总所有项目的价格来给出输出
void ITEMS ::displaySum (void)
{
float sum =0;
for (int i; i<count;i++)
sum+=itemPrice[i];
cout<<"\n total value"<< sum<<endl;
}
void ITEMS ::remove (void)
{
int a;
cout<< "entr itm cod";
cin>> a;
for(int i=0; i<count;i++)
if (itemCode[i] == a)
itemPrice[i]=0;
}
void ITEMS :: displayItems(void)
{
cout<< "\n Code price\n";
for(int i=0;i<count;i++)
{
cout<<"\n" << itemCode[i];
cout<<" " << itemPrice[i];
}
cout<< endl;
}
主功能。 这就是我所说的上述所有功能。 使用主要功能。
int main()
{
ITEMS order;
order.CNT();
int x;
do
{
cout<< "select any opt"
<<"\n 1. add"
<<"\n 2. display total valu"
<<"\n 3. delete an item"
<<"\n 4. display all"
<<"\n 5. quit?
<<"\n number ?";
cin>> x;
switch(x)
{
case 1: order.getItem(); break;
case 2: order.displaySum(); break;
case 3: order.remove(); break;
case 4: order.displayItems(); break;
case 5: break;
default: cout<< "try again";
}
}while(x!=5);
return 0;
}
在displaySum
您具有:
for (int i; i<count;i++)
sum+=itemPrice[i];
i
没有在这里初始化。 那可能不是您想要的。
另外,请确保注意编译器告诉您的内容。 例如,如果您使用的是gcc,则可以使用选项“ -Wall -Werror”,该选项为常见的编程错误生成警告,并将其报告为错误。 IMO这是一个好习惯,因为它迫使您至少要检查一下该点,看看您是否确实犯了编程错误。
我不知道您使用的是哪个编译器,但我不知道在打印警告时没有至少提供行号的单个编译器。 使用可用的资源。 编译器几乎可以肯定地告诉您确切的错误以及错误的发生位置。 尽管您使用的表达是合法的,但这肯定是错误的。
int i;
不初始化局部变量,进行实验并打印出来,您将看到它充满了以前的堆栈垃圾。 因此它可能不会满足for(;;)条件,并且永远不会进入循环
使用
int i = 0;
在displaySum
您没有初始化变量i
,因此它包含垃圾值,并且您的循环将无法正常运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.