Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339

Портирование кода на С++ (проверка вводимых данных пользователем на корректность)

19.10.2012, 07:49. Показов 2193. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется портировать код с С# на С++. Код на шарпе - очень простой. В нем не используются языковые особенности шарпа, перевести, я думаю, будет легко
В итоге создам несколько тредов, дабы распараллелить процесс и сделать результат читабельнее.
Буду очень благодарен за помощь
Начнём, пожалуй:
Часть 1. Элегантное заполнение переменных

C#
1
2
3
4
5
6
7
8
9
10
11
12
double a;
            do
            {
                Console.WriteLine("Введите A: ");
                if (double.TryParse(Console.ReadLine(), out a) == false)
                {
                    Console.WriteLine("Ошибка ввода!");
                    continue;
                }
                else
                    break;
            } while (true);
Описание происходящего:
В бесконечном цикле просим пользователя ввести переменную, если он ввел её правильно, выходим из цикла(break). Если он таки ввёл переменную некорректно, то говорим, что он неправ, и перескакиваем к следующей итерации цикла(continue).

Добавлено через 41 минуту
Если что, то double - имеется ввиду действительное число

Продолжение темы: Портирование кода на С++ (проверка вводимых данных пользователем на корректность)

Часть 2. Основной код

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
Console.WriteLine("x            F");
 
            bool cel;
            if ((((int)Math.Truncate(a) | (int)Math.Truncate(b)) & (int)Math.Truncate(c)) == 0
 
            {
                cel = true;
            }
            else
            {
                cel = false;
            }
 
 
 
 
 
 
 
            for (double x = xn; x < xc; x += dx)
            {
                double F;
                if (x < 0.6 && b + c != 0)
                {
                    F = f1(a, b, c, x);
                }
                else if (x > 0.6 && b + c == 0)
                {
                    F = f2(a, c, x);
                }
                else
                {
                    F = f3(a, c, x);
                }
 
                if (cel)
                {
                    Console.WriteLine(x + "            " + Math.Truncate(F));
                }
                else
                {
                    Console.WriteLine(x + "            " + F);
                }
            }
 
 
 
 
 
            Console.ReadLine();

Примечание: | & - поразрядные операции
(int) - явное преобразование
Math.Truncate - вырывает целую часть действительного числа(Примеры: 12,23 -> 12, 12,99 -> 12)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.10.2012, 07:49
Ответы с готовыми решениями:

Проверка на корректность вводимых данных
Есть такой код где данные вводятся целого типа( int x; scanf(&quot;%d&quot;, &amp;x); ). Вопрос такой как проверить действительно ли введено число либо...

Проверка на корректность вводимых данных
В моём коде должны быть ТОЛЬКО вводимые числа от -1000 до 1000 (с плавающей точкой). Если пользователь вводит СИМВОЛ или числа ВНЕ моего...

Проверка вводимых пользователем данных
Здравствуйте господа! Помогите новичку! Такая сложность. Нужно проверять что вводит пользователь в textbox. Ниже код, запрещающий вводить...

7
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
19.10.2012, 08:31
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double a;
do
{
    std::cout << "Введите A: \n";
    if (std::cin >> a)
        break;
    else
    {
        std::cout << "Ошибка ввода\n";
        continue;
    }
}
while (true);
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
19.10.2012, 08:35  [ТС]
Пaтрик, большое спасибо)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.10.2012, 09:02
Цитата Сообщение от Смирняга Посмотреть сообщение
Требуется портировать код с С# на С++. Код на шарпе - очень простой.
Если что, то double - имеется ввиду действительное число
Ничего монструозней придумать не мог? Ни кто не зацикливает до бесконечности валидацию ввода типом вводимых данных. На всех нормальных языках ввод - это ровно одна операция сразу с целевой переменной.
0
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
19.10.2012, 09:18
taras atavin, Вы в своем коде никогда не предостеригаетесь от ошибок пользователя?
0
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
19.10.2012, 09:33  [ТС]
taras atavin, ваши пользователи - очень умные, образованные люди, которые знают, ЧТО надо вводить и КАК надо вводить и перед вводом они несколько часов практикуются в блокноте?
Вам очень повезло, что у вас такие пользователи, а мы, ламеры, будем строить монструозные конструкции XD

Добавлено через 6 минут
В начале треда добавилась вторая часть кода(злой админ решил, что моих аргументов(читабельность и распараллеливание) к создание дополнительных тредов - недостаточен)
Буду очень признателен, если вы переведёте и его(будет ещё и третья часть)
0
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
19.10.2012, 09:39
И где мой пост с кодом?
0
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
19.10.2012, 13:45  [ТС]
Пaтрик, всмысле? 1-й - есть
Или вы уже второй написали?

Добавлено через 56 минут
[bump!]

Добавлено через 1 минуту
Вот, если кто не увидел:
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
Console.WriteLine("x            F");
 
            bool cel;
            if ((((int)Math.Truncate(a) | (int)Math.Truncate(b)) & (int)Math.Truncate(c)) == 0
 
            {
                cel = true;
            }
            else
            {
                cel = false;
            }
 
 
 
 
 
 
 
            for (double x = xn; x < xc; x += dx)
            {
                double F;
                if (x < 0.6 && b + c != 0)
                {
                    F = f1(a, b, c, x);
                }
                else if (x > 0.6 && b + c == 0)
                {
                    F = f2(a, c, x);
                }
                else
                {
                    F = f3(a, c, x);
                }
 
                if (cel)
                {
                    Console.WriteLine(x + "            " + Math.Truncate(F));
                }
                else
                {
                    Console.WriteLine(x + "            " + F);
                }
            }
 
 
 
 
 
            Console.ReadLine();
Примечание: | & - поразрядные операции
(int) - явное преобразование
Math.Truncate - вырывает целую часть действительного числа(Примеры: 12,23 -> 12, 12,99 -> 12)

Добавлено через 49 минут
[bump!]

Добавлено через 54 минуты
[bump!]

Добавлено через 7 минут
Админ, можно я таки создам вторую тему, просто содержание этой темы и её название(первые комментарии) не сочетаются. Подайте знак)

Добавлено через 55 минут
[bump!]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.10.2012, 13:45
Помогаю со студенческими работами здесь

Проверка данных вводимых пользователем
Добрый день, существует такой код: Sub Ввод() Worksheets(&quot;таблица&quot;).Select 'выбор листа &quot;таблица&quot; ...

Проверка вводимых пользователем данных в DataGridView
Необходимо сделать, чтобы пользователь в DataGridView мог вводить только числа и в одну ячейку не больше одной запятой. Аналогичную задачу...

Проверка кода на корректность
Сделал выподающее меню. Всё работает, меня только один вопрос гложет: всё ли корректно, может код считаться хорошим? &lt;ul...

Проверка кода на корректность
Добрый день! Сверстала, если можно так назвать первый сайт по шаблону учебного с Codeacademy (код писала сама, ссылка на сайт...

Проверка кода на корректность
можно ли тут выкладывать код на проверку? ничего серьезного, просто игра с условием и цифрами. что-то не сходится и кажется, не совсем...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru