Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2014, 08:42   #1
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
Вопрос Проблема с выводом в программе с++

Здравствуйте! Сразу к делу: программа рабочая декодирует и находит ошибки в коде, только раскодирует в двоичном представлении, а мне нужно (код Хемминга->{1,0}->ASCII) не особо силен в с++., поэтому .../ Вот код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include <clocale>

using namespace std;

char Data[10000];
char ch;

void read ()
{
ch=getchar();
}

void main (void)
{
setlocale (LC_ALL, "Russian");
int i=1;
int S=0;

read();

while (ch!='\n')
{
Data[i]=ch;
++i;
read();
}
for (int q=1; q<i; ++q)
{
if (Data[q]=='1') S=S^q;
}
if (S==0)
{
cout<<"Ошибок нет\n"<<"Полученные данные:\t";

}
else
{
cout<<"Ошибка в бите с номером "<<S<<endl<<"Исправленные данныедвоичное представление)\t";
if (Data[S]=='1') Data[S]='0';
else Data[S]='1';
}
for (int q=1; q<i; ++q)
{
if (fmod(log((float)q)/log(2.0),1.0)<0.0000001) continue;
else
{
cout<<Data[q];
}
}

fgetc(stdin);
}
alexlagunov вне форума Ответить с цитированием
Старый 30.04.2014, 14:00   #2
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
По умолчанию

тоже рабочая только выводит побитовую строку, а не ascii
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include <clocale>
#include <conio.h>

using namespace std;


// буфер ввода
char input[1024];
int len;

int find_mistake()
{
int i, mistake = 0;
for (i = 0; i < len; i ++)
if (input[i] == '1')
mistake ^= i + 1;
return mistake;
}


// главная функция
int main()
{
int i, mistake = 0;
char info[1024];
int info_pos = 0;
int b = 1;

// ввод исходных данных
printf("Enter code: ");
scanf("%s", input);
len = strlen(input);

for (i = 0; i < len; i++)
// проверка на корректность
if (input[i] != '0' && input[i] != '1')
{
printf("Invalid code.\n");
return -1;
}


// поиск ошибок
mistake = find_mistake();
if (mistake)
{
input[mistake - 1] ^= '0' ^ '1';
mistake = find_mistake();

if (mistake)
{
printf("Invalid code.\n");
return -1;
}
}


// вывод результата
printf("Fixed code: %s\n", input);
for (i = 0; i < len; i++)
if (i + 1 == b)
b <<= 1;
else
info[info_pos++] = input[i];
info[info_pos] = '\0';
printf("Informational string: %s\n", info);
getch();

return 0;

}

Последний раз редактировалось alexlagunov; 01.05.2014 в 05:15.
alexlagunov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с выводом (С++) spinogryz_ua Помощь студентам 3 14.01.2013 21:45
Проблема с выводом eymar Общие вопросы C/C++ 6 23.09.2012 22:50
Проблема с выводом звука JekaDefer Мультимедиа в Delphi 7 10.07.2012 01:44
проблема с выводом -=Andriushka=- Помощь студентам 0 13.04.2011 21:46
Проблема с выводом на экран NeveX Общие вопросы .NET 3 20.12.2009 13:57