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

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

Войти
Регистрация
Восстановить пароль
 
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 328
#1

Доработать: защитить от дурака (запретить введения опр. символов) - C++

09.10.2012, 19:35. Просмотров 726. Ответов 7
Метки нет (Все метки)

Доброго времени суток форумчане, я впал в моральный приступ эпилепсии, посему создал новую тему, т.к. предыдущая зашла в тупик. Итак, вот программа, с её доскональным описанием:
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
/*Программа, которая в массиве (заполненным рандомно на интервале от 0 до 155) 
с заданным кол-вом элементов, находит числа у которых при делении на 7 в остатке 
остаётся 1, 2 или 5 */
 
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
 
int f_ostatok(int a)
{   
    if (a%7==1 || a%7==2 || a%7==5)
        return 1;
    else
        return 0;
}
 
int main ()
{
    int number;
    int summ = 0;
    cout << "Vvedite kol-vo ycheek massiva : ";
    cin >> number;
    cout << "\n";
    //создали динамический массив
    int *mass = new int[number];
    //заполняем массив рандомными значениями
    srand(time(NULL));
    for (int i = 0; i < number; i++) 
    {
        mass[i]=(rand()%155);       
        cout << "Znachenie elementa " << i <<" = "<< mass[i] << endl;
    }
    //находим числа, что делятся на 7 и дают в остатке 1, 2 или 5
    for (int i = 0; i < number; i++)
    {
        summ = summ + f_ostatok(mass[i]);   
    }
    cout << "\nKol-vo elementov pri delenii kotoryh na 7 ostatok = 1 // 2 // 5: " << summ;
    if (summ = 0)
    {
        cout << "\nTrebuemix elementov v massive net";
    }
    delete[] mass;
    getch();
    return 0;
}
Итак, нужно защитить переменную number таким образом, что она может быть только числом.
Как переработать код?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 19:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Доработать: защитить от дурака (запретить введения опр. символов) (C++):

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

Запретить ввод символов - C++
Ребята, как поставить запрет на ввод символов в переменную j? #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include...

Предохранение, защита (от дурака и лентяя), запретить введение - MS Access
Всем доброго и удачного дня!!! Тут у меня давно назревал вопрос, но как то было недосуг. Имеем основную форму, в ней подчинённую. Как...

Запрет на ввод опр символов - MS Access
Опять вопрос, имеется поле куда вводятся номера карт (A0091, G0056). Как поставить запрет на ввод карточек с начальной буквой &quot;G&quot;?...

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

Блокировка введения всех символов, кроме цифр - JavaScript
Здравствуйте. Помогите, пожалуйста, создать скрипт, который не позволит вводит в поле формы любых символов, кроме цифр, и разрешит...

7
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
09.10.2012, 19:43 #2
C++
1
2
3
    while(cin >> number, number <= 0) {
        cout << "Error, only numbers > 0\n";
    }
как-то так
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 328
09.10.2012, 19:46  [ТС] #3
Цитата Сообщение от ZoRT Посмотреть сообщение
C++
1
2
3
    while(cin >> number, number <= 0) {
        cout << "Error, only numbers > 0\n";
    }
как-то так
нет, так бесконечно выводит Error, only numbers > 0
0
avizer
5 / 5 / 1
Регистрация: 07.04.2012
Сообщений: 38
09.10.2012, 19:53 #4
C++
1
2
3
4
5
   int x;
   if (cin>>x)
   cout<<"chislo";
   else
   cout<<"ne chislo";
0
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
09.10.2012, 19:58 #5
Цитата Сообщение от Gudsaf Посмотреть сообщение
нет, так бесконечно выводит Error, only numbers > 0
странно, http://liveworkspace.org/code/75ecf1058618e9ab1658a225edf364de у меня и тут работает как и задумывалось
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 328
09.10.2012, 20:15  [ТС] #6
Цитата Сообщение от ZoRT Посмотреть сообщение
странно, http://liveworkspace.org/code/75ecf1058618e9ab1658a225edf364de у меня и тут работает как и задумывалось
VS 2012 - бесконечный цикл.
Цитата Сообщение от avizer Посмотреть сообщение
C++
1
2
3
4
5
   int x;
   if (cin>>x)
   cout<<"chislo";
   else
   cout<<"ne chislo";
