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

Оператор if. Сравнение strlen(char x) != 3 - C++

Восстановить пароль Регистрация
 
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
18.02.2013, 15:27     Оператор if. Сравнение strlen(char x) != 3 #1
Что то не понял, почему не сравнивает...
Вот код который поидее должен работать:
C++
1
if((strlen(ne) != 1) || (strlen(ne) != 3))
Т.е. я сравниваю size_T с числом. Юзал поиск, сказали что "нельзя сравнивать unsigned и signed". Насколько я понимаю, это "беззнаковое и знаковое", но как же тогда быть ? Пробовал всяка разна, но не получается.
Может кто помочь ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 15:27     Оператор if. Сравнение strlen(char x) != 3
Посмотрите здесь:

Сравнение char array C++
Оператор If и Char C++
C++ Оператор new и char
C++ Сравнение 2-ух char массивов
Двойное сравнение char C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 15:29     Оператор if. Сравнение strlen(char x) != 3 #2
что такое у тебя ne?
C++
1
(strlen(ne) != 1)
заменить на что то вроде
C++
1
(strlen(ne) != size_t(1)
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
18.02.2013, 15:37  [ТС]     Оператор if. Сравнение strlen(char x) != 3 #3
C++
1
if((strlen(ne) != size_t(1)) || (strlen(ne) != size_t(3)))
не работает, условие всё равно не выполняется.

C++
1
char ne[5]=""
...
далее
C++
1
GetDlgItemText(hDlg, IDC_EDIT9, ne, 5);
получаю символьный массив... и нужно сравнить его.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 15:42     Оператор if. Сравнение strlen(char x) != 3 #4
разберись как можно заполнять массивы) если ничего не путаю написав
C++
1
char ne[5]=""
его изменить будет не так то просто, попробуй написать
C++
1
strcpy(ne,"")
да и strlen для такого массива не покажет 5

Добавлено через 2 минуты
ну да для
C++
1
char ne[5]=""
strlen пишет 0
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
18.02.2013, 15:50  [ТС]     Оператор if. Сравнение strlen(char x) != 3 #5
Цитата Сообщение от aLarman Посмотреть сообщение
разберись как можно заполнять массивы) если ничего не путаю написав
C++
1
char ne[5]=""
его изменить будет не так то просто, попробуй написать
C++
1
strcpy(ne,"")
да и strlen для такого массива не покажет 5

Добавлено через 2 минуты
ну да для
C++
1
char ne[5]=""
strlen пишет 0
1. В начале я его просто обнуляю этим
C++
1
=""
Он отлично заполняется потом вводимой информацией в EditBox. (Winapi)

2. Мне не нужно 5, 5 - это просто максимальная длина массива.

3. В том то и дело что для
C++
1
char ne[5]=""
я решил проверить какой результат он даёт. Смотри сам:
C++
1
2
3
4
5
6
7
int vne = strlen(ne);
itoa(vne,cne,10);
if((strlen(ne) != 1) || (strlen(ne) != 3))
{
    MessageBox(hDlg, cne, "Ошибка!", MB_OK);
    return 0;
}
где в начале я указал:
C++
1
char cne[10]="";
В итоге он мне в любом случае выводит окно с "ошибкой", в котором он пишет правильное! число.
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
18.02.2013, 15:59     Оператор if. Сравнение strlen(char x) != 3 #6
Старина, правильно ли я понял, что ты хочешь, чтобы у тебя окно с ошибкой вылезало, если:
длина не совпадает с 1
или
длина не совпадает с 3
?

Короче) Мне думается, ты напутал с условием и там нужно && вместо ||
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 16:01     Оператор if. Сравнение strlen(char x) != 3 #7
ты меня начинаешь запутывать приведи весь код, так обрывками ничего не понятно
Байт
 Аватар для Байт
13940 / 8771 / 1219
Регистрация: 24.12.2010
Сообщений: 15,871
18.02.2013, 16:06     Оператор if. Сравнение strlen(char x) != 3 #8
Izual, Попробуй найти число n, для которого НЕ ВЫПОЛНЯЛОСЬ бы условие (n!=1 || n!=3) ?
Найдешь - получишь большую филдсовскую премию
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
18.02.2013, 16:10  [ТС]     Оператор if. Сравнение strlen(char x) != 3 #9
Цитата Сообщение от ITcrusader Посмотреть сообщение
Старина, правильно ли я понял, что ты хочешь, чтобы у тебя окно с ошибкой вылезало, если:
длина не совпадает с 1
или
длина не совпадает с 3
?

