Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Logic error in my program. Member function containing string not valid?

clarisse_vazclarisse_vaz Member Posts: 1
edited May 2016 in Beginner C/C++
    #include <iostream>
    #include <cmath>
#include <cstring>
using namespace std;
class MyClass
{
private:
int num = 0;
std::string description = 0;

public:
MyClass();
MyClass(int n1, std::string const& n) : num(n1), description(n){}  
int GetNum();
void SetNum(int* Pointer);
string GetDesc();
void SetDesc(string* Pointer2);
int Square();
double SquareRoot();
int Factorial();
bool IsNegative();
};

MyClass::MyClass(){
//nothing
}

    int MyClass::GetNum()
        {
        return num;
    }
    void MyClass::SetNum(int* Pointer)
        {
            *Pointer = num;
        }
                string MyClass::GetDesc()
        {
        return description;
            }
                void MyClass::SetDesc(string* Pointer2)
            { 
                *Pointer2 = description;
            }
                    int MyClass::Square()
                        {
                            return(num * num);
                        }
                        double MyClass::SquareRoot()
                        {
                            {
                                if (num > 0)
                                return sqrt(num);

                                else
                                return 0;
                            }
                        }

                            int MyClass::Factorial()
                             {
                               if (num >= 0 )
                               {
                                  int result = 1;
                                  for (int a = 1; a <= num; a++)
                                  result = result * a;
                                  return result;
                                }
                                 else 
                                 return 0;
                                  }


                                    bool MyClass::IsNegative()
                                    {return (num < 0);
                                    }   
void Display(MyClass b)
{
cout << b.GetNum() << endl;
cout << b.GetDesc() << endl;
cout << b.Square() << endl;
cout << b.SquareRoot() << endl;
cout << b.Factorial() << endl;
cout << b.IsNegative() << endl;
}

int main () 
{    
bool flag = false;
char str1[100], str2[100];

cin >> str1 >> str2;
for (size_t i=0, len = strlen(str1); i < len; i++)
{
    if (i==0 && str1[i] == '-')
        continue;
    if (!isdigit(str1[i]))
    {
    flag = true;
    break;
    }
}

if (!flag)
{
MyClass b(atoi(str1), str2); 
Display(b);
}
else
{
{
    MyClass b; 
    Display(b);
}

return 0;
}

I am receiving no more compiler errors, but there is a logic problem in my program when it produces an output. Please help me track down the illogical error in my program.

Ok So I changed my program but there is another problem. Here is my next sample input: NONE Modern. But I received a message: terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid Abort. The sample output is supposed to be: 0 0 0 1 0 There might be a problem with my string statement. Im not sure how to fix it!

Tagged:
Sign In or Register to comment.