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

Несколько логически ИЛИ в условии if - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реверс двусвязного списка http://www.cyberforum.ru/cpp-beginners/thread1242277.html
Столкнулся с задачей написать функцию реверса двусвязного списка. Часа 3 сушил себе мозг с копиями указателей, получилось что надо хранить копию данных и копию адреса 1 узла да еще и копировать все в ручную поэлементно. Выглядит очень громоздко... Так вот сам вопрос то, зачем вообще может понадобиться такая функция если список можно обойти в обоих направлениях ( задача из книги "Язык...
C++ Калькулятор Z-1. Укажите на ошибку в программе к задаче Уважаемые форумчане, укажите пожалуйста на ошибку в программе. Пишу программу к задаче, валится на 10 тесте (Wrong Answer). Подскажите, пожалуйста, что не так. Условие задачи: Имя входного файла: calcz.in Имя выходного файла: calcz.out Ограничение по времени: 2 секунды Ограничение по памяти: 64 мегабайта Компания Z готовится к выпуску своего супер пупер мега калькулятора Z-1. Ме- http://www.cyberforum.ru/cpp-beginners/thread1242229.html
C++ Проверить можно ли ходом короля из одной клетки попасть в другую
Делать было нечего решил все простые задачи перерешать с сайта. Ближе к делу: Поле шахматной доски определяется парой чисел (a, b), каждое от 1 до 8, первое число задает номер столбца, второе – номер строки. Заданы две клетки. Определите, может ли шахматный король попасть с первой клетки на вторую за один ход. Формат входных данных: Даны 4 целых числа от 1 до 8 каждое, первые два задают...
C++ Как удалять определенные значения из массива?
Пишу программу по одной задаче, в которой требуется удалить элементы, значение которых меньше среднего арифметического динамического массива. Думал, элемент возможно удалить с помощью delete", но это не работает. В гугле нашел несколько методов, но описаны они были как-то криво, в итоге я ничего не понял. Так как удалять элементы из простого и динамического массива? Объясните подробно
C++ Fopen не видит путь к файлу http://www.cyberforum.ru/cpp-beginners/thread1242204.html
#include <stdio.h> #include <iostream> #include <fstream> #include <string> #include <vector> #include <map> typedef std::map<std::string, std::string> mapss; // An unsigned char can store 1 Bytes (8bits) of data (0-255)
C++ Почему visual studio 2008 не видит директиву #include <iostream> Здравствуйте! Помогите пожалуйста с решением проблемы. Проблема стоит в том что мой компилятор не видит #include <iostream> и требует ввести "stdafx.h" но если я ее ввожу то у меня перестает видить cin и cout подробнее

Показать сообщение отдельно
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
13.08.2014, 23:38     Несколько логически ИЛИ в условии if
Цитата Сообщение от Александр_Алекс Посмотреть сообщение
Критерий таков: первый символ должен быть одним из этих -- A, B, C, E, H, K, M, O, P, T, X, Y.
а теперь смотри что будет если передать символ A
первое условие (buff[0] != 'A') ложь
второе (buff[0] !='B') истина
дальше не проверяется
все выражение истина
входим в if и возвращаем 0
тебе нужно использовать в этом случае И

C++
1
2
3
if ((buff[0] != 'A') && (buff[0] !='B') && (buff[0] !='C') && (buff[0] !='E') && (buff[0] !='H') && (buff[0] !='M')
            && (buff[0] !='O') && (buff[0] !='P') && (buff[0] !='T') && (buff[0] !='X') && (buff[0] !='Y'))
        return 0;
если хочешь использовать ИЛИ то измени проверку и возврашаемое значение
C++
1
2
3
if ((buff[0] == 'A') || (buff[0] =='B') || (buff[0] =='C') || (buff[0] =='E') || (buff[0] =='H') || (buff[0] =='M')
            || (buff[0] =='O') || (buff[0] =='P') || (buff[0] =='T') || (buff[0] =='X') || (buff[0] =='Y'))
        return 1;

но я бы лучше использовал свитч
не так страшно громадное условие да и править в случае чего удобно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  switch((buff[0])
    {
        case 'A':
        case 'B':
        case 'C':
        case 'E':
        case 'H':
        case 'K':
        case 'M':
        case 'O':
        case 'P':
        case 'T':
        case 'X':
        case 'Y': 
            return 1;
        default: 
            return 0;
    }
Добавлено через 35 секунд
пока писал rikimaru2013, уже ответил

Добавлено через 9 минут
есть еще один вариант быстрый но не очевидный
массив значений
смотри
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// объявляем глобальный массив по количеству всех возможных комбинаций
// поскольку он глобальный обнуляется автоматически
int Val_return [256];
 
// потом где то в начале программы прописываем в нужные значения 1
  Val_return['A']=1;
  Val_return['B']=1;
  Val_return['C']=1;
  Val_return['E']=1;
  Val_return['H']=1;
  Val_return['K']=1;
  Val_return['M']=1;
  Val_return['O']=1;
  Val_return['P']=1;
  Val_return['T']=1;
  Val_return['X']=1;
  Val_return['Y']=1;
 
 
// и вот так будет выглядеть функция проверки
int fncVeryfy(char a)
{
return Val_return[a];
 
Текущее время: 16:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru