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

Определение значения переменной в цикле - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
31.07.2012, 03:45     Определение значения переменной в цикле #1
В данной функции переменная k должна быть равна position в начале цикла,а когда отлаживаю программу,то k инициируется совершенно другим значением(большое отрицательное число,как будто я и не инициирую переменную).Почему так,не подскажите?
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
bool Dictionary::correct(char id[],char TempID[])
{
    int digit = 0;
    int temp = 0;
    int degree;
    int position = 0;
 
    for(int i = 0;i < 16;i++)
        if(id[i] == '.')
        {
            if(position == 0)
            {
                
                degree = 2;
 
                for(int k = position;k < i;k++)
                {
                    temp = atoi((char *)id[k]);
                    digit += temp*pow(10.0,degree);
                    degree--;
                }
 
                itoa(digit,(char *)TempID[temp++],10);
 
                TempID[temp++] = (char)".";
 
                digit = 0;
                position = i;
            }
            else
            {
                degree = i - position - 2;
 
                for(int k = position + 1;k < i;k++)
                {
                    temp = atoi((char *)id[k]);
                    digit += temp*pow(10.0,degree);
                    degree--;
                }
 
                itoa(digit,(char *)TempID[temp++],10);
 
                TempID[temp++] = (char)".";
 
                digit = 0;
                position = i;
            }
        }
 
 
    return true;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2012, 07:57     Определение значения переменной в цикле #2
Несколько вопросов. По коду, у вас всегда должна выполняться часть if(position == 0). Зачем тогда else ? И выведите на экран значение k в цикле, действительно ли оно у вас не такое, как должно быть:
C++
1
2
3
4
5
6
7
8
for(int k = position; k < i; k++)
{
   cout << k << endl;
                    
   temp = atoi((char *)id[k]);
   digit += temp * pow(10.0, degree);
   degree--;
}
Цитата Сообщение от alsav22 Посмотреть сообщение
temp = atoi((char *)id[k]);
Ошибка здесь. atoi() преобразует в int всю строку, а не отдельный символ. Нужно или так написать:
C++
1
2
3
4
5
6
for(int k = position; k < i; k++)
{
   temp = atoi(id);
   digit += temp * pow(10.0, degree);
   degree--;
}
(строка должна быть определёного вида (какая у вас, не видно), иначе вернёт 0) или, если вы хотите отдельный символ цифры преобразовать в число, то можно так написать:
C++
1
2
3
4
5
6
for(int k = position; k < i; k++)
{
   temp = id[k] - '0';
   digit += temp * pow(10.0, degree);
   degree--;
}
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
31.07.2012, 09:55  [ТС]     Определение значения переменной в цикле #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Зачем тогда else ?
ну у меня же в if и else разный код,каждый для своего случая
Цитата Сообщение от alsav22 Посмотреть сообщение
atoi() преобразует в int всю строку, а не отдельный символ.
вот за это спасибо

Добавлено через 12 минут
C++
1
itoa(digit,(char *)TempID[temp++],10);
как я понимаю так тоже нельзя,потому что нужно передавать указатель на массив?

Добавлено через 8 минут
C++
1
2
3
char *TempAnsi = "0";
//////////////////////
itoa(digit,TempAnsi,10);
не подскажите почему здесь вылетает ошибка,ранее выскакивало,что переменная TempAnsi используется,но не инициирована,а потом просто необработанное исключение вкаком-то регистре
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2012, 13:55     Определение значения переменной в цикле #4
Цитата Сообщение от alexey31415 Посмотреть сообщение
ну у меня же в if и else разный код,каждый для своего случая
Я вижу, что разный код. Я о другом написал. Если вы, перед входом в if(position == 0), задаёте значение int position = 0;, как у вас может произойти заход в else ?

Добавлено через 8 минут
Цитата Сообщение от alexey31415 Посмотреть сообщение
как я понимаю так тоже нельзя,потому что нужно передавать указатель на массив?
Имя массива преобразуется в указатель на начало массива, поэтому нужно передавать имя массива, и не надо явно приводить его к char *, т.к. TempID[] у вас и так char.

Добавлено через 3 минуты
Цитата Сообщение от alexey31415 Посмотреть сообщение
не подскажите почему здесь вылетает ошибка,ранее выскакивало,что переменная TempAnsi используется,но не инициирована,а потом просто необработанное исключение вкаком-то регистре
Лучше опишите, что вы хотите получить в методе correct().
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
31.07.2012, 14:53  [ТС]     Определение значения переменной в цикле #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Лучше опишите, что вы хотите получить в методе correct().
у меня ID должен быть в виде ххх.ххх.ххх.ххх.,где х -цифры,причём значения от 0 до 255 и я должен проверить эти значения,для хранения использую массив из 9 элементов char для хранения 8 значений(4 числа и 4 точки)
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 15:24     Определение значения переменной в цикле #6
C++
1
2
for(int i = 0;i < 16;i++)
        if(id[i] == '.')
1. У вас массив из 9 или из 16 ?
2. напишите else на if который я написал выше - возможно условие не срабатывает..
3. используйте дебагер =Р
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
31.07.2012, 15:36  [ТС]     Определение значения переменной в цикле #7
Цитата Сообщение от Dr.Urban Посмотреть сообщение
используйте дебагер
использую
Цитата Сообщение от Dr.Urban Посмотреть сообщение
напишите else на if который я написал выше
не в этом дело,ошибка возникает,когда использую itoa

Цитата Сообщение от alexey31415 Посмотреть сообщение
char *TempAnsi = "0";
//////////////////////
itoa(digit,TempAnsi,10);
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 15:43     Определение значения переменной в цикле #8
Если у вас указатель - выделяем память.
C++
1
char * TempAnsi = new char[LEN]
Или

C++
1
char TempAnsi[LEN]
потом

C++
1
itoa(digit,TempAnsi,10);
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
31.07.2012, 15:54  [ТС]     Определение значения переменной в цикле #9
а обязательно использовать массив?мне достаточно одного элемента char
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2012, 18:09     Определение значения переменной в цикле #10
Цитата Сообщение от alexey31415 Посмотреть сообщение
у меня ID должен быть в виде ххх.ххх.ххх.ххх.,где х -цифры,причём значения от 0 до 255 и я должен проверить эти значения,
Проверить на что? На соответсвие формату: xxx.xxx.xxx.xxx , где xxx - число в диапазоне от 0 до 255 ?
Код
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
#include <cctype>
#include <iostream>
using namespace std;
 
bool correct(const char* id); 
 
int main()
{
    char ID[16] = {'2', '5', '5', '.', '2', '5', '5', '.', '2', '5', '5', '.', '2', '5', '5', '.'};
    cout << boolalpha << correct(ID) << endl;
    
    system("pause");
    return 0;
}
 
bool correct(const char* id)
{
    for ( int i = 0; i < 16; i++)
    { 
        if(!isdigit(id[i]) || (id[i] - '0') > 2) return false; 
        i++;
        for ( int j = 0; j < 2; i++, j++)
        {
            if(!isdigit(id[i]) || (id[i] -'0') > 5) return false;
        }
        if (id[i] != '.') return false;
    }
    return true;
}


Добавлено через 12 минут
Код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
#include <cctype>
#include <string>
#include <iostream>
using namespace std;
 
bool correct(const string &id); 
 
int main()
{
    string ID = "255.255.255.255.";
    cout << boolalpha << correct(ID) << endl;
    
    system("pause");
    return 0;
}
 
bool correct(const string &id)
{
    if (id.size() != 16) return false;
    for ( int i = 0; i < id.size(); i++)
    { 
        if(!isdigit(id[i]) || (id[i] - '0') > 2) return false; 
        i++;
        for ( int j = 0; j < 2; i++, j++)
        {
            if(!isdigit(id[i]) || (id[i] -'0') > 5) return false;
        }
        if (id[i] != '.') return false;
    }
    return true;
}
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
31.07.2012, 19:35  [ТС]     Определение значения переменной в цикле #11
Цитата Сообщение от alsav22 Посмотреть сообщение
(id[i] -'0') > 5)
а если у меня 3 передаётся

