С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170

Циклы, ветвления, проверка на тип

23.01.2016, 16:42. Показов 1265. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть код - по условию выводит разные фигуры после запроса, 1 - квадрат, 2 - треугольник, 3 - ромб. Подскажите пожалуйста как грамотно сделать проверку в case(во всех) в запросе о размере фигуры на ввод числа, типа если не int то чтоб выдавало предупреждение о неправильном вводе, и опять запрашивало в этом же case размер фигуры повторно!
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
void square(int, char);//Выводит квадрат
    void triangle(int, char);//Выводит треугольник
        void rhombus(int, char);//Выводит ромб
int main()
{
    setlocale(LC_ALL, "Russian");
    system("mode con cols=100 lines=50");
//--------------------------------------------------------------------------------------
    int side=0;
        int figure=0;
            char simbol=0;
//--------------------------------------------------------------------------------------
    std::cout<<"Выберите номер фигуры:(1 - Квадрат, 2 - Треугольник, 3 - Ромб) ";
    while(std::cin>>figure)
    {
        switch(figure)
        {
            case 1:
            {
                std::cout<<"Введите размер фигуры: ";
                    std::cin>>side;
                        std::cout<<"Введите символьный параметр: "; std::cin>>simbol;
                                    square(side, simbol);
                                        std::cout<<std::endl;
                                            break;
                                }
            case 2:
            {
                        std::cout<<"Введите размер фигуры: ";
                    std::cin>>side;
                        std::cout<<"Введите символьный параметр: "; std::cin>>simbol;
                                    triangle(side, simbol);
                                             std::cout<<std::endl;
                            break;
                           }
            case 3:
            {
                           std::cout<<"Введите размер фигуры: ";
                    std::cin>>side;
                        std::cout<<"Введите символьный параметр: "; std::cin>>simbol;
                                        rhombus(side, simbol);
                                             std::cout<<std::endl;
                            break;
                            }
                        default:
                            std::cout<<"Неправильный ввод";
        }
        std::cout<<"Выберите номер фигуры:(1 - Квадрат, 2 - Треугольник, 3 - Ромб) ";
    }
//----------------------------------------------------------------------------------------------
    return 0;
}
void square(int s, char sim)//Квадрат
{
    for(int i=1; i<=s; i++)
    {
        for(int i=1; i<=s; i++)
            std::cout<<sim<<' ';
                std::cout<<std::endl;
                }
}
void triangle(int s, char sim)//Треугольник
{
    for(int n=1; n<=s; n++)
    {
        for(int i=n; i<=s; i++)
            std::cout<<' ';
                for(int i=1; i<=n; i++)
                    std::cout<<sim<<' ';
                        std::cout<<std::endl;
                        }
    
}
void rhombus(int s, char sim)//Ромб
{
    for(int n=1; n<=s; n++)
    {
        for(int i=n; i<=s; i++)
            std::cout<<' ';
                for(int i=1; i<=n; i++)
                    std::cout<<sim<<' ';
                        std::cout<<std::endl;
                        }
    for(int n=s-1; n>=1; n--)
    {
        for(int i=n; i<=s; i++)
            std::cout<<' ';
                for(int i=1; i<=n; i++)
                    std::cout<<sim<<' ';
                        std::cout<<std::endl;
                        }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2016, 16:42
Ответы с готовыми решениями:

Циклы и ветвления
Добрый день! Самостоятельно изучаю С++ и вот дошёл до циклов и ветвлений. Необходимо сделать несколько упражнений по данной теме. Застрял...

Циклы и ветвления
помогите плииииз мне сегодня в 8 утра сдавать) 4. Вывести на консоль простые числа, начиная с 2, заканчивая ближайшим простым...

Ветвления и циклы
Пожалуйста помогите сделать!очень нужно:umnik:

11
 Аватар для Ника))
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
23.01.2016, 21:34
Ну вытащи из while свой ввод числа и проверяй на соответствие, если число от 1 до 3 то вперед запускаем switch , если не они то запрос заного ... Или я что то не понял...
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
24.01.2016, 09:04
Лучший ответ Сообщение было отмечено vikiroy как решение

