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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Cooller51190
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 78
#1

Нужно написать программу преобразующую данные в машинный вид - C++

24.03.2013, 10:14. Просмотров 1425. Ответов 29
Метки нет (Все метки)

Нужно написать маленькую программку которая преобразует разные типы данных в машинный код (двоичной системе счисления).....
Тоесть с клавиатуры вводим слово оно преобразуется в вид который воспринимается компьютером, то есть в двоичной системе счисления....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 10:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно написать программу преобразующую данные в машинный вид (C++):

Нужно написать программу которая считывает данные из текстового файла - C++
Привет всем. Умоляю о помощи с программой. Нужно написать программу которая считывает данные из текстового файла , затем изменяет данные...

Нужно написать программу в которой нужно проверять условия в текстовом файле - C++
Написать программу, которая считывает английский текст из файла и выводит его на экран, заменив каждую первую букву слов, начинающихся с...

Не могу дописать программу преобразующую слова в цифры - C++
Здравствуйте форумчане у меня есть к вам вопрос насчет одной программы. Задача: Напишите программу, преобразующую слова "нуль", "два"...

Написать программу, которая запрашивает ваше имя и рост в сантиметрах, а затем отображает информацию в вид - C++
Добрый вечер, помогите пожалуйста с заданием по теме switch, не получается сделать, вместо русского пишет какими то символами, как бы не...

Написать функцию, преобразующую строку символов так, что между словами всегда находится два пробела - C++
помогите с этой лабой

Нужно написать программу на с++ - C++
Помогите пожалуйста написать программу, которая увеличивает дату на заданное количество дней..

29
Cooller51190
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 78
07.04.2013, 17:20  [ТС] #16
Правильной оказалась только эта программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <bitset>
 
int main()
{
    std::string str;
 
    std::cout << "Enter: ";
    std::getline(std::cin, str);
 
    for (int i = 0; i < str.size(); ++i)
        std::cout << std::bitset<8>(str[i]) << ' ';
    std::cout << std::endl;
 
    system("PAUSE");
    return 0;
}
Но не ясно как корректно объяснить что такое функция (библиотека) bitset.
Подскажите как корректно это сказать что это такое и зачем оно там нужно???
Или подскажите как такое же можно сделать другим способом??? Без использования bitset.. Но хотелось бы всё же узнать и про bitset тоже...
Читал эту статью, но с трудом это понимаю...
http://www.cplusplus.com/reference/bitset/bitset/
Подскажите кто знает???
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.04.2013, 21:01 #17
Цитата Сообщение от Cooller51190 Посмотреть сообщение
Правильной оказалась только эта программа
Чем моя неправильна?
0
Cooller51190
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 78
08.04.2013, 12:48  [ТС] #18
Цитата Сообщение от alsav22 Посмотреть сообщение
Чем моя неправильна?
На самом деле меня тоже интересует этот вопрос, так как с логической точки зрения программа верна.
Но вот человек который проверял сказал следующее а хз чё она ваще выдаёт... правильной оказалась только та... только с пометкой что неясно что за функция (библиотека ) bitset... Теперь вот пытаюсь узнать что это такое... Если знаешь подскажи, если не трудно...
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 13:17 #19
Цитата Сообщение от Cooller51190 Посмотреть сообщение
Но вот человек который проверял сказал
Человек сам-то что-нибудь понимает?

Цитата Сообщение от Cooller51190 Посмотреть сообщение
правильной оказалась только та.
Как правильность определяли?
0
Cooller51190
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 78
08.04.2013, 13:23  [ТС] #20
Чисто в теории должен понимать "ЭТО ПРЕПОД"...А как проверялась одному богу известно...К сожалению сказать подробнее не могу
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 13:30 #21
Там только не хватает: #include <string> и преобразование из int, но перевести строку в int не проблема.

Добавлено через 5 минут
У меня, вообщем-то, классический перевод числа из десятичной в двоичную. Только для красоты вывода, сделано выравнивание по байту. Т.е., если ввести 1, то выдаст: 0001. Может преподаватель это не понял? Но это и убрать можно.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 13:36 #22
Для проверки в работе, немного меняем код:
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
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
 
string f(int d_code);
 
int main()
{
 setlocale(0, "");
 
 /*cout << "введи число: ";
 
 int n;
 cin >> n;*/
 int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
 
 for (int i = 0; i < 10; ++i)
    cout << f(arr[i]) << endl;
 
 cout << endl;
 system("pause");
 return 0;
}
 
string f(int d_code)
{
    string b_code;
    int b = 0;
    int q = 0;
    
    if (d_code != 0)
    {
        while (true)
        {
            q = d_code / 2;
            if (q == 0) 
            {
                b_code.insert(b_code.begin(), '1');
                break;
            }
            b = d_code % 2;
            if (b == 0) b_code.insert(b_code.begin(), '0');
            if (b == 1) b_code.insert(b_code.begin(), '1');
            d_code = q;
        }
    }
    else b_code.insert(b_code.begin(), '0');
    
    int c = (b_code.size() % 4); 
    if (c != 0)
        for (int i = 0; i < 4 - c; i++)
            b_code.insert(b_code.begin(),'0');
    
    return b_code;
}
Красота неописуемая!
0
Миниатюры
Нужно написать программу преобразующую данные в машинный вид  
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 13:42 #23
А чтобы из строки:
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
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
using namespace std;
 
string f(int d_code);
 
