单步调试正确,为什么执行时不好使,,,菜鸟求大神
1、编写一个类用来实现以下功能:
?根据输入的参数申请相应的空间
?用100以内的随机数填满空间,并输出这些随机数
?对空间内的数据按从小到大进行排序
?输出排序后的结果
2、在1的基础上增加以下功能:
?使用宏定义字符,此字符用来表示类对象的个数(不超过100个)
?用10以内的随机数作为类对象需要申请的空间
?输出类对象的个数,及所有类对象内生成的随机数的个数
?根据对象的生成顺序,输出排序后的字符,即第一个对象输出第一个数,第二个对象生成第二个数,依此类推。
单步执行输出的结果是正确的, ctrl f5 结果怎么不一样??????????????????????????
int main(void)
{
Apply m_apply;
m_apply.SetNumber();
m_apply.ShowSortAfter();
}
#include <iostream>
#include <time.h>
#define N 100;
using namespace std;
class Appmemory
{
public:
Appmemory();
~Appmemory();
virtual void SetNum(void);
virtual bool isSettrue(void);
bool Applymemory(void);
bool Sortmemory(void);
virtual void ShowResult(void);
virtual void Delete(void);
protected:
int m_num;
int **m_pointor;
};
class Apply:public Appmemory
{
public:
Apply();
~Apply();
void SetNum(void);
void SetNumber(void);
bool isSettrue(void);
void ShowResult(void);
bool SetSortMemory(void);
void ShowSortAfter(void);
void Delete(void);
private:
int m_number;
Apply **m_pointer1;
};
#include "Appmemory.h"
Appmemory::Appmemory()
{
m_num = 0;
m_pointor = NULL;
}
Appmemory::~Appmemory()
{
}
void Appmemory::Delete(void)
{
for(int index = 0; index < m_num; index++)
{
delete *(m_pointor + index);
*(m_pointor + index) = NULL;
}
delete m_pointor;
m_pointor = NULL;
}
void Appmemory::SetNum(void)
{
cout << "Please enter how many you want as a number:";
cin >> m_num;
if (cin.fail())
{
cin.clear();
cin.ignore();
m_num = -1;
}
return;
}
bool Appmemory::isSettrue(void)
{
bool flag = true;
if (m_num <= 0)
{
flag = false;
}
else
{
flag = true;
}
return(flag);
}
bool Appmemory::Applymemory(void)
{
bool flag = true;
if (false == isSettrue())
{
flag = false;
}
else
{
int index = 0;
srand((unsigned)time(NULL));
m_pointor = new int*[m_num];
if (NULL == m_pointor + index)
{
cout << "Apply failed!";
flag = false;
}
else
{
for (; index < m_num; index++)
{
*(m_pointor + index) = new int(rand()%100);
if (NULL == *(m_pointor + index))
{
cout << "Apply failed!";
break;
}
else
{
continue;
}
}
if (index < m_num)
{
m_num = index;
flag = false;
}
else
{
flag = true;
}
}
}
return(flag);
}
bool Appmemory::Sortmemory(void)
{
bool flag = true;
if (false == Applymemory())
{
flag = false;
}
else
{
int temp = 0;
for (int index = 0; index < m_num -1; index++)
{
for (int sign = 0; sign < m_num - 1 - index; sign++)
{
if (**(m_pointor + sign) > **(m_pointor + sign + 1))
{
temp = **(m_pointor + sign);
**(m_pointor+sign) = **(m_pointor + sign + 1);
**(m_pointor + sign + 1) = temp;
}
}
}
flag = true;
}
return(flag);
}
void Appmemory::ShowResult(void)
{
if (false == Sortmemory())
{
cout << "Error input!" <<endl;
}
else
{
cout << "After sort:";
for (int index = 0; index < m_num; index++)
{
cout << **(m_pointor + index) << " ";
}
cout << endl;
}
Delete();
}
Apply::Apply()
{
m_number = 0;
m_pointer1 = NULL;
}
void Apply::Delete(void)
{
for(int index = 0; index < m_number; index++)
{
for(int ind = 0; ind < m_num; ind++)
{
delete *(m_pointor + ind);
*(m_pointor + ind) = NULL;
}
delete m_pointor;
m_pointor = NULL;
delete *(m_pointer1 + index);
*(m_pointer1 + index) = NULL;
}
delete m_pointor;
m_pointor = NULL;
}
Apply::~Apply()
{
}
void Apply::SetNum(void)
{
srand((unsigned long)time(NULL));
m_num = rand()%10;
}
void Apply::SetNumber(void)
{
cout << "Please Enter you want as a number:";
cin >> m_number;
if (cin.fail())
{
cin.clear();
cin.ignore();
m_number = -1;
}
}
bool Apply::isSettrue(void)
{
bool flag = true;
srand((unsigned long)time(NULL));
m_num = rand()%10;
if(m_num <= 0 || m_num > 10)
{
flag = false;
}
else
{
flag = true;
}
return(flag);
}
bool Apply::SetSortMemory(void)
{
bool flag = true;
int index = 0;
m_pointer1 = new Apply *[m_number];
if (NULL == m_pointer1)
{
return false;
}
for (; index < m_number; index++)
{
*(m_pointer1 +index) = new Apply;
if (NULL == *(m_pointer1 + index))
{
break;
}
else
{
if (false ==(**(m_pointer1 +index)).Sortmemory() || m_number < 0 || m_number > 10)
{
break;
}
else
{
continue;
}
}
}
if (index < m_number)
{
m_number = index;
flag = false;
}
else
{
flag = true;
}
return(flag);
}
void Apply::ShowResult(void)
{
cout << "After sort:";
for (int index = 0; index < m_num; index++)
{
cout << **(m_pointor + index) << " ";
}
cout << endl;
}
void Apply::ShowSortAfter(void)
{
if (false == SetSortMemory())
{
cout << "error input" << endl;
}
else
{
int index = 0;
for (; index < m_number; index++)
{
(**(m_pointer1 +index)).ShowResult();
}
}
Delete();
}
[解决办法]
你是指结果不一样还是指崩溃了?
结果不一样很正常啊,因为你的数都是随机的!每次运行当然不一样!
[解决办法]
srand每次随机一个 每次都不一定相同 但不否定存在相同的概率
[解决办法]
请将srand((unsigned)time(NULL));只在程序初始化时调用一次。