Большой Воронежский Форум
» Программирование>Странный баг C++
liness 15:50 25.02.2008

Сообщение от :
#include "iostream.h"
#include "conio.h"
using namespace std;
struct VarType
{
int Importance;
VarType *Address;
};
struct TypeArray
{
VarType* VarArray;
VarType* AddressFirstElement;
};

//-----------------------------------------------ClassQueue
class Queue
{
TypeArray Array[2][1];
public:
Queue()
{
Array[1][1].VarArray=NULL;
Array[2][1].VarArray=NULL;
}
void AddQueue(int Importance,bool EvenOrUnEven)
{
if (!EvenOrUnEven) //True(Even)
{
VarType* EvenQueue = new VarType;
EvenQueue->Importance=Importance;
EvenQueue->Address=Array[2][1].VarArray;
if (!Array[2][1].VarArray)
Array[2][1].AddressFirstElement=EvenQueue;
Array[2][1].VarArray=EvenQueue;
cout<<"Add in Even"<<endl;
}
else //False(UnEven)
{
VarType* UnEvenQueue = new VarType;
UnEvenQueue->Importance=Importance;
UnEvenQueue->Address=Array[1][1].VarArray;
if (!Array[1][1].VarArray)
Array[1][1].AddressFirstElement=UnEvenQueue;
Array[1][1].VarArray=UnEvenQueue;
cout<<"Add in UnEven"<<endl;
}

};
void UnEvenViewQueue()
{
VarType* TemporaryVar=Array[2][1].VarArray;
while(TemporaryVar)
{
cout<<TemporaryVar->Importance;
TemporaryVar=TemporaryVar->Address;
}
cout<<endl;
};
void EvenViewQueue()
{
VarType* TemporaryVar=Array[1][1].VarArray;
while(TemporaryVar)
{
cout<<TemporaryVar->Importance;
TemporaryVar=TemporaryVar->Address;
}
cout<<endl;
};

~Queue(){}
};
//-----------------------------------------------ClassHesh
class Heshublic Queue
{
public:
void Start();
};
//-----------------------------------------------Start(Hesh)
void Hesh::Start()
{
short int n,i;
Queue Var;
int Importance;
cout<<"Will Enter amount an element:"<<endl;
cin>>n;
for(i=0;i<n;i++)
{
cout<<"Will enter element a queue:"<<endl;
cin>>Importance;
Var.AddQueue(Importance,Importance%2);
cout<<n<<endl;//При вводе чётного числа меняется значение n
}
}

//-----------------------------------------------Main
int main()
{
Hesh Var;
Var.Start();
cout<<"UnEven queue: ";
Var.UnEvenViewQueue();
cout<<"Even queue: ";
Var.EvenViewQueue();

system("PAUSE");
return 0;
}

собственно такой код, ошибок не нашёл, но они есть тк вычисления не верны..если кто сможет помочь заранее благодарен.
liness 16:13 25.02.2008
на мой взгляд что то при наследовании.
Part!zan 21:41 25.02.2008
liness, вообще-то массивы в С++ с 0 индексируются...
The_God 22:56 25.02.2008

Сообщение от liness:
TypeArray Array[2][1];

Array[1][1].VarArray=NULL;
Array[2][1].VarArray=NULL;

после этих строк у тебя программа уже имеет право делать всё что хочет вплоть до форматирования диска
liness 23:40 25.02.2008
Part!zan, спасибо огромное, знал но что то не обратил внимание, что самое обидное.+обратил внимание на код - много кривоты увидел.

Сообщение от The_God:
после этих строк у тебя программа уже имеет право делать всё что хочет вплоть до форматирования диска

это имхо слишком, но вообще стыдно стало...тема закрыта..
Вверх