|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.04.2014, 08:42 | #1 |
Пользователь
Регистрация: 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); } |
30.04.2014, 14:00 | #2 |
Пользователь
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с выводом (С++) | 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 |