Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
1

Как компилятор будет отличать "а" от "А"

29.09.2009, 17:05. Показов 1171. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот решил написать прогу обратную моей,что когда то писал

надо из 0 и 1 переводить в текст.план есть что то вроде
C
1
2
3
4
5
6
while((c=getchar)!=EOF){
if(c=001)cout<<"a";
esle if(c=101)cout<<"b";
 
 
}
ну что то вроде этого,но проблема в том,как компилятор будет отличать "а" от "А" ?ведь они отличаются
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2009, 17:05
Ответы с готовыми решениями:

Как отличать числа от не чисел?
IsNumeric('442348D70')=true. Почему? Что за лажа??? Что за функцию нужно использовать, чтобы числа...

Как научить программу отличать win1251 от ibm866?
как научить программу определять 1251 от 866 облазил кучу ресурсов, не нашел подходящего, все...

Адресации в ассемблере: как их отличать, что есть косвенная, прямая, не явная и т.д
Объясните пожалуйста адресации в ассемблере, как их отличать, что есть косвенная, прямая, не явная...

Хук клавиатуры - как отличать события WM_KEYDOWN и WM_KEYUP при зажатой ALT?
Сделал хук для клавиатуры, столкнулся с проблемой: при зажатой клавише ALT перестают генерироваться...

13
Псевдо программист
192 / 113 / 37
Регистрация: 19.09.2009
Сообщений: 303
29.09.2009, 17:33 2
Лучший ответ Сообщение было отмечено как решение

Решение

Читаем в строку 8 символов. Переводим в 10тичную сс, присваиваем число char ch. Чар печатаем и все

Добавлено через 8 минут
Цитата Сообщение от МедведЪ Посмотреть сообщение
ведь они отличаются
'A' - 0 = 65
'a' - 0 = 97
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
29.09.2009, 17:34  [ТС] 3
Цитата Сообщение от R0mm Посмотреть сообщение
Читаем в строку 8 символов
то есть

Цитата Сообщение от R0mm Посмотреть сообщение
Переводим в 10тичную сс
как?
а мой метод не сойдет?
0
Псевдо программист
192 / 113 / 37
Регистрация: 19.09.2009
Сообщений: 303
29.09.2009, 17:42 4
Цитата Сообщение от МедведЪ Посмотреть сообщение
то есть
то есть начинаем читать из файла(или консоли) нолики и единички (всего 8 штук ~ 8 бит ~ символ).
формируем вот такую строку. грубо говоря это двоичное представление символа. теперь нам нужно узнать что же это за число.


Цитата Сообщение от МедведЪ Посмотреть сообщение
как?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int atoi(
   const char *str 
);
int _wtoi(
   const wchar_t *str 
);
int _atoi_l(
   const char *str,
   _locale_t locale
);
int _wtoi_l(
   const wchar_t *str,
   _locale_t locale
);
копай в эту сторону
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
29.09.2009, 18:18  [ТС] 5
Цитата Сообщение от R0mm Посмотреть сообщение
всего 8 штук ~ 8 бит ~ символ
аааа спасибо...я думал одна буква=биту а не байту
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
29.09.2009, 18:41 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

МедведЪ, диржы, играйся!
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
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <limits.h>
 
/* нолики с еденичками в буковки с циферками */
 
unsigned char buf[9] = {0};
int point = 0;
 
int main(){
    int i;
    long l;
    while ( (i = getchar()) != EOF ){
        if ( i == '\n' )
            continue;
        if ( i != '0' && i != '1' ){
            fprintf(stderr, "AHTUNG! WRONG DATA! -> %d\n", i);
            exit(1);
        }
        buf[point++] = (unsigned char)i;
        if ( point > 7 ){
            l = strtol(buf, NULL, 2);
            point = 0;
            printf("CODE: %d", (int)l);
            if ( isprint((int)l) )
                printf("\tSYMBOL: '%c'\n", (unsigned char)l);
            else
                printf("\tNOT PRINTABLE\n");
            point = 0;
        }
    }
    return 0;
}
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
29.09.2009, 18:43  [ТС] 7
easybudda, а что то попроще нету?

