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

Преобразование кода

27.04.2012, 10:43. Показов 1236. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Не могли бы вы помочь мне разобраться с таким заданием, заранее Спасибо!

По некоторому каналу связи передается сообщение, имеющее вид последовательности нулей и единиц. Из-за помех возможен ошибочный прием некоторых сигналов: нуль может быть воспринят как единица и наоборот. Для повышения вероятности правильного приема сигналов было решено передавать каждый сигнал трижды. Теперь передатчик вместо 1 всегда передает 111, а вместо 0 всегда 000.

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

Ввод
Одна строка, в которой могут быть только символы "0" и "1". Длина строки - число, кратное трём, большее двух и меньшее 760.
Вывод
Вы должны вывести в одну строку раскодированное сообщение.

Ввод
110111010001
Вывод
1100
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2012, 10:43
Ответы с готовыми решениями:

Преобразование кода
Друзья, помогите преобразовать код. Создавал в КодБлокс, а препод требует в Визуалке(((, а с...

Преобразование кода в bat
Извиняюсь заранее за глупый вопрос, гуглил, но ничего по этому вопросу не нашел. вот код...

Преобразование двоичного кода в текст
есть код: struct home { char name; long number; int dom; int kvartira; };

Преобразование кода клавиши в int
Доброй ночи Столкнулся вот с такой проблемой Программа ждет нажатия клавиш 1 или 2 (другие...

4
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
27.04.2012, 12:05 2
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 <iostream>
#include <string>
#include <map>
#include <boost/token_iterator.hpp>
 
int main()
{
   std::string s = "110111010001";
   int offsets[] = {3};
   boost::offset_separator f(offsets, offsets + sizeof(offsets) / sizeof(*offsets));
   typedef boost::token_iterator_generator<boost::offset_separator>::type token_iter;
   for (token_iter iter = boost::make_token_iterator<std::string>(s.begin(), s.end(), f),
        end = boost::make_token_iterator<std::string>(s.end(), s.end(), f);
        iter != end;
        ++iter)
   {
      std::map<char, int> current;
      for (std::string::const_iterator str_iter = iter->begin(); str_iter != iter->end(); ++str_iter)
      {
         ++current[*str_iter];
      }
      std::map<char, int>::iterator f_iter = std::find_if(current.begin(), current.end(), 
      [](const std::map<char, int>::value_type& value)
      {
         return value.second == 2 || value.second == 3;
      });
      if (f_iter == current.end())
      {
         std::cerr << "Invalid sequence: " << *iter << std::endl;
         return 1;
      }
      std::cout << f_iter->first;
   }
   std::cout << std::endl;
}
http://liveworkspace.org/code/... 73f4f8158d
1
95 / 95 / 5
Регистрация: 10.04.2011
Сообщений: 256
27.04.2012, 12:24 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <algorithm>
 
std::string func(std::string src) {
 
    std::string ans;
 
    for(size_t i(0); i < src.length()/3; ++i)
        std::count(src.begin() + i*3, src.begin() + i*3 + 3, '1') > 1 ? ans += '1' : ans += '0';
 
    return ans;
}
 
int main() {
 
    std::cout << func("110111010001");
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 20
27.04.2012, 12:33  [ТС] 4
Спасибо. Чучуть по наглею, а можно ли на более понятном языке

Использую только библиотеку <iostream>
0
70 / 70 / 36
Регистрация: 16.06.2009
Сообщений: 240
27.04.2012, 12:40 5
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
#include <iostream>
#include <cstring>
using namespace std;
 
const int MAX = 760;
 
int main()
{
    int k = 0;
    char output[255];
    char mes[MAX];
    cout <<"Enter the message: ";
    cin >> mes;
    if ((strlen(mes)%3 != 0)) 
    {cout << "Error!"; exit(1);}
    else {
        for (unsigned int i=0; i<strlen(mes); i+=3)
        {
            if (mes[i] == mes[i+1] || mes[i] == mes[i+2]) 
                output[k++] = mes[i];
            else if (mes[i+1] == mes[i+2])
                output[k++] = mes[i+1];
        }
    }
    for (unsigned i=0; i<k; i++)
        cout << output[i];
    cout << endl;
    return 0;
}
1
27.04.2012, 12:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2012, 12:40
Помогаю со студенческими работами здесь

Преобразование двоичного кода в ASCII
Ребята, у меня вопрос. Вот я, например, имею строку &quot;10011001&quot; или подобную из восьми единиц и...

Преобразование кода для Visual C++
Дана задача:В текстовом файле хранится база отдела кадров предприятия. На предприятии 100...

Преобразование последовательного кода в параллельный
Программа karp вычисляет PI, используя интегральную аппроксимацию. Вам предоставлена...

Преобразование кода со статическим выделением памяти в динамическое
имеется код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() {...


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

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