Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2013, 01:35   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию Определить гласная ли эта буква и присвоить1, и противном случае-0(Функция)

Не пойму в чем ошибка, что не так в условии?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void bykva(const char x1);

int main()
{
    char x1;
    system("chcp 1251 > nul");
    printf("Определение гласной буквы русского алфавита и возвращает 1\n,"
           "в противном случае - 0:\n");
    printf("Введите букву русского алфавита:");
    scanf("%c", &x1);
    bykva(x1);
    getch();
}

void bykva(const char x1)
{
     x1==('у'||'е'||'ы'||'а'||'о'||'э'||'я'||'и'||'ю') ? printf("%d", 1) : printf ("%d", 0);
}

Последний раз редактировалось zaira001002; 10.10.2013 в 01:39.
zaira001002 вне форума Ответить с цитированием
Старый 10.10.2013, 22:03   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Код:
x1==('у'||'е'||'ы'||'а'||'о'||'э'||'я'||'и'||'ю')
Парсер трактует это выражение так: результат выражения 'у'||'е'||'ы'||'а'||'о'||'э'||'я'|| 'и'||'ю' сравнить со значением переменной x1.

Подробнее:
'у' - символьный литерал, определяющий один символ.
Т.е, записав 'y' вы получите его код из таблицы символов ASCII.
Отсюда, в выражении
Код:
'у'||'е'||'ы'||'а'||'о'||'э'||'я'||'и'||'ю'
Вы сравниваете коды символов из таблицы ASCII
Igor95 вне форума Ответить с цитированием
Старый 10.10.2013, 22:34   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

|| - это же не побитное ИЛИ, а просто логическое.
То есть выражение ('у'||'е'||'ы'||'а'||'о'||'э'||'я'| |'и'||'ю'),возвращает ИСТИНА, если хотя бы одно из 'у', 'е', 'ы', 'а', 'о', 'э', 'я', 'и', 'ю' - ИСТИНА. А в Си++ вроде бы все значения, кроме 0 являются ИСТИНОЙ.
То есть , в данном случае ('у'||'е'||'ы'||'а'||'о'||'э'||'я'| |'и'||'ю') = ИСТИНА.
А что такое ИСТИНА? Посмотрим
Код:
printf(" %d",1||1);
У меня печатает 1
То есть получается, проверяется условие :x1==1

PS Если побитное | применить, результат тот же будет.

Последний раз редактировалось type_Oleg; 10.10.2013 в 22:55.
type_Oleg вне форума Ответить с цитированием
Старый 13.10.2013, 22:58   #4
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

ну в чем то проблема?? должно быть все верно ведь, если истина то печатает текущее(((( или я вас не так поняла, а точнее ошибку опять -таки
zaira001002 вне форума Ответить с цитированием
Старый 13.10.2013, 23:01   #5
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Все поняла!!! спасибо))))
zaira001002 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA Составить программу, печатающую значение true, если указанное высказывание является истинным, и false в противном случае: Stinray Помощь студентам 0 23.05.2013 18:39
Даны натуральные K и L. Определить, делится ли K нацело на L. Если делится, то заменить эти числа их квадратами, в противном случ Proskurina Помощь студентам 1 27.03.2013 21:39
работает ли эта функция? cargo29 PHP 0 22.09.2012 19:10
Как проверить гласная или согласная буква? TwiX Общие вопросы Delphi 5 14.12.2009 04:25
Определить индекс и значение наибольшего попадающего в интервал (-5,0) элемента. В случае отсутствия тако Ferghost Общие вопросы C/C++ 2 31.05.2009 14:08