Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters
Register

Reply
 
LinkBack Thread Tools
Old 31.03.2003, 07:02   #1
Авик
 
CyberJoe's Avatar
 
Join Date: 07 2002
Location: Yerevan
Age: 30
Posts: 1,348
Downloads: 2
Uploads: 0
Reputation: 9 | 0
Default программа вылетает при выполнении

Почему программа вылетает при выполнении?
Сам писал сам придумал а эта ... не работает что не то?
Если кому нужно поясняю задачу:
есть n колец связанных друг с другом поочередно вводится
какое кольцо с каким связанно, потом вводится номера двух колец x и y.
найти максимальное количество колец которые можно удалить
так чтобы цепочка с x до y осталась чела.
---------------Rings.cpp-----------------------------------------------
#include <iostream.h>
#include "Classes.h"

int main()
{
Ring Rings[100]; //сами кольца
int RingsCount; //количество колец
int AnswersCount; //служебная переменная
int Who; //служебная переменная
int endof = 0; //служебная переменная
int Step = 1; //количество колец с x до y
int StartPosition, EndPosition; //x и y
cout << "How many Rings do you have" << endl;
cin >> RingsCount;
cout << "How many conversions do you have" << endl;
cin >> AnswersCount;
//ввод
for (int i = 0; i < AnswersCount; i++)
{
cout << "Ring Numer:" << endl;
cin >> Who;
cout << "His Friend Number is:" << endl;
cin >> Rings[Who].FriendsNumbers[Rings[Who].FriendCount++];
}
//ввод окончен
cout << "Start Up Position" << endl;
cin >> StartPosition;
cout << "End Position" << endl;
cin >> EndPosition;
Rings[StartPosition].StepCount = Step;
Rings[EndPosition].StepCount = 254;
while(endof == 0)
{
// берем все кольца смотрим их друзей и если они равны Step то
//присваеваем кольцам заначение Step+1
for (int j = 0; j < RingsCount; j++)
{
for (int h = 0; h < Rings[j].FriendCount; h++)
{
if (Rings[Rings[j].FriendsNumbers[h]].StepCount == Step)
{
Rings[j] = Step+1;
}
if (Rings[Rings[j].FriendsNumbers[h]].StepCount == 254)
{
endof = 1;
}
}
}
Step++;
}
cout << "We Can Break " << RingsCount - Step - 1 << " Ring(s)" << endl;

return 0;
}
---------------Classes.h-----------------------------------------------
#ifndef _Rings_Classes_
#define _Rings_Classes_

class Ring
{
public:
int FriendCount;
int FriendsNumbers[100];
int StepCount;
//конструктор
Ring(int FC = 0)
{
FriendCount = FC;
}
};

#endif
----------------------------------------------------------------------
__________________
вот собственно все, что я хотел сказать.
Reply With Quote
Old 31.03.2003, 08:05   #2
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Downloads: 0
Uploads: 0
Reputation: 18 | 5
Post

код страшный, честно говоря Потому и не работает.

писать стока для простенькой задачки нет нужды.

например, ты бы мог на все свои 100 классов держать одну таблицу 100x100, где заполнял бы, кто кому другом является.

а сейчас эта таблица на каждый класс - своя.

мог бы объявить "static int FriendsNumbers[10][10];"


далее, вместо того, чтоб заводить переменную-флаг, мог бы использовать какое-нить значение, напр. "-1", в качестве признака (спец. код 254 - кажется, я правильно понял - это какой-то спец. код, по которому ты определяешь что-то)
и т.д.


думай проще - программировать будет легче /старая кельтская поговорка/
Reply With Quote
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 21:53.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.