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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2011, 23:00   #1
AlexSanify
 
Аватар для AlexSanify
 
Регистрация: 17.08.2011
Сообщений: 7
По умолчанию Изучение С++

Недавно начал изучать с++ по книге Герберта Шилдта "Полный справочник по С++".

Для експеримента навалял код выводящий на экран обьекты

Код:
#include <iostream>
#include <stdio.h>
using namespace std;


class obj {
public:
	int x;
	int y;
	char visual;
	obj();
};

obj::obj()
{
	x=-1;
	y=-1;
	visual = '0';
}

obj Area [20] [20];

bool IsEmpty(obj a)
{
	if(a.x && a.y == -1) return true;
	else return false;
}

void Display()
{
	int c = 0;
	int c1 = 0;
	for(c=0; c<=20;c++){
		for(c1=0; c1<=20;c1++){
			if (IsEmpty(Area [c1] [c])) cout << ' ';
			else cout << Area [c1] [c].visual;
			if (c1==20) cout << '\n';
		}
	}
}

int main()
{
	obj one;
	obj two;
	obj tree;
	one.x=two.y=1;
	one.y=two.x=2;
	tree.x=20;
	tree.y=0;
	Area [one.x] [one.y] = one;
	Area [two.x] [two.y] = two;
	Area [tree.x] [tree.y] = tree;
	Display();
	system("pause");
	return 0;
}
Что посоветуете делать дальше?
AlexSanify вне форума Ответить с цитированием
Старый 18.08.2011, 17:12   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

читать еще...
секция private зачем придумана? разнеси код класса в .h и .cpp файлы, читабельней будет. Метод IsEmpty неплохо бы сделать членом класса
counter вне форума Ответить с цитированием
Старый 04.10.2011, 21:35   #3
AlexSanify
 
Аватар для AlexSanify
 
Регистрация: 17.08.2011
Сообщений: 7
По умолчанию

Вот. Добрался до форума. Немного оптимизировал код, хочу сделать так, чтобы при существовании объектов в смежных клетках ((х-1;х+1) и (у+1;у-1) между ними создавался новый. При компиляции выдает два предупреждения
Код:
warning C4700: использована неинициализированная локальная переменная "x"
warning C4700: использована неинициализированная локальная переменная "y"
Хотя все инициализировано.
Вот сам код:

Код:
#include <iostream>
#include <stdio.h>
#define SIZE 20
using namespace std;


class obj {
public:
	char visual;
	obj();
};

obj::obj()
{
	visual = ' ';
}

obj Area [SIZE+1] [SIZE+1];

void SetArea(int ex, int ey, char visual )
{
	Area [ex][ey].visual=visual;
}

void DisplayArea()
{
	system("cls");

	for(int x=0; x<SIZE+1; x++)
	{
		for(int y=0; y<SIZE+1; y++)
		{
			cout << Area [y] [x].visual;
		}
		cout << '\n';
	}
}

void MoveObj( int& x, int& y, int nx, int ny )
{
	SetArea(x,y,' ');
	SetArea(nx,ny,'X');

	x = nx;
	y = ny;
}

void Chek()
{
	int x = 0;
	int y = 0;
	for(int x; x<SIZE+1; x++)
	{
		for(int y; y<SIZE+1; y++)
		{
			if(Area [x+1][y].visual == 'X' && Area [x-1][y].visual == 'X' || Area [x][y+1].visual == 'X' && Area [x][y-1].visual == 'X')
			{
				SetArea(x,y,'X');
			}
		}
	}
}

int main()
{
	int x, y;
	int nx, ny;
	bool WantExit= false;

	x = 10;
	y = 13;
	SetArea(x,y,'X');
	SetArea(5,8,'X');
	DisplayArea();

	do {
		cout << "Enter X to move a object.";
		cin >> nx;
		cout << "Enter Y to move a object.";
		cin >> ny;

		MoveObj( x,y,nx,ny);
		Chek();
		DisplayArea();

	} while (x != -1 && y != -1);

	system("pause");

	return 0;
}
AlexSanify вне форума Ответить с цитированием
Старый 04.10.2011, 22:11   #4
AlexSanify
 
Аватар для AlexSanify
 
Регистрация: 17.08.2011
Сообщений: 7
По умолчанию

Очень прошу помочь, так как долго медитировал на фрагменты
Код:
int x = 0;
int y = 0;
и
Код:
warning C4700: использована неинициализированная локальная переменная "x"
warning C4700: использована неинициализированная локальная переменная "y"
но все равно ничего не понял(
AlexSanify вне форума Ответить с цитированием
Старый 04.10.2011, 22:36   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
int main()
{
	int x, y;
	int nx, ny;
counter вне форума Ответить с цитированием
Старый 05.10.2011, 10:43   #6
AlexSanify
 
Аватар для AlexSanify
 
Регистрация: 17.08.2011
Сообщений: 7
По умолчанию

там локальные переменные.
ошибка вылезает в функции Chek()
AlexSanify вне форума Ответить с цитированием
Старый 05.10.2011, 14:19   #7
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
int x = 0;
int y = 0;
for(int x; x<SIZE+1; x++)
{
	for(int y; y<SIZE+1; y++)
компилятор просто растерялся от такого разнообразия переменных
counter вне форума Ответить с цитированием
Старый 05.10.2011, 15:20   #8
AlexSanify
 
Аватар для AlexSanify
 
Регистрация: 17.08.2011
Сообщений: 7
По умолчанию

я им имена менял уже.
Так как исправить?
AlexSanify вне форума Ответить с цитированием
Старый 05.10.2011, 15:46   #9
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

что ты исправил?

либо так
Код:
int x = 0;
int y = 0;
for(x; x<SIZE+1; x++)
{
	for(y; y<SIZE+1; y++)
либо так
Код:
int x = 0;
int y = 0;
for(int i=0; i<SIZE+1; i++)
{
	for(int j; j<SIZE+1; j++)
counter вне форума Ответить с цитированием
Старый 05.10.2011, 19:08   #10
AlexSanify
 
Аватар для AlexSanify
 
Регистрация: 17.08.2011
Сообщений: 7
По умолчанию

х и у - счетчики, а заодно и координаты клетки.
я менял имя счетчиков, но безрезультатно
AlexSanify вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изучение Ghost of Night Общие вопросы C/C++ 86 25.07.2011 00:37
изучение actionscript jojo97 JavaScript, Ajax 4 11.01.2010 08:01
Изучение Assembler'a Terran Софт 8 27.12.2009 09:20
Изучение C++ Amidosha Помощь студентам 1 18.03.2009 17:48
Изучение С++ AlexMSU Общие вопросы C/C++ 1 18.03.2009 13:52