Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Передвижение обьекта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ std::allocator http://www.cyberforum.ru/cpp-beginners/thread2805.html
я не смог найти хорошего описания роботы с аллокатором, так что спрашиваю у тех, кто с ним работал std::allocator::allocate (size_type size, void* hint); по идее hint должен задавать начальную...
C++ Время с cout Пожалуйста,помогите.Нужно сделать консольную программу,которая выводит сообщение через заданное время. Пример: Сначала выводит "Ты" Через 3 секунды выводит "сделал" Потом через 5 секунд выводит... http://www.cyberforum.ru/cpp-beginners/thread2792.html
C++ не использовать do/while ? бред !
меня возмутила статья http://www.cyberguru.ru/programming/cpp/cpp-programming-rules-page67.html в которой автор рекомендует вместо do {} while (); использовать while () {}; давайте же разберёмся...
C++ В матрице удалить строки с элементами на главной диагонали, превышающими заданную величину
В матрице удалить строки с элементами на главной диагонали, превышающими заданную величину, а затем в качестве первой вставить строку из максимальных элементов соответствующих столбцов.(Для...
C++ Поиск строк http://www.cyberforum.ru/cpp-beginners/thread2768.html
Здраствуйте, подскажите какие есть реализации или как это сделать примерно. Задача в поиске строк в файле, можно воспользоватся регулярными выражениями или алгоритмами типа бойра-Мура, но файл нельзя...
C++ Не могу сделать exe При компиляций моего пректа exe не создаётся.Выдаёт ошибки,которые я не знаю как исправить...http://dump.ru/files/g/g2067785368/ Программа должна выполнять функцию Надо ввести значение переменной... подробнее

Показать сообщение отдельно
bor.is
0 / 0 / 1
Регистрация: 29.08.2007
Сообщений: 9
30.08.2007, 14:07
ну во-первых если ты создаёшь массив l[5] то у него будут элементы с индексами { 0, 1, 2, 3, 4 } - элементов 5, но индексы с нуля, а не { 1, 2, 3, 4, 5 }
во вторых зачем так мучатся с одномерными массивами - создай двумерный и вообще лучше сделать чтобы карта читалась с файла - удобнее намного

потом интересная строка
Код
l[1]='i'=l[e];
она будет выполняться так
Код
l[1]=('i'=l[e]);
тоесть сначала литере 'i' будет попытка присвоить то что по индексу e в массиве l - думаю здесь определённо будет будет какая-то ошибка при компиляции
я вообще по этой строке не представляю что автор хотел сделать )

ещё одно замечание в блоке switch после каждого case нужно делать break;
вот попробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdio>
 
int main () {
   int i = 2; // 0..5
   switch (i) {
      case 0 : { 
         printf ("catch case 0, i equal %d\n", i);
      };
      case 1 : {
         printf ("catch case 1, i equal %d\n", i);
      };
      case 2 : {
         printf ("catch case 2, i equal %d\n", i);
      };
      case 3 : {
         printf ("catch case 3, i equal %d\n", i);
      };
      case 4 : {
         printf ("catch case 4, i equal %d\n", i);
      };
   };
   return 0;
};
выполняй с разными i и погляди на результат, чтобы избежать этого в конце каждого case нужно ставить break;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <cstdio>
 
int main () {
   int i = 2; // 0..5
   switch (i) {
      case 0 : { 
         printf ("catch case 0, i equal %d\n", i);
         break;
      };
      case 1 : {
         printf ("catch case 1, i equal %d\n", i);
         break;
      };
      case 2 : {
         printf ("catch case 2, i equal %d\n", i);
         break;
      };
      case 3 : {
         printf ("catch case 3, i equal %d\n", i);
         break;
      };
      case 4 : {
         printf ("catch case 4, i equal %d\n", i);
         break;
      };
   };
   return 0;
};
вот теперь всё в порядке

с кода в case я вообще прозревал, вообщем вот как я это себе представляю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <cstdio>
 
const int maxy = 10, maxx = 10;
 
char a[maxx][maxy]; // field
int x, y; // field limits
 
int Ix, Iy; // coordinats of I
 
void makei (const int x, const int y) {
   Ix = x;
   Iy = y;
   a[x][y] = 'I';
};
 
void print () {
   int ix, iy; // help variables;
   iy = 0;
   do {
      ix = 0;
      do {
         putchar (a[ix][iy]);
      } while (++ix != x);
      putchar ('\n');
   } while (++iy != y);
};
 
void reading () {
   FILE *in = fopen ("sol.in", "r"); // change "sol.in" to your file name
   fscanf (in, "%d%d\n", &x, &y);
   int ix, iy = 0; // help variables;   
   iy = 0;
   do {
      ix = 0;
      do {
         a[ix][iy] = fgetc(in);
      } while (++ix != x);
      fgetc (in); // drop end of line
   } while (++iy != y);
};
 
void move () {
   char ch;
   /*
    * e - exit
    * w - up
    * s - down
    * a - left
    * d - right
    */
   printf ("e-exit, w-up, s-down, a-left, d-right; command: ");
   while (ch = getchar(), ch != 'e') {
      getchar();
      switch (ch) {
         case 'w' : {
            if ( (Iy != 0) && (a[Ix][Iy - 1] != 'X') ) {
               a[Ix][Iy] = 'O';
               a[Ix][--Iy] = 'I';
            };
            break;
         };
         case 's' : {
            if ( (Iy != (y - 1)) && (a[Ix][Iy + 1] != 'X') ) {
               a[Ix][Iy] = 'O';
               a[Ix][++Iy] = 'I';
            };
            break;       
         };
         case 'a' : {
            if ( (x != 0) && (a[Ix - 1][Iy] != 'X') ) {
               a[Ix][Iy] = 'O';
               a[--Ix][Iy] = 'I';
            };
            break;
         };
         case 'd' : {
            if ( (x != (x - 1)) && (a[Ix + 1][Iy] != 'X') ) {
               a[Ix][Iy] = 'O';
               a[++Ix][Iy] = 'I';
            };
            break;
         };
      };
      print ();
      printf ("e-exit, w-up, s-down, a-left, d-right; command: ");
   };
};
 
int main () {
   reading ();
   makei (1, 1);
   move ();
   return 0;
};
с помощью makei устанавливай точку I там, где тебе необходимо (помни про индексы с нуля)
создай файл формата: x, y, поле
замени "sol.in" на первой строке в reading () на свой файл, я использовал такой
Код
5 7
XXXXX
XOOOX
XOOOX
XOOOX
XOOOX
XOOOX
XXXXX
выполни в консоли и нажимай e для выхода, w для передвижения вверх, s вниз, a влево, d вправо, после каждой команды жми enter
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru