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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2010, 13:25   #1
KANER
 
Регистрация: 09.09.2010
Сообщений: 3
Лампочка Горизонтальная позиция шашек a,b,c,d...

Всем доброе время суток. Написал код к задаче, не могу никак понять, как попросить си принять координату шашек по горизонтали за букву, т.е. после ввода координат, например: a1b2c3 буквы были приняты за цифры a=1; b=2, и т.д. до восьми. Прошу помощи.

Код:
int a, b, c, d, e, f, g, h; //горизонтальные позиции шашек

	  

	  // Вводим координаты шашек
	  printf(" \nEnter the position of checkers[a1b2c3] : ");
	  scanf_s("%d%d%d%d%d%d", &d_g, &d_v, &p1_g, &p1_v, &p2_g, &p2_v);
	  {
		  a = 1; b = 2; c = 3; d = 4; e = 5; f = 6; g = 7; h = 8; 
	  }
По моему варианту, после ввода букв сразу досрочное завершение программы, а мне необходимо, что программа работала дальше.

Код:
if(!(d_g >= 1 && d_g <= 8 && d_v >= 1 && d_v <= 8 && p1_g >= 1 && p1_g <= 8 && p1_v >= 1 && p1_v <= 8 && p2_g >= 1 && p2_g <= 8 && p2_v >= 1 && p2_v <= 8))
	  {
		  error_printf(" \nfigure is outside chessboard");
		  WAIT_ANY_KEY
		  return 0;
___________________________________ ______
Вера в себя способна творить такие же чудеса, как и вера в Господа Бога. О. де Бальзак

Последний раз редактировалось KANER; 17.09.2010 в 13:28.
KANER вне форума Ответить с цитированием
Старый 17.09.2010, 13:52   #2
Fog
Пользователь
 
Аватар для Fog
 
Регистрация: 29.08.2010
Сообщений: 76
По умолчанию

По поводу второго вопроса:
Пиши код внутри бесконечного цикла while и при необходимости завершения
пиши break(); для выхода из цикла. А чтобы прервать цикл на текущем месте
и начать сначала используй continue. см код ниже.
while(1){ //бесконечный цикл
что то делаеш....
if(!(d_g >= 1 && d_g <= 8 && d_v >= 1 && d_v <= 8 && p1_g >= 1 && p1_g <= 8 && p1_v >= 1 && p1_v <= 8 && p2_g >= 1 && p2_g <= 8 && p2_v >= 1 && p2_v <= 8))
{
error_printf(" \nfigure is outside chessboard");
getch();//ожидаем ввод
continue;//цикл повторяется сначала
}
А первый ща подумаю...
Fog вне форума Ответить с цитированием
Старый 17.09.2010, 13:58   #3
KANER
 
Регистрация: 09.09.2010
Сообщений: 3
По умолчанию

Нет, требования к выполнению этой задачи не использовать while, break и т.д. Второй, это не вопрос, там все правильно сделано. все работает, я писал "побочный эффект" к тому что после моего обьявления горизонтальных координат, выдает ошибку, эта ошибка и должна быть там, просто программа не распазнает a,b,c и т.д. как цыфра.
___________________________________ ______
Вера в себя способна творить такие же чудеса, как и вера в Господа Бога. О. де Бальзак
KANER вне форума Ответить с цитированием
Старый 17.09.2010, 14:11   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
char c;
int n;
//Здесь получаем c
switch (c)
 {
 case 'a': n = 1; break;
 case 'b': n = 2; break;
 //и т.д.
 }
Если не нравится switch - просто используете вложенные if-else
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 17.09.2010, 14:13   #5
Fog
Пользователь
 
Аватар для Fog
 
Регистрация: 29.08.2010
Сообщений: 76
По умолчанию

И правильно делает - чтож ты в %d (double) хочеш пихнуть char.
Лучше уж вертикальные координаты бери как %s а потом преобразовывай в
цифри при помощи отдельной функции.
Fog вне форума Ответить с цитированием
Старый 17.09.2010, 14:19   #6
Fog
Пользователь
 
Аватар для Fog
 
Регистрация: 29.08.2010
Сообщений: 76
По умолчанию

Вот функция конвертер:
double convert(char v_pos){
switch (v_pos){
case 'a': return 1;
case 'b' return 2;
case 'c' return 3;
....
}
}
Fog вне форума Ответить с цитированием
Старый 17.09.2010, 14:26   #7
KANER
 
Регистрация: 09.09.2010
Сообщений: 3
По умолчанию

Понял свою ошибку. Спасибо.
___________________________________ ______
Вера в себя способна творить такие же чудеса, как и вера в Господа Бога. О. де Бальзак
KANER вне форума Ответить с цитированием
Старый 17.09.2010, 14:28   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

%d - это не double, а int
pu4koff вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм для Шашек isus Помощь студентам 16 10.10.2012 09:46
display: block; и ненужная горизонтальная полоса прокрутки. Benderbej HTML и CSS 2 23.08.2010 13:30
Позиция Bat{CMD}_Men БД в Delphi 5 16.10.2009 18:32
Только горизонтальная прокрутка для DIV roma86 HTML и CSS 0 26.08.2009 12:49
Позиция курсора Arkuz Общие вопросы Delphi 2 11.10.2008 01:39