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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2014, 13:17   #11
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>

using namespace std;

char Data[10000];
char ch;


void read ()

{

ch=getchar();

}

void main (void)
{
int i=1;
int S=0;
int z=0;
int p=0;
char *str=new char[100];
char *strham=new char[100];
char s[2]="0";
setlocale (LC_ALL, "Russian");
cout<<"Введите двоичную последовательность длиной 16 бит:\n";
char e[255]; scanf("%e",&e);
for(int i=0,k=0;e[i];i++){
for(;e[i];e[i]=e[i]>>1) Data[k++]=e[i]&1+'0';
}

for (int q=1; q<i; ++q)
{
if (Data[q]=='1') S=S^q;
}
itoa(S,str,2); 

for (int q=1; q<i; ++q)
{
if (Data[q]!='1' && Data[q]!='0') ++z; 
}
int len=strlen(str);

for (int q=0; q<(z-len); ++q)
{
strcat(strham,s);
}
strcat(strham,str);

for (int q=1; q<i; ++q)
{
if (Data[q]!='1' && Data[q]!='0')
{
Data[q]=strham[strlen(strham)-1-p];
++p;
}
}



cout<<"Код Хемминга:\n";
for (int q=1; q<i; ++q)
{
cout<<Data[q];
}

fgetc(stdin);

delete []str;
delete []strham;
}

