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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
#1

Защита от дурака - C++

19.02.2013, 06:28. Просмотров 3515. Ответов 33
Метки нет (Все метки)

Вот только начал изучать С++ помогите составить защиту от дурака пожалуйста, вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main ()  {
    setlocale(0, "rus");
    double A;
    double Z;
    double U;
 
cout<<"Введите значение числа A\n";
cin>>A;
 
cout<<"Введите значение числа Z\n";
cin>>Z;
 
cout<<"U=";
 
cout<<(A*Z*Z)+(((A/2)*(Z*Z))/13.61)-(A*Z)   <<"\n";
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 06:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Защита от дурака (C++):

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

Защита от дурака - C++
Вот кусок кода: do { cout &lt;&lt; &quot;Выберите вариант решения:&quot; &lt;&lt; endl; cout &lt;&lt; &quot; - первй вариант.&quot; &lt;&lt; endl; cout &lt;&lt; &quot; -...

Защита от дурака - C++
Как в этот код добавить защиту от ввода символов? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;cmath&gt; ...

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

Защита от дурака - C++
нужна защита от дурака пытался реализовать с помощью 2 разных способов не вышло. #include &lt;iostream&gt; #include &lt;string&gt; #include...

Защита от дурака - C++
Здравствуйте уважаемые форумчане! я к вам, и вот по какому делу) Вот есть у меня задача: Даны два целых числа А и В. Вывести в порядке...

33
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 07:45 #16
Это не мой код =)... Прислал тебе тот код какой-то умный человек )... Ты в проект его скопировал ?
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
19.02.2013, 08:05  [ТС] #17
Цитата Сообщение от UVEN Посмотреть сообщение
Это не мой код =)... Прислал тебе тот код какой-то умный человек )... Ты в проект его скопировал ?
Ну да щас вот еще раз попробую, а для переменной Z в моем коде можно также взять type и count или же нужны другие переменные?

Добавлено через 1 минуту
Я вот попробовал int заменить на double и программа выдает ошибку

Добавлено через 1 минуту
А нет при int тоже ошибка

Добавлено через 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
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
 
int main()
{
 
    setlocale(0, "rus");
    double A;
    double x = 0;
    do
    {
        x = 0;
        string y;
        cout << "Введите значение числа A\n";
        cin >> y;
        for (int i = 0; i < y.size(); i++)
            if (isdigit(y[i]) == 0)
                x++;
        if (x == 0)
            break;
        else
            cout << "Ошибка, попробуйте снова:\n";
    } while (x > 0);
    cout << "вы ввели правильно!\n\n";
    double Z;
 
    cout << "Введите значение числа Z\n";
    cin >> Z;
 
    cout << "U=";
 
    cout << (A * Z * Z) + (((A / 2) * (Z * Z)) / 13.61) - (A * Z) << "\n";
 
    return 0;
}
Добавлено через 12 минут
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
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
 
int main()
{
 
    setlocale(0, "rus");
    double A;
    double x = 0;
    do
    {
        x = 0;
        string y;
        cout << "Введите значение числа A\n";
        cin >> y;
        for (int i = 0; i < y.size(); i++)
            if (isdigit(y[i]) == 0)
                x++;
        if (x == 0)
            break;
        else
            cout << "Ошибка, попробуйте снова:\n";
    } while (x > 0);
    cout << "вы ввели правильно!\n\n";
    double Z;
 
    cout << "Введите значение числа Z\n";
    cin >> Z;
 
    cout << "U=";
 
    cout << (A * Z * Z) + (((A / 2) * (Z * Z)) / 13.61) - (A * Z) << "\n";
 
    return 0;
}
Добавлено через 14 секунд
Не работает(
0
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 08:08 #18
Расскажи шаг за шагом что ты делаешь =)
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
19.02.2013, 08:12  [ТС] #19
Вообщем начну сначала, мне нужно сделать проверку данных чтобы он принимал только числа а комбинации типа: 1аа, пп4, вцв - не принимал только числа: 11, 242 и прочие. Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main ()  {
    setlocale(0, "rus");
    double A;
    double Z;
    double U;
 
cout<<"Введите значение числа A\n";
cin>>A;
 
cout<<"Введите значение числа Z\n";
cin>>Z;
 
cout<<"U=";
 
cout<<(A*Z*Z)+(((A/2)*(Z*Z))/13.61)-(A*Z)   <<"\n";
 
return 0;
}
0
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 08:17 #20
У меня программа работает, код читает без ошибки ).. Какие ошибки выдает у тебя ?..
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
19.02.2013, 08:20  [ТС] #21
Цитата Сообщение от UVEN Посмотреть сообщение
У меня программа работает, код читает без ошибки ).. Какие ошибки выдает у тебя ?..
Ты про какую программу?
0
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 08:21 #22
Твоя программа )...
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
19.02.2013, 08:39  [ТС] #23
Цитата Сообщение от UVEN Посмотреть сообщение
Твоя программа )...
Ну моя то работает, а вот как в ней проверку данных сделать?
0
daslex
1285 / 529 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
19.02.2013, 21:05 #24
Скорее всего лазейки найдутся, но как вариант.
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
#include <iostream>
#include <string>
#include <ctype.h>
#include <sstream>
 
using namespace std;
 
double string_to_double( const std::string& s )
 {
   std::istringstream i(s);
   double x;
   if (!(i >> x))
     return 0;
   return x;
 } 
 
 
double Foo(string &s)
{ 
    string temp=""; 
    int count=0;    
    
        
    for (int i=0;i<s.size();i++) 
    {
        if ( (i>0)&&(s[i]=='.')&&(!count)) count=i-1;
        if ((s[i]>='0')&&(s[i]<='9')) temp.push_back(s[i]);     
    }   
 
    if (count) temp.insert(count,1,'.');
    if (s[0]=='-') temp.insert(0,1,'-');
    
 
    if (s.size()!=temp.size())  return 1;
    else return 0;
 
}
 
 
void input(double &x,char Name)
{
    string ch="";
   double correct=10;
    while (correct)
   {
    cout<<"Введи "<<Name<<"   ";
     cin>>ch;
     correct=Foo(ch);
     if (correct) cout<<"Некорректный ввод\n\n";
     else x=string_to_double(ch);
   }
}
    
 
int main(void)
{   
   
   double A=0,Z=0,U=0;
   
   input(A,'A'); //Предлагаешь ввести A
   input(Z,'Z'); //Предлагаешь ввести Z
   input(U,'U'); //Предлагаешь ввести U
   
  
 
   cout<<"\n";
   cout<<"A = "<<A<<"\n";
   cout<<"U = "<<U<<"\n";
   cout<<"Z = "<<Z<<"\n";
   cout<<"Сумма = "<<A+U+Z<<"\n\n"; //Подставляй своё выражение (здесь сумма)
   cout<<(A*Z*Z)+(((A/2)*(Z*Z))/13.61)-(A*Z)   <<"\n";//Вот твоё
   
 
system("PAUSE");
return 0;
}
0
Lemm_Leto
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 19
19.02.2013, 23:37 #25
а состояние потока использовать не торт?
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
20.02.2013, 08:27  [ТС] #26
Еще хотел спросить как поставить ограничение на количество вводимых символов?
0
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
20.02.2013, 08:40 #27
Цитата Сообщение от MishkaSh Посмотреть сообщение
Еще хотел спросить как поставить ограничение на количество вводимых символов?
cin.getline
там параметры
куда считать, сколько и символ конца какой использовать
0
daslex
1285 / 529 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
20.02.2013, 10:22 #28
MishkaSh, в моем коде можно так.
одна функция слегка изменена и сам ввод стал другим
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void input(double &x,char Name,int size)
{
    string ch="";
   double correct=10;
    while (correct)
   {
    cout<<"Введи "<<Name<<"   ";
     cin>>ch;  
     correct=Foo(ch);
     if (correct) cout<<"Некорректный ввод\n\n";
     else if (ch.size()>size) {correct=1; cout<<"Слишком много символов, повторите ввод\n\n";}
     else x=string_to_double(ch);
   }
}
При вводе большего числа символов чем нужно, об этом сообщается и требуется повторить ввод.
C++
1
2
3
   input(A,'A',3); //Предлагаешь ввести A (ограничение 3 символа)
   input(Z,'Z',4); //Предлагаешь ввести Z (ограничено 4 символа)
   input(U,'U',5); //Предлагаешь ввести U (ограничено 5 символов)
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
20.02.2013, 12:27  [ТС] #29
Цитата Сообщение от Tiva Посмотреть сообщение
cin.getline
там параметры
куда считать, сколько и символ конца какой использовать
Как через cin.getline сделать?

Добавлено через 6 минут
Вот сам код:
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
#include <iostream>
using namespace std;
 
int main () 
{
setlocale(0, "rus");
double A;
double Z;
double U;
char name[10], title[10];
cout<< "Введите значение числа A\n";
while (!(cin>>A) || cin.get()!='\n')
{
cout<<"Ошибка, попробуйте еще раз\n";
cin.clear();
cin.sync();
cout<<"Введите значение числа A\n";
}
 
cout<<"Введите значение числа Z\n";
while (!(cin>>Z) || cin.get()!='\n')
{
cout<<"Ошибка, попробуйте еще раз\n";
cin.clear();
cin.sync();
cout<<"Введите значение числа Z\n";
}
 
cout<<"U=";
 
cout<<(A*Z*Z)+(((A/2)*(Z*Z))/13.61)-(A*Z) << "\n";
 
 
return 0;
}
Добавлено через 16 минут
И вот в этом коде через cin.getline нужно сделать ограничение на количество вводимых символов в double
0
AlexRayPlay
0 / 0 / 0
Регистрация: 18.10.2017
Сообщений: 2
18.10.2017, 13:47 #30
Цитата Сообщение от Tiva Посмотреть сообщение
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
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int main(void)
{
    setlocale(0,"");
    int A;
    int count=0;
    do
    {
        count=0;
        string temp;
        cout<<"введите значение:\n";
        cin>>temp;
        
        for(int i=0; i<temp.size(); i++)
            if(isdigit(temp[i])==0) count++;
        if(count==0) break;
        else cout<<"некорректное значение\n";
    }
    while(count>0);
 
cout<<"вы ввели правильно!\n\n";
}
А не подскажете как сделать точно такую же проверку, только на языке C (используя scanf, printf и т.д. (стандартные функции)). Ибо нужно знать количество символов в строке, а я могу ввести как 2 символа, так и 5, так и 145 и т.д. Заранее спасибо
0
18.10.2017, 13:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2017, 13:47
Привет! Вот еще темы с ответами:

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

защита от дурака как сделать? - C++
void DobvZapis() { int i; int j; char komanda; j = kol; do { system(&quot;cls&quot;); cout &lt;&lt; &quot;Введите книгу&quot; &lt;&lt;...

Защита от дурака (пустое значение в названии) - C++
Доброго вечера) Я пытаюсь сделать защиту от дурака, если конкретно - проверку при на ввод названия пустого значение, т.е. пробела или...

Защита от дурака. Ввод данных типа int с клавиатуры. - C++
Данные типа int вводятся с клавиатуры. нужно поставить защиту от дурака. Полазил на форуме нашёл программу: по аналогии пытался...


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

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

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