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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2013, 19:44   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
Печаль Напечатать шахматную доску.

У меня проблема во 2 пункте, не считывает первый scanf(), переходит ко второму сразу, пыталась использовать fflush(stdin), не могу понять в чем проблема. Подскажите, пожалуйста, где ошибка?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
    int i,j, n;
    char c,c1,c2;
    system("chcp 1251 > nul");
    printf("	Напечатать шахматную доску:\n"
           "1.	белые поля - пробел, черные  - звездочка"
           "\n2.	символами псевдографики");
    printf(Для того, чтобы выбрать нужный пункт, соотвественно нажмите 1 или 2:");
    scanf("%c", &c);
    n=-1;
    switch (c)
    {
           case '1':
                for (i=0;i<8;i++,n++,n<8)
                { 
                    n%2==0 ? printf ("* * * * \n") : printf (" * * * *\n");
                }
                break;
           case '2':
                printf("Введите каким символом будете печатать черные поля:");
                scanf("%c", &c2);
                printf("\nВведите каким символом будете печатать белые поля:");
                scanf("%c", &c1);
                for (i=0,n=-1;i<8;i++,n++,n<8)
                { 
                    n%2==0 ? printf ("%c%c%c%c%c%c%c%c\n",c1,c2,c1,c2,c1,c2,c1,c2) : 
                             printf ("%c%c%c%c%c%c%c%c\n",c2,c1,c2,c1,c2,c1,c2,c1);
                }
                break;
    }
    getch();
    return 0;      
}
zaira001002 вне форума Ответить с цитированием
Старый 02.10.2013, 20:19   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int
main()
{
    int i, j;
    char c, arr[2] = {' ', '*'};
    system("chcp 1251 > nul");
    printf("	Напечатать шахматную доску:\n"
           "1.	белые поля - пробел, черные  - звездочка\n"
           "2.	символами псевдографики");
    printf("Для того, чтобы выбрать нужный пункт, соотвественно нажмите 1 или 2:");
    scanf("%c", &c);
    fflush(stdin);
    switch (c) {
        case '2':
            printf("Введите каким символом будете печатать белые поля:");
            scanf("%c", &arr[0]);
            fflush(stdin);
            printf("\nВведите каким символом будете печатать черные поля:");
            scanf("%c", &arr[1]);
        case '1':
            for (i = 0; i < 8; ++i) {
                for(j = 0; j < 8; ++j)
                    printf("%c", arr[(i + j) % 2]);
                printf("\n");
            }
    }
    getch();
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.10.2013, 20:25   #3
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Спасибо) но я хотела без использования массивов сделать... только вот тот кусок, о котором говорила... не работал... а в целом вроде все правильно работало...
zaira001002 вне форума Ответить с цитированием
Старый 02.10.2013, 20:29   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пожалуйста.
Можно и без массива:
Код:
char c, c1 = ' ', c2 = '*';
...
scanf("%c", &c1);
...
scanf("%c", &c2);
...
printf("%c", ((i + j) % 2) ? c2 : c1);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.10.2013, 20:33   #5
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Вопрос у меня есть, почему в моем случае не считает первый scanf() и cразу запрашивает второй и начинает работу требуемого...?во втором case
zaira001002 вне форума Ответить с цитированием
Старый 02.10.2013, 20:37   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Внимательно посмотрите, где у меня расположены fflush. Всё по той же причине, что и в предыдущей теме.
Буфер клавиатуры:<символ1><enter><символ2 >

Без fflush:
<символ1> в 1 scanf
<enter> во 2 scanf

С fflush:
<символ1> в 1 scanf
пустой буфер
<символ2> во 2 scanf

UPD
Пожалуйста
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 02.10.2013 в 20:50.
BDA вне форума Ответить с цитированием
Старый 02.10.2013, 20:42   #7
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Спасибо большое еще раз) я пробовала использовать этот оператор, но, как очевидно, неправильно пользовалась им...
zaira001002 вне форума Ответить с цитированием
Старый 03.10.2013, 09:20   #8
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от zaira001002 Посмотреть сообщение
Спасибо большое еще раз) я пробовала использовать этот оператор, но, как очевидно, неправильно пользовалась им...
Тема наверное закрыта, но я до сих пор не пойму ваше упорство использования для считывания одного символа scanf, когда можно использовать getch(), так как вы не в первой теме уже задаете вопрос про scanf.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача про шахматную доску на Си constant94 Помощь студентам 13 08.04.2013 18:42
Наложение текстур на шахматную доску vampik Общие вопросы C/C++ 5 23.01.2013 19:02
задача про шахматную доску Katrina* Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2011 09:38
Задача про шахматную доску aiktz Помощь студентам 6 13.03.2009 11:53