基本C ++练习(命令提示符不显示任何cout。没有编译器错误)

时间:2014-09-23 15:58:10

标签: c++

刚接近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在调试和编译时我没有收到任何错误,但命令提示符直接转到“按任意键继续”。 有谁能解释为什么? 感谢您的耐心和帮助。

3 个答案:

答案 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();

因为您想调用这些功能。在调用函数时不要添加返回类型。