Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа c ASCII 
:(
    Опции темы
koljan
Дата 2.3.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: нет
Всего: 1



Код

#include <iostream>
#include <conio.h>
main()
{
    //переменные
    char ch;
    int a;
    std::cout<<"vvedite simvol\n";
    std::cin>>ch;
    a=(int)ch;

         //ch=/*ловим клавишу*/;
          //a=/*загоняем код клавиши*/;
          if ((a>=65) & (a>=90) || (a>=97) & (a<=122) || (a>=128) & (a<=175) || (a>=224) & (a<=241) || (a>=48) & (a<=57))
              std::cout<<"Vi vveli "<<ch<<"\n";
          else
          {
              std::cout<<"Vi vveli ne bukvu i ne cifru\n"; 
          }
        
          getch();
          
   return 0;
}


эта прога почти работает точнее работает только при вводе маленьких англ. букв и цифр большие англ. уже не пашут что делать?

Это сообщение отредактировал(а) koljan - 2.3.2006, 22:58


--------------------
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 2.3.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



уффф... smile
С логикой, наверное, есть проблемы...

65 == A
90 == Z
Если мы хотим проверить, что значение переменной a у нас лежит в этом диапазоне, значит, наверное, мы должны писать так:
Код

if((a>=65) && (a<=90))...

У тебя почему-то второе условие записано как: "(a>=90)"...
Причем, для строчных латинских букв ты все сделал правильно...

Кроме того, "&" - это побитовое "И". А логическое "И" - это "&&".
Да и с группировкой условий у тебя тоже не все хорошо...


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
BreakPointMAN
Дата 2.3.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



С учетом вышесказанного, условие должно выглядеть примерно так:
Код

if ((a>=65 && a<=90) || (a>=97 && a<=122) ||(a>=128 && a<=175) ||(a>=224 && a<=241) ||(a>=48 && a<=57)) ...

Кстати, char - это и так целочисленный тип, зачем нужно делать вот это, я не понимаю:
Код

int a;
..
a=(int)ch;


Для надежности лучше определи переменную ch как unsigned char, так больше вероятность корректной работы с символами из второй половины кодировочной таблицы.

Ну, и последнее по данному вопросу: есть замечательные функции isalpha и isdigit... smile




--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
koljan
Дата 2.3.2006, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: нет
Всего: 1



Цитата(BreakPointMAN @ 2.3.2006, 23:00 Найти цитируемый пост)
Кроме того, "&" - это побитовое "И". А логическое "И" - это "&&".

в чём различие?
и ещё как с русским алфавитом быть?

Это сообщение отредактировал(а) koljan - 2.3.2006, 23:59


--------------------
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 3.3.2006, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата(koljan @ 2.3.2006, 23:53 Найти цитируемый пост)
и ещё как с русским алфавитом быть?

в смысле "как быть"?


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
koljan
Дата 3.3.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: нет
Всего: 1



Цитата(BreakPointMAN @ 3.3.2006, 00:05 Найти цитируемый пост)
Цитата(koljan @ 2.3.2006, 23:53 )
и ещё как с русским алфавитом быть? 

в смысле "как быть"?


ну если я русскую букву печатаю то выдаёт что не буква и не цифра


Код

#include <iostream>
#include <conio.h>
main()
{
    //переменные
    char ch;
    std::cout<<"vvedite simvol\n";
    std::cin>>ch;
    
         //ch=/*ловим клавишу*/;
          
          if ((ch>=65 && ch<=90) || (ch>=97 && ch<=122) || (ch>=128 && ch<=175) || (ch>=224 && ch<=241) || (ch>=48 && ch<=57))
              std::cout<<"Vi vveli "<<ch<<"\n";
          else
          {
              std::cout<<"Vi vveli ne bukvu i ne cifru\n"; 
          }
        
          getch();
          
   return 0;
}



--------------------
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 3.3.2006, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата(koljan @ 3.3.2006, 00:19 Найти цитируемый пост)
ну если я русскую букву печатаю то выдаёт что не буква и не цифра


Цитата(BreakPointMAN @ 2.3.2006, 23:19 Найти цитируемый пост)
Для надежности лучше определи переменную ch как unsigned char, так больше вероятность корректной работы с символами из второй половины кодировочной таблицы.




--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
koljan
Дата 3.3.2006, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: нет
Всего: 1



smile

всё отлично
и ещё (только не ругайте за кол-во вопросов)
прочитал все темы про русские буквы при выводе на консоль но у меня ничего не выходит


--------------------
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 3.3.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата(koljan @ 3.3.2006, 00:39 Найти цитируемый пост)
но у меня ничего не выходит

Покажи, как ты делаешь, и что у тебя не выходит - посмотрим...


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0703 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.