int main()
{
 setlocale(0, "");
 
 /*cout << "введи число: ";
 
 int n;
 cin >> n;*/
 string arr[10] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
 
 stringstream s;
 int n;
 for (int i = 0; i < 10; ++i)
 {
    s << arr[i]; // туда строка
    s >> n;     // оттуда число
    s.clear();
    cout << f(n) << endl;
 }
 
 cout << endl;
 system("pause");
 return 0;
}
 
string f(int d_code)
{
    string b_code;
    int b = 0;
    int q = 0;
    
    if (d_code != 0)
    {
        while (true)
        {
            q = d_code / 2;
            if (q == 0) 
            {
                b_code.insert(b_code.begin(), '1');
                break;
            }
            b = d_code % 2;
            if (b == 0) b_code.insert(b_code.begin(), '0');
            if (b == 1) b_code.insert(b_code.begin(), '1');
            d_code = q;
        }
    }
    else b_code.insert(b_code.begin(), '0');
    
    int c = (b_code.size() % 4); 
    if (c != 0)
        for (int i = 0; i < 4 - c; i++)
            b_code.insert(b_code.begin(),'0');
    
    return b_code;
}
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 13:52 #24
Вы программу, про которую преподаватель сказал, что правильная, проверяли в работе? У меня она, почему-то, это выдаёт. И что здесь правильного?
0
Миниатюры
Нужно написать программу преобразующую данные в машинный вид  
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 13:56 #25
У меня - совсем другое дело.
0
Миниатюры
Нужно написать программу преобразующую данные в машинный вид  
Cooller51190
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 78
08.04.2013, 14:18  [ТС] #26
Естественно проверял видел что такое выдаёт...попробую, ещё раз послать и объеснить что она выдаёт...Может прокатит...
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 14:23 #27
Цитата Сообщение от Cooller51190 Посмотреть сообщение
Естественно проверял видел что такое выдаёт
Что-то я тему не пойму... И это, по вашему, правильное преобразование? 255, в двоичном виде, именно так и выглядит?
1
Cooller51190
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 78
08.04.2013, 14:31  [ТС] #28
А bitset то объесните что вообще делает???

Добавлено через 5 минут
alsav22 спасибо за помощь
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 14:46 #29
Цитата Сообщение от Cooller51190 Посмотреть сообщение
А bitset то объесните что вообще делает???
В данном коде, выводит коды символов в двоичном виде. Т.е., если ввели 255, то выведет код символа '2' (50), код символа '5' (53), и код символв '5' (53) в двоичном виде.
1
Cooller51190
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 78
15.04.2013, 16:59  [ТС] #30
Короче говоря такой расклад получается... Оказывается препода не интересует просто перевод в двоичный вид. Ему нужно следующее: "Ваша задача показать (!!!) внутреннее двоичное представление этого типа данных, используя операции сдвига(<<,>>) и поразрядные логические операции (&,|,~,^)." Сможете помочь с таким вот видом задания?

Добавлено через 9 часов 19 минут
ауууу помогите...

Добавлено через 11 часов 49 минут
подскажите хоть как это примерно сделать?

Добавлено через 7 часов 59 минут
Pascal
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
Program LAB1;
uses crt;
{==== Процедура распечатки байта в двоичном виде ====}
Procedure WriteByte(a : byte);
var i : integer;
begin
for i:=7 downto 0 do begin
{ Сдвиг на i бит вправо и выделение младшего бита }
if ((a shr i) and $01) <>0 then write('1')
else write('0');
end;
write(' ');
end;
{==== Главная процедура ====}
type bytearr = array[1..100] of byte;
type intptr = ^integer;
var
k,i : integer; { Счетчик бит}
{ Анализируемые переменные }
int : integer; { целое }
str : string[10]; { строка }
pint : intptr; { указатель на integer }
ipt : ^intptr; { указатель на указатель на integer }
px : pointer; { Промежуточный безтипный указатель }
bp : ^bytearr; { Указатель на массив байт }
{ массив целых для проверки изменения адресов }
iarr : array[1..5] of integer;
 
begin
{ Анализ типа integer }
int:=518; { Присвоение значения }
bp:=@int; { Получение указателя }
{ Побайтная распечатка }
writeln('Целое число');
for k:=1 to 2 do writebyte(bp^[k]);
writeln;
 
{ Анализ типа string }
str:='ABCD'; { Присвоение значения }
px:=Addr(str); { Получение указателя }
bp:=px; { Преобразование типа указателей }
{ Побайтная распечатка }
writeln('Строка символов');
for k:=1 to 11 do writebyte(bp^[k]);
writeln;
 
end.
Нашел что-то подобное на паскале... Вот незнаю как её в С++ перевести...
Прав я в данном решение или нет?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 16:59
Привет! Вот еще темы с ответами:

Нужно написать программу С++ - C++
Зрители подходят к турникету на футбольном стадионе каждые 7+-7 секунд и становятся в очередь, чтобы пройти на стадион. Время прохода...

нужно написать функцию, которая будет считать квадратное уравнение, данные с клавиатуры ввожу - C++
#include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using std::cout; using std::endl; using std::cin; int a, b, c,...

Для экзамена нужно написать программу - C++
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • дата рождения (массив из трех чисел). ...

Нужно написать программу, работающую со структурами - C++
Описать структуру для хранения следующей информации (при необходимости используйте перечисления): данные о животных: • птицы...


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
15.04.2013, 16:59
Ответ Создать тему
Опции темы

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