刚接近C ++编程。 我必须做的练习:“在商店中,有500种产品由ID,产品名称,品牌,货架(0到34)标识。使用局部变量实现两个功能: - 加载数据; - 找到大多数产品所在的架子。“ 这就是我做的。 (我用了10而不是500)。
#include <iostream>
#include <string>
using namespace std;
class product {
public:
string ID, prod_name, brand;
float price;
int shelf;
void data_load();
int freq_shelf();
};
product a[10];
void data_load() {
int i;
cout << "Recording ten products" << endl;
for(i=0; i<10; i++) {
cout << "Id product "<<i<<":" << endl;
cin >> a[i].ID;
cout << "Name product "<<i<<":" << endl;
cin >> a[i].prod_name;
cout << "Brand product "<<i<<":" << endl;
cin >> a[i].brand;
cout << "Price product "<<i<<":" << endl;
cin >> a[i].price;
cout << "Shelf (shelves 0-34)"<<i<<":" << endl;
cin >> a[i].shelf;
if (a[i].shelf<0 || a[i].shelf>34) {
cout << "I said 0 a 34" << endl;
}
}
}
int freq_shelf() {
int coor[2]; //first element should be the number of the shelf, second one how many times that shelf is found
int i, j, k, c;
int t[10]={0,0,0,0,0,0,0,0,0,0}; //kth-element indicates the number of presences of the ith-element
for (k=0; k<10; k++) {
for (i=0; i<10; i++) {
for (j=0; i<10; j++) {
if (a[i].shelf==a[j].shelf) {
t[k]++;
}
}
}
}
int max=t[0];
for (c=1; c<10; c++)
{
if (t[c]>max)
{
max=t[c]; //c should be the number of the shelf, max how many times that shelf is found
coor[2]=coor[c, max];
cout << "The most frequent shelf is "<<coor[1]<<". It is found "<<coor[2]<<" times." << endl;
return 0;
}
}
}
int main()
{
void data_load();
int freq_shelf();
system("PAUSE");
return 0;
}
使用Microsoft Visual C ++ 2010在调试和编译时我没有收到任何错误,但命令提示符直接转到“按任意键继续”。 有谁能解释为什么? 感谢您的耐心和帮助。
答案 0 :(得分:7)
您声明了一个函数而不是调用它;
更改
int main()
{
void data_load();
要
int main()
{
data_load();
答案 1 :(得分:1)
除了提供的回复。
system("PAUSE")
需要
<stdlib.h>
系统函数的标题。
除了视觉工作室之外,
#include<conio.h>
int main()
{
_getch(); // or getch();
return 0;
}
使输出保持在屏幕上。
此外,Bartek的答案是正确的,并加入其中
int freq_shelf();
将其更改为,
freq_shelf();
您可以在此简单示例中看到函数的详细信息
http://www.cplusplus.com/doc/tutorial/functions/
而不是推荐外部网站,让我举个例子。
#include<iostream>
using namespace std;
void Test()
{
cout << "Function runs nicely";
}
int add(int a, int b)
{
return a+b;
}
int main()
{
int x;
x = add(2, 3);
cout << "Integer Function Result\t" << x <<endl;
Test();
return 0;
}
你可以看到main中的函数调用不需要类型声明。
这些是我注意到的基本事情,干杯! :)
答案 2 :(得分:0)
你可能想要:
data_load();
freq_shelf();`
在main
而不是
void data_load();
int freq_shelf();
因为您想调用这些功能。在调用函数时不要添加返回类型。