2 / 2 / 3
Регистрация: 08.01.2013
Сообщений: 62
1

ASCII в символ

07.02.2015, 16:12. Показов 5214. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно чтобы пользователь вводил строку, потом выбирал кодировать её в АСКИ-код или наоборот: введя строку состоящую с АСКИ-кода декодировать в символы.
Вот мой код:
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
#include <iostream>
#include <conio.h>
#include <cstring>
 
using namespace std;
 
void code(char str[], int str1[])
{
    int i=0, j=0;
    
    for(i=0; str[i]!='\0'; i++)
    {
        str1[i]=(int)str[i];
        j++;
    }
    cout<<"Шифрованная строка: "; 
    for(i=0; i<j; i++)
    {
        cout<<str1[i]<<' ';
    }
    cout<<endl;
}
void decode (char str[], int str1[])
{
    int j=0;
    for(int i(0); i<strlen(str); i++)
    {
        if(str[i]==32)
            cout<<' ';
        else
        {
            str[i]=str1[i];
        }
        j++;
    }
    cout<<"Дешифрованная строка: ";
    for(int i(0); i<j; i++)
    {
        cout<<str1[i];
    }
    cout<<endl;
}
int main ()
{
    setlocale (0, "Rus");
    char str[256];
    int str1[256], c;
    cout<<"Введите строку: "; 
    cin.getline(str,256);
    cout<<"Кодировать(1)/Декодировать(2): "; cin>>c;
    switch (c)
    {
    case 1: code(str, str1); break;
    case 2: decode(str, str1); break;
    default: cout<<"Либо 1, либо 2."<<endl;
    }
    
    _getch();
    return 0;
}
Кодировка в АСКИ происходит норм, а вот с АСКИ в символы не очень, пишет всякую белиберду.
Подскажите где ошибка.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2015, 16:12
Ответы с готовыми решениями:

Символ escape в ASCII
Здравствуйте! Подскажите пожалуйста какой символ.

Преобразование из ASCII в символ
Подскажите, есть двумерный массив, int Massiv={{'H','E','L','L','O'}, ...

Графический символ ASCII в русской локали (консоль)
Здравствуйте, нужно вывести символ \xB2 (заштрихованный прямоугольник) так все работает, но если...

Как преобразовать код из таблицы ASCII в символ
Здравствуйте! Подскажите пожалуйста как можно преобразовать код из таблицы ASCII в символ?

8
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
07.02.2015, 16:19 2
Потому что ты забиваешь строку в str, а при декоде читаешь из str1.
1
2 / 2 / 3
Регистрация: 08.01.2013
Сообщений: 62
07.02.2015, 16:22  [ТС] 3
Не подскажете как это изменить?
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
07.02.2015, 16:31 4
Изменить что?
0
2 / 2 / 3
Регистрация: 08.01.2013
Сообщений: 62
07.02.2015, 16:32  [ТС] 5
Изменить чтение из str1, при декоде, на чтение из str.
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
07.02.2015, 16:35 6
Лучший ответ Сообщение было отмечено prog-hak как решение

Решение

Поменять имя переменной из которой читаешь. (Ты чё серьёзно?)
1
2 / 2 / 3
Регистрация: 08.01.2013
Сообщений: 62
07.02.2015, 23:33  [ТС] 7
Как символы перевести в ACII код я знаю, вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char str[100];
    int str1[100];
    cout<<"Введите строку: ";
    cin.getline(str,99);
    for(int i(0); i<strlen(str); i++)
    {
        str1[i]=(int)str[i];
    }
    cout<<"Кодированная строка: ";
    for(int i(0); i<strlen(str); i++)
    {
        cout<<str1[i]<<' ';
    }
А вот как имея ASCII код перевести в символы, без понятия. Подскажите.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2015, 23:36 8
аськи код в тип char и это будет то, что вы хотите:
C++
1
std::cout << '0' << " == " << static_cast<char>(48) << std::endl;
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
07.02.2015, 23:39 9
Лучший ответ Сообщение было отмечено prog-hak как решение

Решение

Цитата Сообщение от prog-hak Посмотреть сообщение
А вот как имея ASCII код перевести в символы,
что значит имея?
где?
в памяти они и хранятся в виде двоичных(шеснадцетиричных) данных
можешь проверить
C++
1
2
3
4
 for(int i(0); i<strlen(str); i++)
    {
        cout<<(int)str[i]<<' ';
    }
но наглядней здесь будет printf

C++
1
2
3
4
 for(int i(0); i<strlen(str); i++)
    {
     printf ("%x %d %c \n",str[i],str[i],str[i]);
    }
выдаст значение в шеснадцетиричном десятичном и символьном виде
1
07.02.2015, 23:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2015, 23:39
Помогаю со студенческими работами здесь

Какой символ в таблице ASCII находится под номером 67?
Какой символ в таблице ASCII находится под номером 67? Нужен код програми!!!

Вывести на экран таблицу символов в формате «ASCII-код – символ»
Не понимаю, как делать это задание, уже весь интернет перерыл.

Вывести на экран символ ASCII таблицы заданное количество раз
Всем привет. надо вывести на экран символ аски таблицы такое кол во раз, какое значение хранится в...

Ввести с клавиатуры цифру, а вывести на экран должно символ ASCII
Проблема, в том что я придумал себе задачу, вводить с клавиатуры цифру,а выводить на экран должно...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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