Работает не верно, при вводе "65рпдцук" - думает что всего 65 ячеек, то есть строку "65рпдцук" считает числом - а это не так...
0
avizer
5 / 5 / 1
Регистрация: 07.04.2012
Сообщений: 38
09.10.2012, 20:25 #7
ok
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   int x;
   while(true){
        cout << "chislo: ";
        cin >> x;
        if (cin.peek() == '\n'){
            cin.get();
            break;
        }
        else{
            cout <<"povtor:"<<endl;
            cin.clear();
            while (cin.get() != '\n'){}
        }
    }
1
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 328
09.10.2012, 21:06  [ТС] #8
Ещё хотел бы добавить доработку пользователя нашего форума - unkarjedy, она мне тоже понравилась, да и человек до цели в итоге дошёл - за что ему ++.... в плюс бесконечности

Цитата Сообщение от unkarjedy Посмотреть сообщение
Нормально работает

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
/*Программа, которая в массиве (заполненным рандомно на интервале от 0 до 155) 
с заданным кол-вом элементов, находит числа у которых при делении на 7 в остатке 
остаётся 1, 2 или 5 */
 
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
 
int f_ostatok(int a)
{   
    if (a%7==1 || a%7==2 || a%7==5)
        return 1;
    else
        return 0;
}
 
int main ()
{
    int number;
    string number_str;
    int summ = 0;
    cout << "Vvedite kol-vo ycheek massiva : ";
    cin >> number_str;
    
    
    for(int i = 0; i < number_str.length(); i++) {
        char ch = number_str.c_str()[i];// считываем очередной символ из принятой строки
        if(!isdigit(ch)) { // если он не цифра
            cerr << " ERROR: you entered a letter!" << endl << endl; // печатаем ошибку
            return 1; // выходим из программы. не важно 1 или 0 для вас
        }
    }
    number = atoi(number_str.c_str()); // конвертируем строку в число
 
 
    //создали динамический массив
    int *mass = new int[number];
    //заполняем массив рандомными значениями
    srand(time(NULL));
    for (int i = 0; i < number; i++) 
    {
        mass[i]=(rand()%155);       
        cout << "Znachenie elementa " << i <<" = "<< mass[i] << endl;
    }
    //находим числа, что делятся на 7 и дают в остатке 1, 2 или 5
    for (int i = 0; i < number; i++)
    {
        summ = summ + f_ostatok(mass[i]);   
    }
    cout << "\nKol-vo elementov pri delenii kotoryh na 7 ostatok = 1 // 2 // 5: " << summ;
    if (summ = 0)
    {
        cout << "\nTrebuemix elementov v massive net";
    }
    delete[] mass;
    getch();
    return 0;
}
Добавлено через 1 минуту
Защитил переменную number
0
09.10.2012, 21:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2012, 21:06
Привет! Вот еще темы с ответами:

Игра 21 очко: Доработать проверку вводимых символов - C (СИ)
Здравствуйте. Вот есть игрушка в 21 очко. Всё хорошо работает, но стоит задача немного это доработать: 1) Нужно доработать проверку...

Доработать код. Ввод количества символов с клавиатуры - C#
Доработать код. Буду очень благодарна. Требуется, чтобы количество символов(длина строки l) вводилось с клавиатуры... помогите...

Запретить ввод определенных символов - C#
В текстовое поле можно вводить буквы лат. и рус.алфавита, пробел, дефис, цифры. В KeyPress условие if (e.KeyChar != 8 &amp;&amp; e.KeyChar...

Как запретить ввод символов - C (СИ)
Можно ли как-то запретить ввод символов в scanf(&quot;%f&quot;, &amp;qwe); т е мне надо, чтобы программа выбирала только цифры или не выполнялась, пока...


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

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

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