С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FReeZzZY
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 15
#1

Перевод - C++

12.04.2012, 16:16. Просмотров 237. Ответов 0
Метки нет (Все метки)

Помогите, оч срочно надо, есть решение задачи на С++ builder что мне следует изменить чтобы программа работала на Dev C++?

Заранее огромное спасибо!!!

Задача

Дан текстовый файл, который должен быть зашифрован по след. принципу: текст записывается в квадратную матрицу(матрица заполняется по строкам), а затем прочитывается по спирали, начиная с центра.
Нужно написать программу которая считывает текст из файла заполняет матрицу для шифрования текста, зашифровывает текст и сохраняет его в символьном файле.
Размер матрицы определить, исходя из кол-ва символов в тексте(Текст содержит не более 10000 знаков), и сохранить в символьном виде в первых трех символах файла.


Код на С++ Builder :

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString Text = Memo1->Text;
  AnsiString Result = IntToStr(Text.Length());
  while(Result.Length() < 3)
    Result = "0" + Result;
 
  int n = 2, s = 1;
  while(n * n < Text.Length())
    n += 2;
 
  while(Text.Length() < n * n)
    Text += ".";
 
  char **matr = new char*[n];
  for(int i = 0; i < n; i++)
    matr[i] = new char[n];
 
  for(int i = 0; i < n; i++)
    for(int j = 0; j < n; j++)
      matr[j][i] = Text[s++];
 
  int x = (n / 2) - 1;
  int y = (n / 2) - 1;
  int next = 1, stop = 1, cont = 4;
  while(next < n * n)
    {
      for(int i = 0; i < stop; i++)
        {
          Result += matr[x][y];
          next++;
          if(cont % 4 == 0)
            y++;
          if(cont % 4 == 1)
            x++;
          if(cont % 4 == 2)
            y--;
          if(cont % 4 == 3)
            x--;
        }
      cont++;
      if(cont % 2 == 0)
        stop++;
    }
 
  for(int i = 0; i < n; i++)
    delete []matr[i];
  delete []matr;
 
  TFileStream *out = new TFileStream("C:\\test.txt", fmCreate);
  if(out != NULL)
    {
      int size = Result.Length();
      out->Write(&size, sizeof(size));
      if(size != 0)
        out->Write(Result.data(), size);
    }
  delete out;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  AnsiString Text;
  TFileStream *in = new TFileStream("C:\\test.txt", fmOpenRead);
  if(in != NULL)
    {
      int size;
      in->Read(&size, sizeof(size));
      if(size != 0)
        {
          Text.SetLength(size);
          in->Read((void *)(Text.data()), size);
        }
    }
  delete in;
 
  AnsiString Result;
  int lengh = StrToInt(Text.SubString(1, 3));
  Text.Delete(1, 3);
 
  int n = 2, s = 1;
  while(n * n < lengh)
    n += 2;
 
  char **matr = new char*[n];
  for(int i = 0; i < n; i++)
    matr[i] = new char[n];
 
  int x = (n / 2) - 1;
  int y = (n / 2) - 1;
  int next = 1, stop = 1, cont = 4;
  while(next < n * n)
    {
      for(int i = 0; i < stop; i++)
        {
          matr[x][y] = Text[s++];
          next++;
          if(cont % 4 == 0)
            y++;
          if(cont % 4 == 1)
            x++;
          if(cont % 4 == 2)
            y--;
          if(cont % 4 == 3)
            x--;
        }
      cont++;
      if(cont % 2 == 0)
        stop++;
    }
 
  for(int i = 0; i < n; i++)
    for(int j = 0; j < n; j++)
      Result += matr[j][i];
 
  for(int i = 0; i < n; i++)
    delete []matr[i];
  delete []matr;
 
  Result.SetLength(lengh);
  Memo1->Text = Result;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2012, 16:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод (C++):

Перевод из 16 в 2 - C++
char* DecToBin(int x, char* str) { int i; for (i = sizeof(x)*8-1; i&gt;=0; i--) { str = (x&amp;1 == 1) ? '1' : '0'; x = x &gt;&gt; 1;...

Перевод - C++
program NoName; var x1, y1, x2, y2, x3, y3, x4, y4: integer; begin readln(x1, y1); readln(x2, y2); readln(x3, y3);...

Перевод if(n*n+m*m=i) then if(i<>a[c-1]) на с++ - C++
if(n*n+m*m=i) then if(i&lt;&gt;a)

перевод из с++ в с - C++
Задано целое число. Используя средства стандартного ввода-вывода, изобразить на экране ромб, меньшая диагональ которого равна заданному...

Перевод - C++
Может кто на С++ перевести? uses crt; const t=0.01;//точность сравнения вычисленных величин var a,b,c,u,mx,mn,sr:real; begin ...

Перевод с С на С++ - C++
Добрый вечер. Хочу перевести код с использованием pHash алгоритма с &quot;C&quot; на &quot;C++&quot;. Возникли некоторые проблемы при переводе. В частности,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2012, 16:16
Привет! Вот еще темы с ответами:

Перевод с с++ на c# - C++
Как можно перевести С++ на С# ?вообще реально ли это ?

Перевод в 8-ю ЧС - C++
Здраствуйте! Написал программу для перевода 10-го числа в в ССч 8. Наведу пример того что не работает: число 1234 в 8 ССч имеет форму...

Перевод - C++
Помогите перевести в C++ const n=5; m=5; var b:arrayof integer; i,j,jmx,jmn,t:integer; begin randomize; for i:=1 to...

Перевод - C++
HELP!!!! Добавлено через 36 секунд Люди пожалуйста помогите написать на си ++ программу Перевод из CMYK в YUV и обратно.... ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.