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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
#1

переобразовать текст в 0 и 1 - C++

27.09.2009, 10:38. Просмотров 1558. Ответов 32
Метки нет (Все метки)

прошу прощение если повторяю тему,просто не знаю как правильно вопрос для поиска задать,решил тему откррыть,как мне написать прогу того,чтобы вводимый текст был записан 0ами и 1ами
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2009, 10:38     переобразовать текст в 0 и 1
Посмотрите здесь:

C++ Дан текст и некоторые два слова. Определить, сколько раз они входят в текст и...
C++ Как правильно считать текст из файла? Весь текст, со всеми знаками, пробелами
C++ Дана строка содержащая текст. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз
C++ Считайте текст и выведите на экран исходный текст, а затем только четные предложения
C++ Дописать в конец a.jpeg некий секретный текст. Вывести этот текст на экран
Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение C++
C++ Определить, удовлетворяет ли текст следующему свойству: Текст совпадает с каким то отрезком ряда 0123456789 (например: 2, 678, 89)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
27.09.2009, 10:40     переобразовать текст в 0 и 1 #2
в смысле брал последовательно код каждого символа из строки и переводил его в двоичную СС?
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
27.09.2009, 11:12  [ТС]     переобразовать текст в 0 и 1 #3
M128K145, ну да....
то есть слово HELLO не будет отличать от H E L L O ?

Добавлено через 24 минуты
ну что нету способов никаких?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2220 / 735 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
27.09.2009, 11:21     переобразовать текст в 0 и 1 #4
МедведЪ, по-моему,ты не понимаешь,что хочешь. HELLO и H E L L O будут отличаться,это разные строки - как бы ты их не записывал.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
27.09.2009, 11:23     переобразовать текст в 0 и 1 #5
Так ты возьми да напиши сам. Берём какой-нибудь символ. Например 'Z'

1) Смотришь, каким числом он представлен в памяти. Таблицу кодировки найди. Это число будет 90

2) Представляешь число Z в шестнадцатиричном формате. Как думай сам. Это будет 5A

3) Потом представляешь это число в двоичном формате. Тут просто. Каким бы длинным ни было шестнадцатиричное число, просто разбивай его на цифры и вместо каждой цифры пиши соответвующую последовательность нолей и единиц

Так, вместо 5 пиши 101, вместо A 1010. Получается 1011010. Вот и всё.
Цифр в шестнадцатиричном числе всего 16, какая последовательность нолей и единиц какой цифре соответствует, сообрази сам.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
27.09.2009, 11:36     переобразовать текст в 0 и 1 #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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char *text = "text";
    size_t n = strlen(text);
    int *mas = new int[n];
    int buf;
    for(size_t i = 0; i < n; ++i)
    {
        mas[i] = 0;
        buf = (int)text[i];
        std::cout<<buf<<'\t';
        if(buf >= 128)
        {
            mas[i] = 1;
            buf -= 128;
        }
        if(buf >= 64)
        {
            mas[i] *= 10;
            ++mas[i];
            buf -= 64;
        }
        else
            mas[i] *= 10;
        if(buf >= 32)
        {
            mas[i] *= 10;
            ++mas[i];
            buf -= 32;
        }
        else
            mas[i] *= 10;
        if(buf >= 16)
        {
            mas[i] *= 10;
            ++mas[i];
            buf -= 16;
        }
        else
            mas[i] *= 10;
        if(buf >= 8)
        {
            mas[i] *= 10;
            ++mas[i];
            buf -= 8;
        }
        else
            mas[i] *= 10;
        if(buf >= 4)
        {
            mas[i] *= 10;
            ++mas[i];
            buf -= 4;
        }
        else
            mas[i] *= 10;
        if(buf >= 2)
        {
            mas[i] *= 10;
            ++mas[i];
            buf -= 2;
        }
        else
            mas[i] *= 10;
        if(buf > 0)
        {
            mas[i] *= 10;
            ++mas[i];
        }
        else
            mas[i] *= 10;
        std::cout<<mas[i]<<'\n';
    }
 
    system("pause");
    return 0;
}
, но работает примерно правильно
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.09.2009, 12:15     переобразовать текст в 0 и 1 #7
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 <locale.h>
#include <string.h>
    
void binPrn(int c){
    if ( c / 2 )
        binPrn(c / 2);
    putchar(c % 2 + '0');
}
 