Добавлено через 34 секунды
и у меня не обязательно три цифры,может быть 3.100.1.2
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2012, 20:14     Определение значения переменной в цикле #12
Цитата Сообщение от alexey31415 Посмотреть сообщение
у меня ID должен быть в виде ххх.ххх.ххх.ххх.,где х -цифры,причём значения от 0 до 255
Это кто писал?

Добавлено через 11 минут
Я же просил изложить задачу. В таких случаях нужно подробно объяснять критерий проверки. Мои коды проверяют соответсвие формату xxx.xxx.xxx.xxx., где х - цифры, причём значение ххх равно от 0 до 255.

Добавлено через 6 минут
Вы помните с чего начали?
Цитата Сообщение от alexey31415 Посмотреть сообщение
В данной функции переменная k должна быть равна position в начале цикла,а когда отлаживаю программу,то k инициируется совершенно другим значением(большое отрицательное число,как будто я и не инициирую переменную).Почему так,не подскажите?
По куску кода сложно судить об идее кода, а значит, и сложно что-то предлагать. Откуда берётся это ID? Каким образом он заполняется? Как контролируется это заполнение? и т.д.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
31.07.2012, 20:20  [ТС]     Определение значения переменной в цикле #13
извиняюсь,просто думал,что это понятно
функция в которой вызввается correct
NewWords
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
bool Dictionary::NewWords()
{
    setlocale(0,"");
 
    cout << "Введите:" << endl;
    cout << "1 - для добавления нового слова" << endl;
    cout << "0 - для выхода из программы" << endl;
 
    bool temp = false;
    bool repeat = 0;
 
    char word[20] = {0};
    char id_of_word[16];
    char TempID[9];
 
    for(int i = 0;i < 16;i++)
        id_of_word[i] = -1;
 
    char * string;
 
    cin >> temp;
 
            while(temp)
            {
                cout << "Введите слово" << endl;
 
                cin >> word;
                cout << "Введите ID:" << endl;
                if(!repeat)
                {
                cout << "Значения должны быть в диапазоне от 0 до 255" << endl;
                cout << "Пример:125.0.12.369." << endl;
                repeat = true;
                }
 
                cin >> id_of_word;
 
                if(correct(id_of_word,TempID))
                {
 
                ///////////////////////////////////
                string = new char[strlen(word) + 1];
 
                strcpy(string,word);
 
                this->words.push_back(string);
 
                delete []string;
 
                //////////////////////////////////
 
                string = new char[strlen(id_of_word) + 1];
 
                strcpy(string,id_of_word);
 
                this->ID.push_back(string);
 
                delete []string;
 
                //////////////////////////////////
                Amount++;
                }
                else
                    cout << "Неверный или неправильный ID" << endl;
 
                cout << "Введите:" << endl;
                cout << "1 - для добавления нового слова" << endl;
                cout << "0 - для выхода из программы" << endl;
 
                cin >> temp;
            }
 
        return true;
}

