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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vladuslav_11
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
#1

В чем ошибка кода - C++

29.01.2014, 22:06. Просмотров 238. Ответов 8
Метки нет (Все метки)

Суть программы изначально была следующая:
-Проверить правильность хода фигуры "конь" на шахматной доске.

Код написал такой.. но почему-то выдает неправильный результат...=(

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
#include <iostream>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
 
using namespace std;
void main(){
    setlocale(LC_ALL,"Ukr");
    int x[9]={0,1,2,3,4,5,6,7,8};
    int y[9] = {0,1,2,3,4,5,6,7,8};
    char z[9] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
    int cx, cy1, tx, ty1;
    char cy, ty;
    cout<<"Enter coordinat x(1-8): ";
    cin>>cx;
    cout<<"Enter coordinat y(a-h): ";
    cin>>cy;
    cout<<"To coordinat x: ";
    cin>>tx;
    cout<<"To coordinat y: ";
    cin>>ty;
    switch(cy){
    case ('a'): cy1=1;
        case ('b'): cy1=2;
            case ('c'): cy1=3;
                case ('d'): cy1=4;
                    case ('e'): cy1=5;
                        case ('f'): cy1=6;
                            case ('g'): cy1=7;
                                case ('h'): cy1=8;
    }
    switch(ty){
    case ('a'): ty1=1; break;
        case ('b'): ty1=2; break;
            case ('c'): ty1=3; break;
                case ('d'): ty1=4; break;
                    case ('e'): ty1=5; break;
                        case ('f'): ty1=6; break;
                            case ('g'): ty1=7; break;
                                case ('h'): ty1=8; break;
                                default: {"Error set!";
                                    _getch();
                                    exit(1);
                                         }
                                
    }
    if(cx>=8&&cx<1, tx>=8&&tx<1) {
        cout<<"Fail. ";
        _getch();
        
    }
    
    if((x[cx]==x[tx+1]&&y[cy1]==y[ty1+2])||(x[cx]==x[tx+2]&&y[cy1]==y[ty1+1])||((x[cx]==x[tx-1]&&y[cy1]==y[ty1-2])||(x[cx]==x[tx-2]&&y[cy1]==y[ty1-1])||(x[cx]==x[tx+1]&&y[cy1]==y[ty1-2])||(x[cx]==x[tx-2]&&y[cy1]==y[ty1+1])||(x[cx]==x[tx+1]&&y[cy1]==y[ty1-2])||(x[cx]==x[tx+2]&&y[cy1]==y[ty1-1]))) {
     cout<<"It's good... ";
     _getch();
    }
    else cerr<<"It's failed.";
    _getch();
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем ошибка кода (C++):

в чем ошибка кода 3 ? - C++
void main(int a, int b) { cout &lt;&lt; a &lt;&lt; &quot; &quot; &lt;&lt; b; } void main(float f) { // тут cout &lt;&lt; f &lt;&lt; endl; ...

В чем ошибка кода - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { double p; double S; cin &gt;&gt; p; S=p/3*sqrt(3.0)/4; ...

В чем ошибка этого элементарнейшего кода? - C++
#include &lt;iostream&gt; using namespace std; int main() { int a,b,c,d; cout &lt;&lt; &quot;Enter a:&quot;; cin&gt;&gt;a; cout &lt;&lt;...

ребят посмотрите пожалуйста в чем ошибка кода - C++
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication27 { ...

Не пойму в чем ошибка кода. дан массив А размера N найти максимальный элемент из его элементов с нечетными номерами - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #define MAX 100 int main(void) { setlocale(LC_CTYPE, &quot;rus&quot;); ...

Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему? - C++
Друзья! То есть суть такая, создаю объект и в конструктор передаю имя процесса и хэндл снимка системы. А в конструкторе начинается...

8
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
29.01.2014, 22:13 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Vladuslav_11, а Вы синтаксис оператора switch знаете? там еще break надо, или у Вас не надо прерывать оператор?
1
Vladuslav_11
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
29.01.2014, 22:18  [ТС] #3
Цитата Сообщение от metaluga145 Посмотреть сообщение
Vladuslav_11, а Вы синтаксис оператора switch знаете? там еще break надо, или у Вас не надо прерывать оператор?
Как же я мог это пропустить..)
Спасибо.

Добавлено через 55 секунд
А может кто нибудь аналогично помочь сделать такое же но только с офицером (слоном)... ?
Не могу понять как там задать условие...
0
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
29.01.2014, 22:19 #4
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
switch(cy){
    case ('a'): cy1=1;
        case ('b'): cy1=2;
            case ('c'): cy1=3;
                case ('d'): cy1=4;
                    case ('e'): cy1=5;
                        case ('f'): cy1=6;
                            case ('g'): cy1=7;
                                case ('h'): cy1=8;
    }
    switch(ty){
    case ('a'): ty1=1; break;
        case ('b'): ty1=2; break;
            case ('c'): ty1=3; break;
                case ('d'): ty1=4; break;
                    case ('e'): ty1=5; break;
                        case ('f'): ty1=6; break;
                            case ('g'): ty1=7; break;
                                case ('h'): ty1=8; break;
                                default: {"Error set!";
                                    _getch();
                                    exit(1);
                                         }
А так не лучше будет?
C++
1
2
3
4
5
6
7
8
9
if('a' <= cy && cy <= 'h')
    cy1 = z[cy + 1];
if('a' <= ty && ty <= 'h')
    ty1 = z[ty + 1];
else
{
  _getch();
  exit(1);
}
0
Somebody
29.01.2014, 22:19
  #5

Не по теме:

У Маяковского учился на C++ писать?

0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 1
29.01.2014, 22:20 #6
А зачем такой чудной case
можно ведь просто написать
C++
1
cy=1+cy-'a';
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
29.01.2014, 22:22 #7
ну ты и накрутил
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
switch(cy){
* * case ('a'): cy1=1;
* * * * case ('b'): cy1=2;
* * * * * * case ('c'): cy1=3;
* * * * * * * * case ('d'): cy1=4;
* * * * * * * * * * case ('e'): cy1=5;
* * * * * * * * * * * * case ('f'): cy1=6;
* * * * * * * * * * * * * * case ('g'): cy1=7;
* * * * * * * * * * * * * * * * case ('h'): cy1=8;
* * }
где бряки? у тебя всегда cy1 равна 8
во вторых это можно сделать гораздо проще
C++
1
2
3
cy1=cy-'a'+1;
 if(cy1<1 || cy>8)
   // error
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
default: {"Error set!";
что за конструкция ?
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
if((x[cx]==x[tx+1]&&y[cy1]==y[ty1+2])||(x[cx]==x[tx+2]&&y[cy1]==y[ty1+1])||((x[cx]==x[tx-1]&&y[cy1]==y[ty1-2])||(x[cx]==x[tx-2]&&y[cy1]==y[ty1-1])||(x[cx]==x[tx+1]&&y[cy1]==y[ty1-2])||(x[cx]==x[tx-2]&&y[cy1]==y[ty1+1])||(x[cx]==x[tx+1]&&y[cy1]==y[ty1-2])||(x[cx]==x[tx+2]&&y[cy1]==y[ty1-1])))
сам то можешь разобраться в своем условии

конь ходит на 3 клетки из них одна по одному измерению и две по другому
значит если умножить должно получится 2 и только 2
C++
1
2
3
4
if((abs(x1-x2)*abs(y1-y2))==2 )
// правильно
else
// неправильно
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
29.01.2014, 22:23 #8
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
Не могу понять как там задать условие...
моя идея: если посмотреть на доску. то можно понять, что каждая диагональ слева направо, снизу вверх имеет свою константу, которая задается буква минус цифра(если а = 1, b = 2...). осталось придумать такую же константу для диагонали в другую сторону и понять влево или вправо двигается слон. но это не сложно
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
29.01.2014, 22:26 #9
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
А может кто нибудь аналогично помочь сделать такое же но только с офицером (слоном)... ?
слон ходит по диагонали
следовательно дельты должны быть равны
abs(x1-x2)==abs(y1-y2)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 22:26
Привет! Вот еще темы с ответами:

В чем ошибки кода? - C++
Для каждого x, изменяющегося от a до b с шагом h, найти значение функции Y(x), суммы S(x) и |Y(x)-S(x)| и вывести в виде таблицы. Значения...

В чем причина некорректной работы кода? - C++
не закончив цикл в главной функции - строка 92, программа завершается без ошибок, цикл не проходит последний этап. Ошибка наверное очень...

Реализовать через тип данных структура. При сборке и отладки возникает ошибка. В чем ошибка? - C++
С++ в таблице из 5 строк хранятся данные о товарах: наименование, цена, количество. Определить и вывести наименование товара, цена которого...

Ссылка и указатель: чем отличаются заданные фрагменты кода? - C++
1 int *p; int *q; p = new int; q = new int; *p = 1; *q = 2; p = q; *q = 3;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
29.01.2014, 22:26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru