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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 06:28     Защита от дурака #1
Вот только начал изучать С++ помогите составить защиту от дурака пожалуйста, вот код:

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 06:28     Защита от дурака
Посмотрите здесь:

C++ Защита от дурака. Разбор кода
C++ Защита от дурака
защита от дурака C++
Защита от дурака (пустое значение в названии) C++
C++ Защита от дурака
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Troll_Face
 Аватар для Troll_Face
599 / 399 / 4
Регистрация: 26.04.2012
Сообщений: 2,070
19.02.2013, 06:35     Защита от дурака #2
что от чего защищать надо?
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 06:38  [ТС]     Защита от дурака #3
Чтобы принимал только числа, а от букв и цифр с буквами защиту сделать
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
19.02.2013, 06:45     Защита от дурака #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define ignorecin std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail())
#define clearcin std::cin.clear(); while(std::cin.get()!='\n');
do
{
    cout<<"Введите значение числа A\n";
    if(!(cin>>A))
    {
        ignorecin;
        cout<<"некорректное значение\n";
    }
    else break;
}
while(!(cin>>A));
clearcin;
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 07:00  [ТС]     Защита от дурака #5
Спасибо, но работает только при вводе просто букв, если же написать комбинацию фф2 или же 7нн то он ее примет

Добавлено через 3 минуты
У меня уже было что то на подобии и я не знал как исправить ошибку
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 07:01     Защита от дурака #6
Нужно сделать проверку типа вводимого ... пользуйся typeid
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 07:03  [ТС]     Защита от дурака #7
Как им пользоваться?
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
19.02.2013, 07:05     Защита от дурака #8
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";
}
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 07:14     Защита от дурака #9
C++
1
2
3
4
5
6
7
8
9
10
11
 #include <iostream.h>
    #include <iomanip.h>
 
float a=0;
int main()
{
   if (typeid(int) == typeid(a))
   {
    cout<<"true";
   }
}
true не будет напечатано так как переменная a - float...
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
19.02.2013, 07:20     Защита от дурака #10
Цитата Сообщение от UVEN Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
 #include <iostream.h>
    #include <iomanip.h>
 
float a=0;
int main()
{
   if (typeid(int) == typeid(a))
   {
    cout<<"true";
   }
}
true не будет напечатано так как переменная a - float...
сравниваем int и float =)
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 07:25  [ТС]     Защита от дурака #11
Блин ребят что то я вообще не въехал(

Добавлено через 2 минуты
Мне в double нужно
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 07:33     Защита от дурака #12
Совсем уж не то посоветовал =)... бывает с просонья
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 07:36  [ТС]     Защита от дурака #13
Цитата Сообщение от 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";
}
Он ошибку выдает
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 07:40     Защита от дурака #14
Какая именно ошибка ?.. Должно работать =)
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 07:42  [ТС]     Защита от дурака #15
Цитата Сообщение от UVEN Посмотреть сообщение
Какая именно ошибка ?.. Должно работать =)
Я вот только второй день программирую так что я не знаю как мне твой код засунуть в свой. наверно просто каряво засунул и не работает(
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 07:45     Защита от дурака #16
Это не мой код =)... Прислал тебе тот код какой-то умный человек )... Ты в проект его скопировал ?
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
19.02.2013, 08:05  [ТС]     Защита от дурака #17
Цитата Сообщение от UVEN Посмотреть сообщение
Это не мой код =)... Прислал тебе тот код какой-то умный человек )... Ты в проект его скопировал ?
Ну да щас вот еще раз попробую, а для переменной Z в моем коде можно также взять type и count или же нужны другие переменные?

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

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

Добавлено через 1 минуту
вот что я написал:
#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
#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 секунд
Не работает(
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 08:08     Защита от дурака #18
Расскажи шаг за шагом что ты делаешь =)
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2013, 08:17     Защита от дурака
Еще ссылки по теме:

C++ защита от дурака как сделать?
C++ Защита от дурака
C++ Защита от дурака

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

Или воспользуйтесь поиском по форуму:
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 08:17     Защита от дурака #20
У меня программа работает, код читает без ошибки ).. Какие ошибки выдает у тебя ?..
Yandex
Объявления
19.02.2013, 08:17     Защита от дурака
Ответ Создать тему
Опции темы

Текущее время: 06:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru