代码将无法运行..无法运行bool函数

时间:2014-01-19 17:05:20

标签: c++ class boolean

我有以下代码:

#include <iostream>
#include <string>
#include <cstring>
#include <stdlib.h>

using namespace std;

class sekuence
{
  public:

  sekuence() {
    string emra[5][20];
    int m=0;
  }

void shto (){
    int i;
    int j;
    char temp[20];
    cout << "=============================="<<endl
         << "Shkruani emrat qe doni te shtoni ne vektor"<<endl;
    for(i=0; i < 5; i++){
        cin >> emra[i];
        m++;
    }
    for(i=0; i<5; i++)
    {
        for( j=1; j<5; j++){
            if(strcmp(emra[j-1],emra[j]) > 0) {
                strcpy(temp,emra[j-1]);
                strcpy(emra[j-1],emra[j]);
                strcpy(emra[j],temp);
            }
        }
    }
}
void print(){
    for(int i=0; i<5 ; i++){
        cout<<endl<<emra[i];
    }
    cout <<m;
}  

bool kerko (const char *gjej)
{
    for(int i=0; i<5; i++)
    {
        if(strcmp(emra[i],gjej) == 0 )
            return true;
        return false;
    }
}

int n (){return m;}

private:
    int m;
    char emra[5][20];
};




int main()
{   char* gjej;
    int x;
    sekuence d;

do{
cout<<endl << " =========================" << endl;
cout<<"1 - Funksioni i shtimit"   <<endl;
cout<<"2 - Funksioni i afishimit" <<endl;
cout<<"3 - Funksioni i kerkimit"  <<endl;
cout<<"4 - Funksioni i fshirjes"  <<endl;
cout<<"5 - Dalje nga programi"    <<endl<<endl;
cout<<"====================================" <<endl;
cin >> x;
switch (x)
{
case 1:
    d.shto();
    break;
case 2:
    d.print();
    break;
case 3:
    cout<<"==================================" <<endl
    << "Shkruani emrin qe doni te kerkoni"<<endl;
    cin >> gjej;
    d.kerko(gjej);
    break;
case 4:
    break;
case 5:
    cout << "Dalje nga Programi" <<endl;
    exit (0);
default:
    cout <<"Zgjedhje e gabuar";
    return 0;
}}
while (x != 5);
    return 0;

}

每次我尝试运行bool函数我都会收到错误..我不该做什么.. 当我尝试进入nam我想找到函数bool kerko()并退出编程..并希望找到我想要查找的字符 它打开了visual studio调试器.. 希望有人可以帮助我..这是第一次与班级合作......我真的无法处理这个...提前谢谢。

2 个答案:

答案 0 :(得分:1)

您正在尝试访问gjej(char *)但没有分配内存。尝试使用new

分配一些内存
char* gjej = NULL;
gjej = new char[NumberOfChars];

修改:现在使用new代替malloc ..

std::string会更好......

答案 1 :(得分:0)

根据您对kerko函数的缩进,其中一个return语句应移出for循环:

bool kerko (const char *gjej)
{
    for(int i=0; i<5; i++)
    {
        if(strcmp(emra[i],gjej) == 0 )
            return true;
    }
    //*** Note the new location.
        return false;
}

您拥有的布局使bool函数始终在循环的第二次迭代之前返回。