correct на данный момент
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
bool Dictionary::correct(char id[],char TempID[])
{
    int digit = 0;
    int temp ;
    int degree;
    int position = 0;
    int k = 0;
    char *TempAnsi = "0";
 
    for(int i = 0;i < 16;i++)
        if(id[i] == '.')
        {
            if(position == 0)
            {
                
                degree = 2;
 
                for(k = position;k < i;k++)
                {
                    temp = id[k] - '0';
                    digit += temp*pow(10.0,degree);
                    degree--;
                }
 
                itoa(digit,TempAnsi,10);
 
                TempID[temp++] = (char)TempAnsi;
                TempID[temp++] = (char)".";
 
                digit = 0;
                position = i;
            }
            else
            {
                degree = i - position - 2;
 
                for(k = position + 1;k < i;k++)
                {
                    temp = id[k] - '0';
                    digit += temp*pow(10.0,degree);
                    degree--;
                }
 
                itoa(digit,TempAnsi,10);
 
                TempID[temp++] = (char)TempAnsi;
                TempID[temp++] = (char)".";
 
                digit = 0;
                position = i;
            }
        }
 
 
    return true;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2012, 00:28     Определение значения переменной в цикле #14
Такая запись допустима: 255.000.255.255. , 255.00.255.255. , 001.255.255.255. , 01.255.255.255. ? Имеются ввиду нули перед числами. Или только так должно пропускать: 1.0.255.255. ? Точка в конце обязательна? 255.255.255.255 , так нельзя, да?

Добавлено через 13 минут
Цитата Сообщение от alexey31415 Посмотреть сообщение
функция в которой вызввается correct
Я пока посмотрю, а вы испытывайте код:
Код
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
#include <cctype>
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
 
bool correct(string id); 
 
int main()
{
    setlocale(0, "");
    
    string ID = "255.255.255.255.";
    cout << ID << endl;
    
    if (correct(ID)) cout << "Правильный ввод.";
    else cout << "Неправильный ввод." << endl;
    
    system("pause");
    return 0;
}
 
bool correct(string id)
{
    
    if (id.size() < 8 || id.size() > 16 || id.empty() || *(id.end() -1) != '.') return false;
    
    int n = 0;
    
    do
    {
        stringstream s;
        int number;
        int j = 0;
        
        while (j < id.size() && id[j] != '.' )
        {
            if(!isdigit(id[j])) return false; 
            j++;
        }
        
        if (j == 0 || j > 3) return false;
        j++;
        
        s << id;
        s >> number;
        
        if (number > 255 || number < 0) return false;
        
        id.erase(id.begin(), id.begin() + j);
        
        n++;
    
    } while (!id.empty());
    
    if (n == 4) return true;
    return false;
}


Добавлено через 21 минуту
Цитата Сообщение от alexey31415 Посмотреть сообщение
correct на данный момент
Ваш код работает или попрежнему?

Добавлено через 12 минут
NewWords
Только метод класса. Самого класса я не вижу, поэтому мне это не проверить. Но, если надумаете мою реализацию correct() включать, то, в 13 строке:
C++
1
string id_of_word;
, в 38 :
C++
1
if(correct(id_of_word))
и про #include <string> не забудьте. И зачем вы используете char[]? Есть же класс string. Автоматическое управление памятью и пр.. Всё-таки С++.
Пробелы до первой цифры? "___255.255.255.255." Если считать такой ввод правильным, то, в начале функци correct(), нужно поместить конструкцию:
C++
1
2
while (*(id.begin()) == ' ')
     id.erase(id.begin());
, которая, перед анализом строки, уберёт из неё пробелы до первой цифры.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.08.2012, 02:00  [ТС]     Определение значения переменной в цикле #15
Цитата Сообщение от alsav22 Посмотреть сообщение
255.255.255.255 , так нельзя, да?
я просто хочу сделать так,чтоб можно было вводить любое число в удобнойформе,то есть 1 вместо 001
4-я точка не обязательна,но она усложнит цикл,а так у меня 4 раза идёт поиск точки и извлечения числа перед ней
Цитата Сообщение от alsav22 Посмотреть сообщение
Ваш код работает или попрежнему?
не работает,я писал,что ошибка вылетает при вызове
C++
1
 itoa(digit,TempAnsi,10);
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробелы до первой цифры?
гн понял,это к чему?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
01.08.2012, 02:31     Определение значения переменной в цикле #16
Радикальное решение для фанатов scanf уже предлагали?
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
#include <iostream>
#include <cstdio>
 
bool isValid(const char *str)
{
    int A, B, C, D;
    sscanf(str, "%d.%d.%d.%d", &A, &B, &C, &D);
    return (A >= 0) && (A <= 255) &&
           (B >= 0) && (B <= 255) &&
           (C >= 0) && (C <= 255) &&
           (D >= 0) && (D <= 255);
}
 
int main()
{
    std::string data;
    std::cin >> data;
    if (isValid(data.c_str())) {
        std::cout << "Valid";
    }
    else {
        std::cout << "Invalid";
    }
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2012, 08:10     Определение значения переменной в цикле #17
Цитата Сообщение от alexey31415 Посмотреть сообщение
Сообщение от alsav22
Пробелы до первой цифры?
гн понял,это к чему?
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробелы до первой цифры? "___255.255.255.255."
Вместо знака _ пробелы. Такой ввод, код должен определять, как верный или как ошибочный?
Цитата Сообщение от alexey31415 Посмотреть сообщение
вводить любое число в удобнойформе,то есть 1 вместо 001
Эт-то работает. Меня обратное интересует:
Такая запись допустима: 255.000.255.255. , 255.00.255.255. , 001.255.255.255. , 01.255.255.255. ? Имеются ввиду нули перед числами. Или только так должно пропускать: 1.0.255.255. ?
Цитата Сообщение от alexey31415 Посмотреть сообщение
4-я точка не обязательна
Если я правильно понял, сторока - это IP - адрес ? Для него точка в конце допустима?

Добавлено через 17 минут
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Радикальное решение для фанатов scanf уже предлагали?
Меня интересует, для IP - адреса такой формат допустим: 255.000023.34.3. ? В настройках сети я, например, не могу ввести до точки больше трёх цифр. Если это не допустимо, то код ~OhMyGodSoLong~ не подходит (или требует доработки, на проверку: не более трёх знаков до точки).

Добавлено через 24 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Сообщение от alsav22
Пробелы до первой цифры? "___255.255.255.255."
Вместо знака _ пробелы. Такой ввод, код должен определять, как верный или как ошибочный?
Если ввод в строку делать через cin >>, то он первые пробелы проигнорирует, если другим способом (и пробелы считаются допустимыми, а по моему, не должны) то в моём коде их нужно убирать, предложенной конструкцией.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
01.08.2012, 11:27     Определение значения переменной в цикле #18
Цитата Сообщение от alsav22 Посмотреть сообщение
Меня интересует, для IP - адреса такой формат допустим: 255.000023.34.3. ? В настройках сети я, например, не могу ввести до точки больше трёх цифр. Если это не допустимо, то код ~OhMyGodSoLong~ не подходит (или требует доработки, на проверку: не более трёх знаков до точки).
Да хоть двадцать нулей и в шестнадцатеричной системе. IP адрес (v4) — это 32-битное число. Формат его записи определяете только вы. 255.000023.34.3 достаточно однозначно представляет такое число, так что чисто принципиально ничего вредного не несёт. Другое дело, если вы его используете где-то, а ваша библиотека тупая и не понимает больше трёх символов (или специфично реагирует на ведущие нули). Но если что, специально для неё можно преобразовать без нулей.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2012, 11:54     Определение значения переменной в цикле #19
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
IP адрес (v4) — это 32-битное число.
Это понятно, но сама эта строка не число. Это форма записи такого числа. А форма может налагать некие ограничения.
Формат его записи определяете только вы.
Ой, ли? И дело тут не в тупых библиотеках. Попробуйте в адресной строке браузера ввести, что-нибудь, наподобие: 192.000168.1.1 . Получается, всё-таки, что такая форма записи IP неправильная и нужно от лишних нолей, перед использованием, избавляться, или определять такую запись, как неверную.
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Другое дело, если вы его используете где-то
Вот это и хотелось бы узнать у ТС. Дальше, что с этой строкой?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2012, 12:01     Определение значения переменной в цикле
Еще ссылки по теме:

C++ Управление значением переменной в бесконечном цикле извне
Форматированный вывод переменной в цикле C++
Не могу в цикле собрать из строк идентификатор переменной C++

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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
01.08.2012, 12:01     Определение значения переменной в цикле #20
Ой, ну господи, ладно:
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 <cstdio>
 
bool isValid(const char *str)
{
    int A, B, C, D;
    A = B = C = D = -1;
    sscanf(str, "%3d.%3d.%3d.%3d", &A, &B, &C, &D);
    return (A >= 0) && (A <= 255) &&
           (B >= 0) && (B <= 255) &&
           (C >= 0) && (C <= 255) &&
           (D >= 0) && (D <= 255);
}
 
int main()
{
    std::string data;
    std::cin >> data;
    if (isValid(data.c_str())) {
        std::cout << "Valid";
    }
    else {
        std::cout << "Invalid";
    }
}
Теперь не больше трёх цифр. Отсеиваются только те уникумы, трактующие 042 как восьмеричную запись числа 34.
Yandex
Объявления
01.08.2012, 12:01     Определение значения переменной в цикле
Ответ Создать тему
Опции темы

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