Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Vladuslav_11
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
1

В чем ошибка кода

29.01.2014, 22:06. Просмотров 867. Ответов 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
Ответы с готовыми решениями:

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

В чем ошибка кода
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { double p; double S;...

В чем ошибка кода
написал такой код задача которого задать массив из рандомных чисел размера Size, вывести его, далее...

Игра Пятнашки. В чем ошибка кода?
ИГРА ПЯТНАШКИ.В чем ошибка? Прошу исправить. #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include...

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

8
metaluga145
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
29.01.2014, 22:13 2
Лучший ответ Сообщение было отмечено Vladuslav_11 как решение

Решение

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
16768 / 6655 / 869
Регистрация: 12.06.2012
Сообщений: 19,894
Завершенные тесты: 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
29.01.2014, 22:19
Somebody
29.01.2014, 22:19
  #5

Не по теме:

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

0
zss
Модератор
Эксперт С++
8149 / 7272 / 4520
Регистрация: 18.12.2011
Сообщений: 19,240
Завершенные тесты: 1
29.01.2014, 22:20 6
А зачем такой чудной case
можно ведь просто написать
C++
1
cy=1+cy-'a';
0
ValeryS
Модератор
7719 / 5731 / 742
Регистрация: 14.02.2011
Сообщений: 19,618
Завершенные тесты: 1
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 / 38
Регистрация: 08.04.2013
Сообщений: 927
29.01.2014, 22:23 8
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
Не могу понять как там задать условие...
моя идея: если посмотреть на доску. то можно понять, что каждая диагональ слева направо, снизу вверх имеет свою константу, которая задается буква минус цифра(если а = 1, b = 2...). осталось придумать такую же константу для диагонали в другую сторону и понять влево или вправо двигается слон. но это не сложно
0
ValeryS
Модератор
7719 / 5731 / 742
Регистрация: 14.02.2011
Сообщений: 19,618
Завершенные тесты: 1
29.01.2014, 22:26 9
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
А может кто нибудь аналогично помочь сделать такое же но только с офицером (слоном)... ?
слон ходит по диагонали
следовательно дельты должны быть равны
abs(x1-x2)==abs(y1-y2)
1
29.01.2014, 22:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 22:26

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

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

В чем ошибка кода?
Помогите с кодом!!этот код не компилируется выдавая за ошибку эту строку: this-&gt;start = &quot;&quot;;...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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