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

Восстанавление исходного сообщения. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
01.03.2012, 22:45     Восстанавление исходного сообщения. #1
Задача: по некоторому каналу связи передается сообщение, имеющее вид последовательности нулей и единиц. Из-за помех возможен ошибочный приём некоторых сигналов: нуль может быть воспринят как единица и наоборот. Для повышения вероятности правильного приёма сигналов было решено передавать каждый сигнал трижды. Теперь передатчик вместо 1 всегда передает 111, а вместо 0 всегда 000. Необходимо написать программу, которая будет восстанавливать исходное сообщение. При передаче могли произойти ошибки, поэтому вместо каждой тройки цифр, программа должна вывести ту цифру, которая встречается в этой тройке по крайней мере два раза.
Эту задачу нужно решить на СИ++ в программе Visual Studio.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.03.2012, 05:54     Восстанавление исходного сообщения. #2
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>
using namespace std;
int f(char *s)
{
    int i, col=0;
    for(i=0; i<3; i++)
        if(s[i]=='1')
            col++;
    return col>1 ? 1:0;
} 
 
int main()
{
    char s[100];
    cin>>s;
    for(int i=0; i<(int)strlen(s); i+=3)
        cout<<f(s+i);
    return 0;
}
работает так: вводите строку из нулей и единиц (без пробелов) и нажимаете enter. Длина строки должна быть кратна 3.
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
02.03.2012, 14:44  [ТС]     Восстанавление исходного сообщения. #3
valeriikozlov, Большое спасибо!!!
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 17:50  [ТС]     Восстанавление исходного сообщения. #4
valeriikozlov, прога не работает в Visual Studuo.....что делать?!

Добавлено через 3 минуты
Я переделала, но ничего не выходит......
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 <Windows.h>
#include <string.h>
#include <math.h>
void main () {
    SetConsoleOutputCP(1251);   
    int i=0,n,f,col;
    char s[100];
    {
    printf("Введите сообщение\n");
    gets(s);
 
    i=0;
    WHILE s[i]='\0';
    i++;
    n=strlen(s);
    do 
    }
    for(i=0; i<n; i++)
                if(s[i]=='1')
                        col++;
    if 
        printf ("1");
    else
          printf ("0");
    getchar();getchar();
}
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
21.03.2012, 17:58     Восстанавление исходного сообщения. #5
Ольга Тимонова, что именно не работает?
вы "переделали" под использование сишного ио. зачем?
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 18:00  [ТС]     Восстанавление исходного сообщения. #6
Hemull, в переделанной много ошибок.....это я сама знаю.....вот я прошу, чтобы помог знающий человек: что нужно дополнить, чтобы прога заработала...
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
21.03.2012, 18:12     Восстанавление исходного сообщения. #7
но та, что предоставил valeriikozlov, вполне рабочая!вводите строку из 0 и 1. программа в цикле перебирает тройки и возвращает новую строку, построенную в зависимости от того, 0 или 1 чаще встречалось в этой тройке

Добавлено через 1 минуту
блин,как тут аттач прикрутить?
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 18:12  [ТС]     Восстанавление исходного сообщения. #8
Hemull, она не работает в Visual Studuo.....(((
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
21.03.2012, 18:19     Восстанавление исходного сообщения. #9
Ольга Тимонова, вот я ж и спросил, что именно у вас не работает?какая студия?может какие-то ошибки при компиляции?
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 18:25  [ТС]     Восстанавление исходного сообщения. #10
Hemull, переделанную исправить нужно...компилятор ошибки выдает....да я и сама знаю, что она не доделанная....... можешь помочь? может первую переделать как-нибудь, чтобы она в Visual Studuo заработала.....просто мне именно в этом компиляторе нужно.....(((
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
21.03.2012, 18:33     Восстанавление исходного сообщения. #11
Цитата Сообщение от Ольга Тимонова Посмотреть сообщение
может первую переделать как-нибудь, чтобы она в Visual Studuo заработала
хорошо.давайте сначала. чтоб переделать. нужно знать что именно и что у вас не так.вы можете скрин выложить?
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 18:44  [ТС]     Восстанавление исходного сообщения. #12
Hemull, не могу...у меня дома этой проги нет...(((
здесь нужно дополнить...а я не знаю как.....
Troll Face
2 / 2 / 0
Регистрация: 16.03.2012
Сообщений: 32
21.03.2012, 18:58     Восстанавление исходного сообщения. #13
Цитата Сообщение от Ольга Тимонова Посмотреть сообщение
Hemull, переделанную исправить нужно...компилятор ошибки выдает....да я и сама знаю, что она не доделанная....... можешь помочь? может первую переделать как-нибудь, чтобы она в Visual Studuo заработала.....просто мне именно в этом компиляторе нужно.....(((
visual studio 2010? тогда нужно форматный вывод сделать.
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 18:58  [ТС]     Восстанавление исходного сообщения. #14
Troll Face, Visual Studio 2008
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.03.2012, 20:29     Восстанавление исходного сообщения. #15
Ольга Тимонова, проверяйте:
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 <Windows.h>
#include <string.h>
#include <math.h>
int main () {
        SetConsoleOutputCP(1251);       
        int i,n,col, j;
        char s[100];
        printf("Введите сообщение\n");
        gets(s);
        n=(int)strlen(s);
        i=0;
        while(i<n)
        {
            col=0;
            for(j=i; j<i+3; j++)
                if(s[j]=='1')
                    col++;
            if(col>1) 
                printf ("1");
            else
                printf ("0");
            i+=3;
        }
        getchar();
        return 0;
}
кстати первая версия, которую выкладывал, тоже должна была работать в Вашем компиляторе.

Не по теме:

на Паскале раньше писали

Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 20:41  [ТС]     Восстанавление исходного сообщения. #16
valeriikozlov, Спасибо , завтра попробую запустить....!!!
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
21.03.2012, 20:57     Восстанавление исходного сообщения. #17
valeriikozlov, предоставил Вм вполне рабочий код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
using namespace std;
int f(char *s)
{
        int i, col=0;
        for(i=0; i<3; i++)
                if(s[i]=='1')
                        col++;
        return col>1 ? 1:0;
} 
 
int main()
{
        char s[100];
        cin>>s;
        for(int i=0; i<(int)strlen(s); i+=3)
                cout<<f(s+i);
    
        system("pause");
    return 0;
    
}
Проверено в Visual Studio 2008 и Visual Studio 2010. Всё работает в консольном приложении.
Может Вас, Ольга, сбило с толку то, что консольное окно не задерживалось?
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 20:59  [ТС]     Восстанавление исходного сообщения. #18
LVV, нет.... прога не запускалась....говорит ошибки...(((
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
21.03.2012, 21:36     Восстанавление исходного сообщения. #19
LVV, от и я ж о чем.проверил - все работает.хз что у нее не так. может завтра скажет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2012, 23:16     Восстанавление исходного сообщения.
Еще ссылки по теме:

C++ Изменение исходного слова
Массив из сумм чисел исходного массива C++

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

Или воспользуйтесь поиском по форуму:
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
21.03.2012, 23:16     Восстанавление исходного сообщения. #20
для такой программы, в VS2008(2010), нужно сначала создать пустой консольный проект, а затем добавить файл *.cpp
Yandex
Объявления
21.03.2012, 23:16     Восстанавление исходного сообщения.
Ответ Создать тему
Опции темы

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