首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

单步调试正确,为什么执行时不好使,初学者求大神

2012-04-17 
单步调试正确,为什么执行时不好使,,,菜鸟求大神1、编写一个类用来实现以下功能:?根据输入的参数申请相应的

单步调试正确,为什么执行时不好使,,,菜鸟求大神
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));只在程序初始化时调用一次。

热点排行