Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2012, 18:52   #1
Митовей
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 30
По умолчанию Пропадают значения переменных

Вообщем, это класс отвечающий за построение сети Петри:

Код:

// код пропускаем

void petri_net::build(int *ps, int *ts,  int k, int str, float cordx, float cordy) {
//	place a(cordx, cordy, shoulder, scaling, left_right, up_down, shoul);
//	a.print();
//	cout << scaling;

	int inter_step;

	if(k == 1) 
	{
		if(ps[str] == 1) {
			int number = 0;
			int *numb_pos = new int[i];
			float pos = 10.0;
			cout << shoulder;
			place a(cordx, cordy, shoulder, scaling, left_right, up_down, shoul);
			a.print();
			places[str] = a;
			ps[str] = 0;

			for(step=0; step<j; step++)
				if (tab2[str][step] != 0 && ts[step] != 0) {
					numb_pos[number] = step;
					number++;
				}

			float nach_pos = cordx-number*10.0;

			for(step=0; step<number; step++) ts[numb_pos[step]] = 0;

			for(step=0; step<number; step++) {
				if(step==0) nach_pos += pos;
				else nach_pos += 2*pos;
				ts[numb_pos[step]] = 1;
				inter_step = step;
				build(ps, ts, -1, numb_pos[step], nach_pos, cordy+20.0);
				step = inter_step;
				ts[numb_pos[step]] = 0;

			}
		}
	}
	else {
		if(ts[str] == 1) {
			int number = 0;
			int *numb_pos = new int[i];
			float pos = 10.0;
			transation a(cordx, cordy, shoulder, scaling, left_right, up_down, shoul);
			a.print();
			transations[str] = a;
			ts[str] = 0;

			for(step=0; step<j; step++)
				if (tab1[str][step] != 0 && ps[step] != 0) {
					numb_pos[number] = step;
					number++;
				}

			float nach_pos = cordx-number*10.0;

			for(step=0; step<number; step++) ps[numb_pos[step]] = 0;

			for(step=0; step<number; step++) {
				if(step==0) nach_pos += pos;
				else nach_pos += 2*pos;
				ps[numb_pos[step]] = 1;
				inter_step = step;
				build(ps, ts, 1, numb_pos[step], nach_pos, cordy+20.0);
				step = inter_step;
				ps[numb_pos[step]] = 0;
			}
		}
	}

	for(step1=0; step1<j; step1++)
		for(step2=0; step2<i; step2++) {
			int num = tab1[step1][step2];
			for(step=0; step<num; step++) spit(transations[step2], places[step1]);
		}


}
А вот кейборд функция:

Код:
void keyboard (unsigned char key, int x, int y)
{
   switch (key) {
      case 'a':
	  case 'A':
	  case 'ф':
	  case 'Ф':
         c.shoulder = ((int)c.shoulder + 10) % 360;
         glutPostRedisplay();
         break;
      case 'd':
	  case 'D':
	  case 'в':
	  case 'В':
         c.shoulder = ((int)c.shoulder - 10) % 360;
         glutPostRedisplay();
		 break;
	  case 'w':
         c.shoul = ((int)c.shoul + 10) % 360;
         glutPostRedisplay();
		 break;
	  case 's':
         c.shoul = ((int)c.shoul - 10) % 360;
         glutPostRedisplay();
		 break;
	  case '5':
		 c.scaling = c.scaling + 1.0;
		 glutPostRedisplay();
		 break;
	  case '0':
		 c.scaling = c.scaling - 1.0;
		 glutPostRedisplay();
		 break;
	  case '6':
		 c.left_right = c.left_right - 1.0;
		 glutPostRedisplay();
		 break;
	  case '4':
		 c.left_right = c.left_right + 1.0;
		 glutPostRedisplay();
		 break;
	  case '2':
		 c.up_down = c.up_down + 1.0;
		 glutPostRedisplay();
		 break;
	  case '8':
		 c.up_down = c.up_down - 1.0;
		 glutPostRedisplay();
		 break;
      default:
         break;
   }
}
При изменении координат (например: up_down) тоесть перестроении сети, значения этих переменных пропадают. Они вообще перестают чему либо равны. Есть ли решения этой проблемы?
Митовей вне форума Ответить с цитированием
Старый 30.04.2012, 19:08   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Что-то Вы неудачно сформулировали вопрос, что вообще не понятно.
Где этот класс, какие переменные?
Что мы должны такое запустить, чтобы ответить на вопрос:
Цитата:
Есть ли решения этой проблемы?
EUGY вне форума Ответить с цитированием
Старый 30.04.2012, 19:14   #3
Митовей
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 30
По умолчанию

Просто весь код программы я выложить не могу, приходиться вот так... Тогда спрошу другое. Вот к примеру компилирую я программу построчно. Используя шаг я не могу зайти в glutDisplayFunc(dysplay). То есть как мне зайти в функцию display?
Митовей вне форума Ответить с цитированием
Старый 30.04.2012, 19:17   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
То есть как мне зайти в функцию display?
break-point для кого придумали?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.04.2012, 19:25   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

glutDisplayFunc - это CALLBACK функция, принимающая параметром адрес другой функции.
Тело функции display должно быть у Вас в коде. Поставить на нее точку останова F9 и дождаться вызова.

зы. упс. опередили...
EUGY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять значения переменных. Shevali Помощь студентам 26 06.10.2013 14:30
как написать так, чтобы формула забирала значения переменных? peq Microsoft Office Excel 2 22.10.2010 13:47
Изменяются значения переменных Naper214 Общие вопросы C/C++ 1 06.06.2010 21:18
Создать приложение, вычисляющее значения переменных по заданным расчетным формулам и наборам исходных дан lubov_morkov Помощь студентам 3 10.09.2009 18:25
тест на php+mysql. не передаются значения переменных Liana4271 Помощь студентам 2 14.06.2009 01:28