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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2008, 11:41   #1
Meddy
Новичок
Джуниор
 
Аватар для Meddy
 
Регистрация: 29.06.2008
Сообщений: 1
Печаль Помогите с прогой (С++)

Написать программу, которая считывает из файла информацию, записанную в двоичном виде, преобразуя каждые четыре двоичных символа в букву латинского алфавита. Таблицу соответствия (кодовую таблицу) составить самостоятельно. Результат печатать на экране и заносить в другой файл.
Код:
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main()
{
char alf[26]="abcdefghijklmnopqrstuvwxyz";
char bufa[]="0000"; //буфер для сравнивания
char buft[]="0000"; //буфер для сравнивания
char texta[80];  //переменная для текста из файла
char textb[10];  //переменная для раскодированного текста
char alft[26][9]={
//Кодовая таблица
"1100",   //a
"00  ",   //b
"0111",   //c
"101 ",   //d
"0100",   //e
"11  ",   //f
"10  ",   //g
"111 ",   //h
"0110",   //i
"010 ",   //j
"000 ",   //k
"1   ",   //l
"001 ",   //m
" 010",   //n
"0000",   //o
"1010",   //p
"1110",   //q
"1111",   //r
"1101",   //s
"1001",   //t
"1011",   //u
"1001",   //v
"0010",   //w
"0011",   //x
"0101",   //y
"1000"};  //z
//------------------------------------------------------------------------------
FILE *stream;   //Указатель на файл
stream=fopen("texta.txt", "r"); //открытие файла
//Обнуление массива
for(int i=0;i<80;i++)
{
texta[i]=0;
}
//Проверка, может ли открыть файл
if(!stream)
{
cout<<"”*©« *Ґ **©¤Ґ*!!!";
getch();
return;
}
//Чтение файла и запись в массив
fgets(texta,81, stream);
fclose(stream);//Закрытие файла
//------------------------------------------------------------------------------
int x=0,q=4;
for(int z=0;z<10;z++)
{
  int y=0;
  for(;x<q;x++)
  {
  buft[y]=texta[x];
  y++;
  }

  for(int i=0;i<26;i++)
  {

  if(strcmp(buft,alft[i])==0)
  {
    textb[z]=alf[i];
    break;
  }
  }
q+=4;
}
//------------------------------------------------------------------------------
cout<<textb;
stream=fopen("textb.txt", "w"); //открытие файла

//Проверка, может ли создать файл
if(!stream)
{
cout<<"ЌҐ ¬®Јг ᮧ¤*вм д*©«!!!";
getch();
return;
}

//Запись файла из массива
fputs(textb ,stream);
fclose(stream);//Закрытие файла
getch();
}

Помогите составить кодовую таблицу, так прога пашет, но таблица не верная.

Последний раз редактировалось Stilet; 14.07.2008 в 10:09.
Meddy вне форума Ответить с цитированием
Старый 10.07.2008, 22:31   #2
Arion
 
Регистрация: 29.04.2008
Сообщений: 7
По умолчанию

А почему именно такие коды ты взял? не легче аскии-коды букв в двоичный вид перевести?
И еще... почем, если с файла берется 4 символа, массив расчитан на длину в 9 символов?
Arion вне форума Ответить с цитированием
Старый 10.07.2008, 22:56   #3
embedder
Пользователь
 
Регистрация: 24.05.2008
Сообщений: 25
По умолчанию

Четыре бита, дают шестнадцать возможных комбинаций. Букв в алфавите побольше будет. Некорректное задание.
embedder вне форума Ответить с цитированием
Старый 13.07.2008, 21:38   #4
Igoressicus
Пользователь
 
Регистрация: 13.07.2008
Сообщений: 23
По умолчанию Ещё ошибка

Есть недочёт в заполнении массива таблицы символов ( несовпадение размерностей, отсюда некорректное окончание строки '\0' со всемы вытекающими.
Igoressicus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с прогой на Си Diget Общие вопросы C/C++ 3 04.06.2008 00:20
помогите с прогой DeDoK Общие вопросы Delphi 7 09.05.2008 23:51
Помогите с прогой! NecRomant Общие вопросы Delphi 4 25.02.2008 20:19
помогите с прогой никита989 Фриланс 5 14.01.2008 17:38