Короче) Мне думается, ты напутал с условием и там нужно && вместо ||
Ржу нимагу =) Реально... поменял на && и всё заработало.
Но что то я не понимаю логики.
Ведь "||" - это или. А "&&" - это и.
Верно мне нужно чтоб "если длина не совпадает с 1 или с 3 то... Но ведь "ИЛИ" =)

Алгоритм решён, кланяюсь в ноги. Теперь хочется "понять" почему не "||" а "&&" надо было =)
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
18.02.2013, 16:11     Оператор if. Сравнение strlen(char x) != 3 #10
Цитата Сообщение от Байт Посмотреть сообщение
Izual, Попробуй найти число n, для которого НЕ ВЫПОЛНЯЛОСЬ бы условие (n!=1 || n!=3) ?
Найдешь - получишь большую филдсовскую премию

Цитата Сообщение от ITcrusader Посмотреть сообщение
Короче) Мне думается, ты напутал с условием и там нужно && вместо ||
Вот и я о том же)))) А выглядит оно, кстати, довольно безобидно)))))
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 16:11     Оператор if. Сравнение strlen(char x) != 3 #11
алгебры логики не было?)
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
18.02.2013, 16:14     Оператор if. Сравнение strlen(char x) != 3 #12
Ты хотел обозначить следующее: если число (в твоем случае - длина) не входит в множество {1, 3}, то вывести диалог.

это обозначает следующее: число не равно 1 и (одновременно с этим) не равно 3

Так - понятно?)))
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
18.02.2013, 16:15  [ТС]     Оператор if. Сравнение strlen(char x) != 3 #13
Цитата Сообщение от aLarman Посмотреть сообщение
алгебры логики не было?)
Институт был паршивым =)
Пока делаю первый свой проэкт БД на С++ получил знаний больше (за 3 месяца) чем за 3 года обучения в инсте.

На самом деле я до сих пор не могу дойти почему "И" )))
Я отталкиваюсь от того что:
C++
1
if((strlen(ne10) == 1) && (strlen(ne10) == 3))
вот так оно точно не заработает, т.к. одна переменная не может иметь сразу значение "1" и значение "3" =)

видимо в условии != оно должно звучать иначе )
Байт
 Аватар для Байт
13940 / 8771 / 1219
Регистрация: 24.12.2010
Сообщений: 15,871
18.02.2013, 16:16     Оператор if. Сравнение strlen(char x) != 3 #14
Цитата Сообщение от Izual Посмотреть сообщение
Теперь хочется "понять" почему не "||" а "&&" надо было
Смотри. n!=1 - это все числа не равные 1 = 2,3,4,5 ...
n!=3 это 1,2,4,5... Операция "||" дает объединение этих множеств. "&&" напротив - пересечение
(n!=1 || n!=3) === (!(n==3 && n==1))
Внутреняя скобка всегда дает false. !false = true.
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
18.02.2013, 16:21  [ТС]     Оператор if. Сравнение strlen(char x) != 3 #15
Байт, верно, просто когда то, когда я изучал по (видимо галимой) книжке С++, там говорилось что "||" - логическое или, а "&&" - логическое И. И всегда когда программировал на это опирался и ёмаё за 4 года никогда не сталкивался с тем что это не так. Сейчас открыл другую книгу и увидел что, те логические операции были " сложением и умножением" =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 16:22     Оператор if. Сравнение strlen(char x) != 3
Еще ссылки по теме:

Сравнение char с int C++
IntelliSense: отсутствует оператор "<<", соответствующий этим операндам типы операндов: std::basic_ostream<char, std::char_traits<char> C++
Strlen и бинарные данные в char - как выполнить их отправку C++

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

Или воспользуйтесь поиском по форуму:
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 16:22     Оператор if. Сравнение strlen(char x) != 3 #16
!(a && b ) = !a || !b
!(a || b ) = !a && !b
a && a = a
a || a = 1 (true)
так может пригодится
Yandex
Объявления
18.02.2013, 16:22     Оператор if. Сравнение strlen(char x) != 3
Ответ Создать тему
Опции темы

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