int main(){
    char buf[BUFSIZ];
    int i, len;
    
    setlocale(LC_ALL, ".1251");
    while ( fgets(buf, BUFSIZ, stdin) ){
        len = strlen(buf);
        buf[--len] = 0;
        for ( i = 0; i < len; i++ )
            binPrn((unsigned char)buf[i]);
        putchar('\n');
    }
    return 0;
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
27.09.2009, 12:36  [ТС]     переобразовать текст в 0 и 1 #8
easybudda, прокомментируй тут

Добавлено через 9 минут
например что тут функция похожаяя на getchar?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.09.2009, 12:53     переобразовать текст в 0 и 1 #9
МедведЪ, А с какого места не понятно? Функция binPrn печатает свой аргумент в двоичном виде (обсуждалось не так давно тут на форуме). buf - строка, прочитанная из консоли. Вместо
C
1
2
len = strlen(buf);
buf[--len] = 0;
можно просто
C
1
len = strlen(buf) - 1;
написать (fgets символ \n в конце строки оставляет). Можно было бы и так
C
1
for ( i = 0; i < strlen(buf) - 1; i++ ){
написать, но это как-раз дурной стиль - strlen при каждом проходе считалась бы. А дальше - каждый символ передаётся binPrn, как unsigned char. Если преобразования не делать, будут неправильно символы с кодами 128+ обрабатываться. Да и всё, собственно...
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
27.09.2009, 13:05  [ТС]     переобразовать текст в 0 и 1 #10
easybudda, а как делать что бы с файла читало??...я просто не понимаю что надо gect(f) поставить....поставил вместо unsigned char,ошибка...я просто не могу понять где что и как
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.09.2009, 13:27     переобразовать текст в 0 и 1 #11
Цитата Сообщение от МедведЪ Посмотреть сообщение
а как делать что бы с файла читало?
а вот так!
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
35
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
    
void binPrn(int c){
    if ( c / 2 )
        binPrn(c / 2);
    putchar(c % 2 + '0');
}
 
int main( int argc, char **argv ){
    FILE *inp;
    char buf[BUFSIZ];
    int i, len;
    
    if ( argc < 2 ){
        setlocale(LC_ALL, ".1251");
        inp = stdin;
    }
    else{
        if ( (inp = fopen(argv[1], "r") ) == NULL ){
            fprintf(stderr, "%s: Can't open file %s\n", argv[0], argv[1]);
            exit(1);
        }
    }
    
    while ( fgets(buf, BUFSIZ, inp) ){
        len = strlen(buf) - 1;
        for ( i = 0; i < len; i++ )
            binPrn((unsigned char)buf[i]);
        putchar('\n');
    }
    return 0;
}
запустишь без параметров - будет из консоли читать, запустишь так
Код
prog.exe file.txt
будет из файла читать... Опять же, можно и первую програмку вот так
Код
prog.exe < file.txt
запустить...
...
Засомневался по поводу пересчёта strlen(buf) при каждом проходе в цикле
C
1
for ( i = 0; i < strlen(buf) - 1; i++ ){
ну в любом случае - с переменной и нагляднее, и точно ничего пересчитываться каждый раз не будет...
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
27.09.2009, 14:34  [ТС]     переобразовать текст в 0 и 1 #12
мда...придется хорошоенько и много читать этот код чтобы понять этот код...
но спасибо все равно
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.09.2009, 14:35     переобразовать текст в 0 и 1 #13
Цитата Сообщение от easybudda Посмотреть сообщение
Засомневался по поводу пересчёта strlen(buf) при каждом проходе в цикле
зря сомневался
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
#include <stdio.h>
#include <string.h>
    
/* попытка понять, как считается условие в операторе for
    для пробы устроим цикл, в котором длинна строки будет уменьшаться
*/
 
int main(void){
    char buf[] = "ABCDEF";
    int i, l;
    
 
    l = strlen(buf);
/* Если strlen считается только один раз, строка должна обнулиться до А,
    в противном случае останутся символы ABC
*/
    for ( i = 0; i < strlen(buf); i++ )
        buf[l - i] = 0;
    if ( buf[1] == 0 )
        printf("strlen считается один раз\n");
    else if ( buf[1] == 'B' )
        printf("strlen считается КАЖДЫЙ раз в начале цикла\n");
    else 
        printf("хз чё тут тварится!\n");
        
    return 0;
}
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.09.2009, 17:25     переобразовать текст в 0 и 1 #14
Есть почти стандартная функция itoa() которая умеет переводить число в любую заданную систему счисления. Например в двоичную
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
27.09.2009, 18:53  [ТС]     переобразовать текст в 0 и 1 #15
odip, а как использовать?
напр
C++
1
itoa(10);
хотя тут я не указал в какую сис-му переводить
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.09.2009, 19:02     переобразовать текст в 0 и 1 #16
http://ru.wikipedia.org/wiki/Itoa_(Си)
C
1
2
3
#include <stdlib.h>
 
char *itoa(int value, char* str, int base);
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
27.09.2009, 19:42  [ТС]     переобразовать текст в 0 и 1 #17
odip, спасибо большое,а нельзя ли текст,извините за глупый вопрос,просто я с ноута щас сижу,нету тут VS08
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.09.2009, 20:21     переобразовать текст в 0 и 1 #18
Текст чего ?
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1156 / 438 / 21
Регистрация: 23.06.2009
Сообщений: 6,212
Завершенные тесты: 1
27.09.2009, 21:25  [ТС]     переобразовать текст в 0 и 1 #19
Цитата Сообщение от odip Посмотреть сообщение
которая умеет переводить число
вместо числа-мой текст...например из массива или файла,к пример Hello world?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2009, 21:31     переобразовать текст в 0 и 1
Еще ссылки по теме:

C++ Написать программу, которая считывает текст из файла и выводит на экран количество гласных букв в строке текст
С++ Дан текст, составленный из строчных букв. Напечатать текст заглавными буквами C++
C++ Исправить ошибку! Невозможно переобразовать
C++ Неправильно отображается текст (лишний текст при вводе точки)
записать текст в матрицу по строкам, а затем переписать по спирали от центра. Прочитать зашифрованный текст C++

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

Или воспользуйтесь поиском по форуму:
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.09.2009, 21:31     переобразовать текст в 0 и 1 #20
C
1
2
3
4
5
6
7
8
9
char *str= "Hello, world";
char buf[80];
 
for ( i= 0; str[i]!='\0'; i++ ) {
    itoa( (unsigned char)str[i], buf, 2 );
    // тут нужно добавить в buf слева нужное кол-во нулей - чтобы дополнить до 8 цифр !
    printf( "%s", buf );
}
printf( "\n" );
Yandex
Объявления
27.09.2009, 21:31     переобразовать текст в 0 и 1
Ответ Создать тему
Опции темы

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