теперь сама программа работать не хочет..(

Последний раз редактировалось Stilet; 26.04.2014 в 14:02.
alexlagunov вне форума Ответить с цитированием
Старый 26.04.2014, 13:25   #12
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>

using namespace std;

char Data[10000];
char ch;


void read ()

{

ch=getchar();

}

void main (void)
{
int i=1;
int S=0;
int z=0;
int p=0;
char *str=new char[100];
char *strham=new char[100];
char s[2]="0";
setlocale (LC_ALL, "Russian");
cout<<"Введите двоичную последовательность длиной 16 бит:\n";
char e[255]; scanf("%e",&e);
for(int i=0,k=0;e[i];i++){
for(;e[i];e[i]=e[i]>>1) Data[k++]=e[i]&1+'0';
}

for (int q=1; q<i; ++q)
{
if (Data[q]=='1') S=S^q;
}
itoa(S,str,2); 

for (int q=1; q<i; ++q)
{
if (Data[q]!='1' && Data[q]!='0') ++z; 
}
int len=strlen(str);

for (int q=0; q<(z-len); ++q)
{
strcat(strham,s);
}
strcat(strham,str);

for (int q=1; q<i; ++q)
{
if (Data[q]!='1' && Data[q]!='0')
{
Data[q]=strham[strlen(strham)-1-p];
++p;
}
}



cout<<"Код Хемминга:\n";
for (int q=1; q<i; ++q)
{
cout<<Data[q];
}

fgetc(stdin);

delete []str;
delete []strham;
}
теперь запускается., но программа не работает..., отладка начинается

Последний раз редактировалось Stilet; 26.04.2014 в 14:02.
alexlagunov вне форума Ответить с цитированием
Старый 26.04.2014, 14:03   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
for (int q=1; q<i; ++q)
for (int q=1; q<k; ++q)
Ибо переменная "k" у тебя содержит после моего цикла номер последнего элемента в Data, а не "i".
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.04.2014, 14:13   #14
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
По умолчанию

фффухх...
так как нужно ведь объявить перед этим?
и во всех циклах заменять на k??
alexlagunov вне форума Ответить с цитированием
Старый 26.04.2014, 14:48   #15
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
По умолчанию

может напишите ваш код?
так довольно сложно разобраться..
alexlagunov вне форума Ответить с цитированием
Старый 26.04.2014, 16:24   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Фот тебе и "фухх"...
Код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>

using namespace std;

char Data[10000]={0};

void main (void)
{
int i=1;
int S=0;
int z=0;
int p=0;
int k=0;
char *str=new char[100];
char *strham=new char[100];
char s[2]="0";
setlocale (LC_ALL, "Russian");
cout<<"Введите двоичную последовательность длиной 16 бит:\n";

char e[255]={0}; scanf("%e",&e);
for(int i=0;e[i];i++){
 for(;e[i];e[i]=e[i]>>1) Data[k++]=e[i]&1+'0';
}

for (int q=1; q<k; ++q) if (Data[q]=='1') S=S^q;

itoa(S,str,2); 

for (int q=1; q<k; ++q) if (Data[q]!='1' && Data[q]!='0') ++z; 

int len=strlen(str);

for (int q=0; q<(z-len); ++q) strcat(strham,s);

strcat(strham,str);

for (int q=1; q<k; ++q) {
 if (Data[q]!='1' && Data[q]!='0') {
  Data[q]=strham[strlen(strham)-1-p];
  ++p;
 }
}

cout<<"Код Хемминга:\n";
for (int q=1; q<k; ++q) cout<<Data[q];

fgetc(stdin);

delete []str;
delete []strham;
}
Разобраться тому кто по настоящему написал эту программу (которая как по мне так и не должна работать вовсе) не составило бы труда.
Учти - я не переделывал твою программу, я только ее дополнил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.04.2014, 16:51   #17
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
Хорошо

Цитата:
Сообщение от Stilet Посмотреть сообщение
Фот тебе и "фухх"...
Код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>

using namespace std;

char Data[10000]={0};

void main (void)
{
int i=1;
int S=0;
int z=0;
int p=0;
int k=0;
char *str=new char[100];
char *strham=new char[100];
char s[2]="0";
setlocale (LC_ALL, "Russian");
cout<<"Введите двоичную последовательность длиной 16 бит:\n";

char e[255]={0}; scanf("%e",&e);
for(int i=0;e[i];i++){
 for(;e[i];e[i]=e[i]>>1) Data[k++]=e[i]&1+'0';
}

for (int q=1; q<k; ++q) if (Data[q]=='1') S=S^q;

itoa(S,str,2); 

for (int q=1; q<k; ++q) if (Data[q]!='1' && Data[q]!='0') ++z; 

int len=strlen(str);

for (int q=0; q<(z-len); ++q) strcat(strham,s);

strcat(strham,str);

for (int q=1; q<k; ++q) {
 if (Data[q]!='1' && Data[q]!='0') {
  Data[q]=strham[strlen(strham)-1-p];
  ++p;
 }
}

cout<<"Код Хемминга:\n";
for (int q=1; q<k; ++q) cout<<Data[q];

fgetc(stdin);

delete []str;
delete []strham;
}
Разобраться тому кто по настоящему написал эту программу (которая как по мне так и не должна работать вовсе) не составило бы труда.
Учти - я не переделывал твою программу, я только ее дополнил.
да если бы я сам ее написал, тогда было бы не трудно ее редактировать...
Все таки ваша доработка мне не помогла., программа вообще перестала кодировать.
Но все равно, спасибо, что откликнулись
alexlagunov вне форума Ответить с цитированием
Старый 26.04.2014, 19:05   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуйста. Как по мне она сама по себе была не очень.
Я бы на твоем месте поискал более достойные примеры в интернете.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.04.2014, 05:56   #19
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
По умолчанию

эта программа декодирует, но опять же выводит битовую последовательность. Что нужно добавить, чтобы вывод был из букв???
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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);
system("pause");
return 0;

}

Последний раз редактировалось Stilet; 27.04.2014 в 08:35.
alexlagunov вне форума Ответить с цитированием
Старый 28.04.2014, 12:18   #20
alexlagunov
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 23
По умолчанию

в общем то тему можно закрывать
alexlagunov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите доработать программу. Паскаль Руслан56 Помощь студентам 0 11.03.2014 20:00
Помогите доработать программу на ассемлере: Программа выводит шестнадцатеричные числа в двоичном виде. Nickolay0512 Помощь студентам 0 04.12.2013 11:54
Помогите доработать программу, заполнить массив случайными значениями . serg.malkow2014 Помощь студентам 2 27.11.2013 01:41
доработать программу ehanjaki Помощь студентам 1 12.07.2012 14:37