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

Перевод из 2-ой в 8-ую СС - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрица (Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов...) http://www.cyberforum.ru/cpp-beginners/thread730405.html
Задана матрица A(k,l). Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов соответствующего столбца матрицы А. Похожие темы http://www.cyberforum.ru/csharp-beginners/thread591028.html http://www.cyberforum.ru/turbo-pascal/thread515227.html мой код #include <iostream> #include <time.h> using namespace std;
C++ Составить процедуру, выполняющую сжатие массива удалением элементов, значение которых меньше заданного числа Составить процедуру, выполняющую сжатие массива удалением элементов, значение которых меньше заданного числа. Вывести на экран максимальное значение среди удалённых элементов. Решите пожалуйста, кто сможет. Я в программировании не шарю, а лабу надо сделать http://www.cyberforum.ru/cpp-beginners/thread730391.html
C++ Прочитать одной строкой с файла
собственно в этом и вопрос, как считать целой строкой #include <iostream> #include <iomanip> #include <sstream> #include <string> #include <fstream> using namespace std; void process_all_transactions
Строки (Расположить слова строки в порядке, обратном исходному) C++
Здравствуйте,помогите пожалуйста. Задание: Расположить слова строки в порядке, обратном исходному.
C++ Перевод в двоичную систему(Указать на ошибку) http://www.cyberforum.ru/cpp-beginners/thread730373.html
Не хочет верно выдавать числа типа от 16 до 20, где в двоичной на 2м месте стоит ноль(16=10000) выдает только 0000, и так со всеми числами в которых на 2м месте ноль, первая единица не отображается) укажите на фейл) #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "Russian"); int n=0, x=0, y=0, k=0;
C++ Описать структуру с именем STUDENT 1. Описать структуру с именем STUDENT, содержащую следующие поля: • NAME - фамилия и инициалы; • GROUP- номер группы; • SES- успеваемость (массив из пяти элементов). 2. Написать программу, выполняющую следующие действия : • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по алфавиту; • вывод на дисплей фамилий и номеров групп для всех... подробнее

Показать сообщение отдельно
DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
13.12.2012, 23:09     Перевод из 2-ой в 8-ую СС
Может быть, как-то попроще реализовать можно... У меня вот такой вариант:

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include<iostream>
#include<vector>        //вектор
#include<string>        //строки
#include<cstdlib>       //для atoi()
#include<algorithm>     //для reverse()
 
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::reverse;
using std::string;
 
int func(const string str);     //функция для обработки триады - принимает строку из трех символов, преобразует ее в число, затем сравнивает с таблицей и возвращает значение восьмеричной цифры
//Двоичные триады      000  001 010 011 100 101 110 111
//Восьмеричные цифры    0   1   2   3   4   5   6   7
 
 
int main()
{
    setlocale(LC_ALL,"Rus");    //русский язык
 
    string chislo;      //принимает число(в виде строки)
 
    cout<<"Введите двоичное число: ";
    getline(cin,chislo);
 
    string::size_type kol_vo_triad=chislo.size()/3;     //считаем число триад в строке
    string::size_type ost_cifri=chislo.size()%3;        //сколько цифр осталось, не считая триад
 
    string::size_type chislo_cifr=chislo.size()-1;      //получаем число цифр в строке, и отбавляем его на 1, получая позицию последнего символа строки chislo
 
    string triada;                  //строка, в которой будем хранить триады(три символа)
    string::size_type counter=0;    //будет использоваться для заполнения строки triada 3 символами. Диапазон изменения от 0 до 3
    vector<int>perevedennoe_chislo; //здесь будут хранится переведенные из триад числа
 
 
        while(kol_vo_triad--)   //пока есть триады
        {
            counter=0;
 
            while(counter<3)    //заполняем строку 
            {
                triada+=chislo[chislo_cifr];
        
                ++counter;
                --chislo_cifr;
            }
 
            reverse(triada.begin(),triada.end());       //меняем порядок символов в строке triada на обратный
 
            perevedennoe_chislo.push_back(func(triada));    //и передаем в функцию на обработку
 
            triada.clear();     //очищаем строку перед ее следующим использованием
        }
 
 
        if(ost_cifri>0)     //если остались какие-то цифры, кроме триад
        {
            while(true)     //бесконечный цикл, выходим как только все цифры будут использованы
            {
                if(chislo_cifr==0)  //если достигнуты последняя цифра
                {
                    triada+=chislo[chislo_cifr];    //записываем ее в строку
 
                    reverse(triada.begin(),triada.end());   //реверсируем 
 
                    int temp=func(triada);
 
                    if(temp!=0)
                        perevedennoe_chislo.push_back(temp);    //и отправляем на обработку
                        
                break;
                }
 
            triada+=chislo[chislo_cifr];
            --chislo_cifr;
            }
        }
 
 
        cout<<"После перевода из 2-ой в 8-ую систему: ";
 
        reverse(perevedennoe_chislo.begin(),perevedennoe_chislo.end());     //для вывода на экран реверсируем вектор
 
        for(vector<int>::const_iterator begin=perevedennoe_chislo.begin();begin!=perevedennoe_chislo.end();++begin)     //и выводим на экран
            cout<<*begin;
 
        cout<<endl;
 
    return 0;
}
 
int func(const string str)
{
    int chislo=atoi(str.c_str());       //преобразуем строку в число
 
    switch(chislo)      //проверяем его
    {
        case 0:
            return 0;
        case 1:
            return 1;
        case 10:
            return 2;
        case 11:
            return 3;
        case 100:
            return 4;
        case 101:
            return 5;
        case 110:
            return 6;
        case 111:
            return 7;
        default:
            {
            cout<<"Ошибка, выход из программы"<<endl;
            exit(0);
            }
    }
}
Миниатюры
Перевод из 2-ой в 8-ую СС   Перевод из 2-ой в 8-ую СС  
 
Текущее время: 11:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru