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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 5.00
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
#1

Вывод на экран шахматной доски - C++

21.12.2008, 12:16. Просмотров 5737. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста написать код программы выводящей на экран шахматную доску.
P.S. Я только учусь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2008, 12:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод на экран шахматной доски (C++):

Программа, которая выводит на экран изображение шахматной доски - C++
и снова привет! мне опять нужна ваша помощь. вот код, который жутко глючит((( { // Напишите программу, которая выводит на экран...

Написать программу, которая выводит на экран изображение шахматной доски - C++
Написать программу, которая выводит на экран изображение шахматной доски.

Король шахматной доски - C++
Король шахматной доски размером 8х8 находится на коне в одной из клеток своего королевства. Он очень озабочен тем, что некоторые клетки его...

Разрезание шахматной доски - C++
Написать программу нахождения всех способов разрезания шахматной доски с числом клеток nxn (n-четное) на две одинаковые по форме части (не...

Закрасить участок шахматной доски - C++
Люди помогите плиз, у меня в С++ вообще башка не варит((( написать программу для выполнения следующей задачи (): Нужно решить такую...

Обход конём шахматной доски - C++
Приветствую всех форумчан! Нужно решить задачу: обойти конём шахматное поле размером n*n (n<=8), побывав на каждой клетке не более одного...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
21.12.2008, 12:20 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
int main() {
  int i, j;
  printf("Pered vami - shahmatnaya doska:\n");
  for (i=0; i<=7; i++){ //* izmenenie stolbcov
    for (j=0; j<=7; j++) { //* izmenenie strok
      if(i%2==1) 
        if (j%2==1) printf("  ");
        else printf("*");
      else 
        if (j%2==1) printf("*");
        else printf("  ");
    }
  printf("\n");
  }
}
попробуй так
0
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
25.12.2008, 21:45  [ТС] #3
Большое спасибо!
0
Grayswandir
10 / 10 / 1
Регистрация: 05.02.2010
Сообщений: 12
05.02.2010, 22:51 #4
Доброго времени суток.
Даны 2 задачи на вариацию шахматной доски.

1. Высота и ширина доски задаётся пользователем.
Нарисовать шахматную доску в консоли. Размер ячейки доски фиксирован - одно знакоместо.
Чёрные клетки - символ 'x', белый - символ '-'.
Тут сложностей нет.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        int h, w, i, j;
        
    cout << "Введите высоту шахматной доски.\nh = ";
    cin >> h;
    cout << "Введите ширину шахматной доски.\nw = ";
    cin >> w;
 
    for (i=0; i<h; i++)
    {
        for (j=0; j<w; j++)
        {
            ((j%2 && i%2) || (!(j%2) && !(i%2))) ? (cout << 'x') : (cout << '-');
        }
        cout << '\n';
    }
    cout << "\n\n\n";
2. условия те же, только размер ячейки не фиксирован, а задаётся пользователем.
Т.е., например, высота доски - 3, ширина - 4, размер ячейки - 3 знакоместа.
На выводе должно быть так:

xxx---xxx---
xxx---xxx---
xxx---xxx---
---xxx---xxx
---xxx---xxx
---xxx---xxx
xxx---xxx---
xxx---xxx---
xxx---xxx---

И вот тут у меня проблемы.
Помогите пожалуйста подсказкой как это реализовать, готовый код не надо - хочется самому разобраться.
Из обязательных условий: использование только циклов - никаких массивов, консольный вывод (cout).

Добавлено через 3 часа 53 минуты
Вторую задачу-таки победил

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 <iostream>
using namespace std;
void main()
{
    setlocale (LC_CTYPE, ".1251");  
    int h, a, w;
    cout << "Введите высоту шахматной доски.\nh = ";
    cin >> h;
    cout << "Введите ширину шахматной доски.\nw = ";
    cin >> w;
    cout << "Введите величину ячейки шахматной доски.\na = ";
    cin >> a;
    for (int i=0; i<h; i++)
    {
        for (int jj=0; jj<a; jj++)
        {
            for (int j=0; j<w; j++)
            {
                for (int ii=0; ii<a; ii++)
                {
                ((i+j)%2) ? (cout << '-') : (cout << 'x');
                }
            }
            cout << '\n';
        }
    }
    cout << "\n\n\n";
}
Если у кого-то есть идеи по оптимизации решения - с интересом бы посмотрел.
2
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
05.02.2010, 23:24 #5
Тут сложностей нет.
Grayswandir, Задача решена совершенно грамотно.
И никаких оптимизаций тут в принципе быть не может
1
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
05.02.2010, 23:28 #6
Day, ошибаешься, очень даже может. Как минимум так
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
#include <iostream>
using namespace std;
int main()
{
        setlocale (LC_CTYPE, ".1251");  
        int h, a, w;
        cout << "Введите высоту шахматной доски.\nh = ";
        cin >> h;
        cout << "Введите ширину шахматной доски.\nw = ";
        cin >> w;
        cout << "Введите величину ячейки шахматной доски.\na = ";
        cin >> a;
        int i, jj, j, ii;
        for (i=0; i<h; i++)
        {
                for (jj=0; jj<a; jj++)
                {
                        for (j=0; j<w; j++)
                        {
                                for (ii=0; ii<a; ii++)
                                {
                                        (!(i+j) & 1) ? (cout << '-') : (cout << 'x');
                                }
                        }
                        cout << '\n';
                }
        }
        cout << "\n\n\n";
        return 0;
}
0
Grayswandir
10 / 10 / 1
Регистрация: 05.02.2010
Сообщений: 12
05.02.2010, 23:52 #7
M128K145, Ваш вариант работает неверно
И хотелось бы узнать, в чём именно заключается Ваша оптимизация, за исключением объявления счётчиков цикла до их начала, и присваивание функции main типа int?
1
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
06.02.2010, 01:55 #8
Grayswandir, в 22 надо убрать отрицание, т.е. так
C++
1
2
3
4
5
6
int i, jj, j, ii;
for (i = 0; i < h; ++i)
    for (jj = 0; jj < a; ++jj, std::cout<<std::endl)
        for (j = 0; j < w; ++j)
            for (ii = 0; ii < a; ++ii)
                std::cout<<((i + j) & 1 ? '-' : 'x');
Оптимизация? Да никакой в принципе, если не учитывать затраты на создание N переменных типа int. Для вашего кода N = h * a * w + 1, для моего N = 4. А если взять значения h, a, w немногим более тысячи? Еще вопросы?
1
Grayswandir
10 / 10 / 1
Регистрация: 05.02.2010
Сообщений: 12
06.02.2010, 02:01 #9
Спасибо. Об этом как-то и не подумал.
0
angelwarcode
0 / 0 / 0
Регистрация: 19.01.2017
Сообщений: 1
19.01.2017, 16:26 #10
Я только учусь . Но Вот так вот доска шахматная должна выглядеть.
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
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "rus");
    int h, a, w;
    cout << "Введите высоту шахматной доски.\nh = ";
    cin >> h;
    cout << "Введите ширину шахматной доски.\nw = ";
    cin >> w;
    cout << "Введите величину ячейки шахматной доски.\na = ";
    cin >> a;
    for (int i = 0; i < h; i++)      //проход по высоте доски
    {
        if (i % 2 == 0)
            for (int i = 0; i < w/2; i++)     //проход  ***---  по ширине доски
            {
                for (int i = 0; i < a; i++)
                    cout << "*";
                for (int i = 0; i < a; i++)
                    cout << "-";
            }
        else 
            for (int i = 0; i < w/2; i++)     //проход  ---*** по ширине доски
            {
                for (int i = 0; i < a; i++)
                    cout << "-";
                for (int i = 0; i < a; i++)
                    cout << "*";
            }
        cout << "\n";
    }
    cout << "\n\n";
}
0
Dimension
19.01.2017, 16:32
  #11

Не по теме:

angelwarcode, теме 7 лет ,как вы ее нашли..

0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
19.01.2017, 16:52 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int main()
{
    const int N = 8;
    bool flag = true;
    for (int i = 0; i < N * N; i++)
    {
        if (i % N == 0)
        {
            std::cout << '\n';
            flag = !flag;
        }
        std::cout << (i & 1 ^ flag ? '*' : ' ');
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2017, 16:52
Привет! Вот еще темы с ответами:

Написать шаблон шахматной доски - C++
Всем доброго времени суток! Я только начала учить циклы. Пока тяжело писать коды. Помогите, пожалуйста, написать программу, которая выводит...

Обход шахматной доски конем - C++
Добрый вечер , форумчане. Передо мной стоит проблема написать программу на С++ (задача о ходе конем -довольно распространенная , конь...

Задачка. Поле шахматной доски - C++
Поле шахматной доски задается парой натуральных чисел: Первое указывает номер вертикали при счете слева направо, второе - номер горизонтали...

Покрытие шахматной доски ходом коня - C++
4. Покрытие шахматной доски ходом коня.


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

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

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