Решение

Ника))
Ты не правильно понял) в запросе о размере фигуры на ввод числа, типа если не int то чтоб выдавало предупреждение о неправильном вводе, и опять запрашивало в этом же case размер фигуры повторно!

Добавлено через 18 минут
vikiroy Попробуй так в каждый case...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
----------
----------
 std::cout<<"Введите размер фигуры: ";
                          std::cin>>side;
                             if(!cin.fail()){            \\ Проверка на ввод числа          
                                std::cout<<"Введите символьный параметр: "; std::cin>>simbol;
                                    square(side, simbol);
                                        std::cout<<std::endl;
                                            break;}
                              else 
                              {  cout <<"Некорректный ввод размера "<< " :)\n"  }
 
-----------
-----------
Добавлено через 4 минуты
Повторный запрос о вводе размера фигуры, можно организовать на
C++
1
goto
1
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
24.01.2016, 12:23  [ТС]
C++
1
2
3
4
5
6
7
8
9
std::cout<<"Введите размер фигуры: ";
                          std::cin>>side;
                             if(!cin.fail()){            \\ Проверка на ввод числа          
                                std::cout<<"Введите символьный параметр: "; std::cin>>simbol;
                                    square(side, simbol);
                                        std::cout<<std::endl;
                                            break;}
                              else 
                              {  cout <<"Некорректный ввод размера "<< " :)\n"  }
что-то он на if(!cin.fail()) ругается
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
24.01.2016, 12:39
На что ругается? У меня все ок.

Добавлено через 4 минуты
библиотеки какие подключены?
1
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
24.01.2016, 12:46  [ТС]
библиотеки какие подключены?
только
C++
1
2
#include<iostream>
#include<iomanip>
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
24.01.2016, 12:52
Лучший ответ Сообщение было отмечено vikiroy как решение

Решение

Цитата Сообщение от vikiroy Посмотреть сообщение
что-то он на if(!cin.fail()) ругается
потому что косые черточки (\\) не в ту сторону косятся, не?
1
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
24.01.2016, 12:55
Мляха...
C++
1
2
3
4
5
6
7
8
9
std::cout<<"Введите размер фигуры: ";
std::cin>>side;
if(!std::cin.fail()){            \\ Проверка на ввод числа          
std::cout<<"Введите символьный параметр: "; std::cin>>simbol;
square(side, simbol);
std::cout<<std::endl;
break;}
else{
std::cout <<"Некорректный ввод размера "<< " :)\n"}
0
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
24.01.2016, 12:59  [ТС]
потому что косые черточки (\\) не в ту сторону косятся, не?
Да! Блин!)))))) Всем спасибо большое!))))))
0
24.01.2016, 13:00

Не по теме:

Цитата Сообщение от vikiroy Посмотреть сообщение
там плюс точка с запятой пропущена, а так работает
это в другой уже строчке :)

0
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
24.01.2016, 13:01  [ТС]
согласен)
0
24.01.2016, 13:05

Не по теме:

vikiroy, а почему у Вас весь код плывет вправо?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2016, 13:05
Помогаю со студенческими работами здесь

Циклы и операторы ветвления
Добрый вечер!Помогите с задачей!Ни как правильно её решить не смог... По заданию Программа должна использовать цикл для запроса доходов и...

Задача на циклы и ветвления.
Народ вот у меня такая задача: По году в номере группы определить, на каком курсе учится студент. Я немного не могу понять как сделать...

Циклы и структуры ветвления
- Структуры с ветвлением. - Циклические структуры. Нужен ответ как будет выводится на экране программы.

Задача на циклы и ветвления.
Всем доброго дня! помогите пожалуйста с задачей. Выяснить, является ли заданное число m членом геометрической прогрессии, первый член...

Задача на циклы и ветвления.
Все доброго утра! Помогите с одним вопросиком. В ботаническом саду растет волшебное дерево. В начале 2010 года его высота составляла L...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru