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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Смирняга
69 / 14 / 1
Регистрация: 29.12.2010
Сообщений: 339
#1

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

19.10.2012, 07:49. Просмотров 1282. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2012, 07:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Портирование кода на С++ (проверка вводимых данных пользователем на корректность) (C++):

Программирование метода градиентного спуска - проверка кода на корректность - C++
Здравствуйте! мне необходимо сдать лабораторную работу по методу градиентного спуска. я запрограммировал этот метод поиска минимума...

Проверка на корректность введенных данных - C++
дана задача ввести номер телефона пробел и дата в формате день. месяц. год. Выполнить простейшую проверку на корректность введенных данных....

Проверка на корректность входных данных - C++
Нужно написать программу, которая бы проверяла строку на корректность. Допустимый формат вот такой +7 (233) 555-11-22. Как это сделать? В...

Проверка введенных данных cin на корректность - C++
Вот кусок кода : input1 : cout&lt;&lt;&quot;Введите количество животных которые когда либо жили у вас : &quot;; cin&gt;&gt;amountPats; if (!cin) { ...

Проверка вводимых данных - C++
#include &lt;iostream&gt; using namespace std; int main() { double a, b, c; cout &lt;&lt; &quot;Enter the first side of the...

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

7
Пaтрик
416 / 391 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
19.10.2012, 08:31 #2
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
Смирняга
69 / 14 / 1
Регистрация: 29.12.2010
Сообщений: 339
19.10.2012, 08:35  [ТС] #3
Пaтрик, большое спасибо)
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.10.2012, 09:02 #4
Цитата Сообщение от Смирняга Посмотреть сообщение
Требуется портировать код с С# на С++. Код на шарпе - очень простой.
Если что, то double - имеется ввиду действительное число
Ничего монструозней придумать не мог? Ни кто не зацикливает до бесконечности валидацию ввода типом вводимых данных. На всех нормальных языках ввод - это ровно одна операция сразу с целевой переменной.
0
Пaтрик
416 / 391 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
19.10.2012, 09:18 #5
taras atavin, Вы в своем коде никогда не предостеригаетесь от ошибок пользователя?
0
Смирняга
69 / 14 / 1
Регистрация: 29.12.2010
Сообщений: 339
19.10.2012, 09:33  [ТС] #6
taras atavin, ваши пользователи - очень умные, образованные люди, которые знают, ЧТО надо вводить и КАК надо вводить и перед вводом они несколько часов практикуются в блокноте?
Вам очень повезло, что у вас такие пользователи, а мы, ламеры, будем строить монструозные конструкции XD

Добавлено через 6 минут
В начале треда добавилась вторая часть кода(злой админ решил, что моих аргументов(читабельность и распараллеливание) к создание дополнительных тредов - недостаточен)
Буду очень признателен, если вы переведёте и его(будет ещё и третья часть)
0
Пaтрик
416 / 391 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
19.10.2012, 09:39 #7
И где мой пост с кодом?
0
Смирняга
69 / 14 / 1
Регистрация: 29.12.2010
Сообщений: 339
19.10.2012, 13:45  [ТС] #8
П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
19.10.2012, 13:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 13:45
Привет! Вот еще темы с ответами:

Проверка вводимых данных - C++
Вот часть программы int main(void) { int vop; setlocale(LC_ALL, &quot;Russian&quot;); int mas1, mas2, mas3, outmas; int ke1, ke2,...

Проверка вводимых данных - C++
Доброго времени суток, форумчане. Я столкнулся с такой проблемой: при введении еденицы измерения, если та инициализирована ранее то все...

Как сделать, чтобы вместо вводимых пользователем данных, на экране печатались символы-заменители? - C++
Вечер добрый,молодые люди. Помогите сделать так,чтобы когда пользователь вводил данные,на экране печаталось не 1234 а **** Благодарю

Проверка корректности вводимых данных - C++
Есть программа на проверку високосного года. Преподаватель при проверке вводит &quot;5 Аотао&quot; к примеру и программа читает первое число и...


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

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

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