Добавлено через 13 секунд
ну чтьо бы понять код
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
30.09.2009, 09:09 8
Цитата Сообщение от МедведЪ Посмотреть сообщение
а что то попроще нету?
попроще на бейсике хотя и тут вобщем-то не дюже сложно... единственное - зачем point два раза в условии обнуляется - самому не понятно... видимо, чтоб наверняка!
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
30.09.2009, 22:35  [ТС] 9
easybudda, у меня короче такой код
C
1
2
3
4
5
6
7
char c[256];
 
cin>>c;
if(c=="100")cout<<"a";
else if(c=="111")cout<<"l";
else if(c=="101")cout<<"e";
else if(c=="000")cout<<"x";
ошибок нет,ввожу цифры,но ничего не выводит,что не так?Таким образом нельзя?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
30.09.2009, 23:52 10
МедведЪ, ты бы с языком программирования определился... да и с какого перепуга у буквы 'a' код 100 в двоичной системе? на с++ твоя програмка примерно так
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
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
 
#include <string>
using std::string;
 
 
int main()
{
    string str;
    cin >> str;
    if ( str == "01100001" )
        cout << 'a';
    else if ( str == "01100010" )
        cout << 'b';
    else if ( str == "01100011" )
        cout << 'c';
    else
        cout << "hz";
    
    cout << endl;
    
    return 0;
}
выглядела бы, но это дурдом полный (прости, конечно). обработка чисел, без разницы, в двоичном, шестнадцатиричном, или ещё каком-нибудь виде, это та поляна, на которой людям с компьютерами сравниваться не приходится. а ты предлагаешь компу числа в самом родном ему виде, как текстовые строки сравнивать. зачем?
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
01.10.2009, 00:40  [ТС] 11
easybudda, я код просто так написал,только для того чтобы проверить,пишу на С,а мой метод был вроде правильным,просто ы его исправил со стрингом.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
01.10.2009, 19:56  [ТС] 12
кто нибудь знает откуда достать таблицу кодов букв в двличном сс???вчера весь день искал,ничего не нашел
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
01.10.2009, 23:39 13
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от МедведЪ Посмотреть сообщение
кто нибудь знает откуда достать таблицу кодов букв в двличном сс???вчера весь день искал,ничего не нашел
Владей!
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 <stdio.h>
#include <ctype.h>
#include <limits.h>
    
/* Печать ascii символов и русских букв cp866 */
    
char *binStr(int c){
    static char buf[CHAR_BIT + 1] = {0};
    int i;
    for ( i = 0; i < CHAR_BIT; i++ )
        buf[i] = ( c & (1 << (CHAR_BIT - 1 - i)) ) ? '1' : '0';
    return buf;
}
    
int main(){
    int c;
    
    printf("%5s %-5s %-5s %s\n", "symbol", "hex", "dec", "bin");
    for ( c = 0; c <= UCHAR_MAX; c++ )
        if ( isprint(c) || (c >= 128 && c <= 159) || (c >= 160 && c <= 175) || (c >= 224 && c <= 241) )
            printf("%-6c %#-5x %-5d %s\n", c, c, c, binStr(c));
 
    return 0;
}
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
02.10.2009, 19:15  [ТС] 14
easybudda, я уже своей программой вссе сделал,ну с той,другой.короче нашел коды
0
02.10.2009, 19:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2009, 19:15
Помогаю со студенческими работами здесь

В примере ниже какой из двух методов SubstructTax будет вызван? Как компилятор догадается, какой из них надо вызвать?
В примере ниже какой из двух методов SubstructTax будет вызван? Как компилятор догадается, какой из...

Нужно что бы компилятор не ругался на точку с запятой если ее не будет
Доброго времени суток, мои новые друзья. Хочу у вас способ, или получить какую то книжку или...

Официально подтверждено, что компилятор Майкрософт будет поддерживать С11 и C17
Официально подтверждено, что компилятор Майкрософт будет поддерживать С11 и C17 ...

Как отличать Dos 16 Exe от Dos 32 Exe
Давно уже интересовал вот этот вопрос как именно отличать Dos 16 Exe от Dos 32 Exe. Если я...

ООП как будет правильнее а как будет работать быстрее
Всем привет! Начнем с моего примера... Подключение к базе данных Access, но суть идет не о том...

Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор
Здравствуйте! Я недавно начал заниматься С++, но мой компилятор (Visual C++ 6.0) в плохой...

Необходим оператор, который будет как if, но будет использоваться многоразово
Доброго времени суток! В C# я немного новичёк. Делаю программу, в которой будет очень много...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru