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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2016, 16:19   #1
Ms.Asura
 
Аватар для Ms.Asura
 
Регистрация: 20.05.2016
Сообщений: 3
По умолчанию С++ работа с txt-файлами

Доброго времени суток! Помогите пожалуйста разобраться
(мучаюсь уже 2 день)
Работаю в Embarcadero RAD Studio XE5 на С++ возникла необходимость создать приложение для тестирования.
Для этого необходимо:
1. Программа должна считывать информацию из поля Memo3 и записывать в файл vopros.txt (не удаляя предыдущие записи) +нужно эти данные зашифровать с помощью метода Цезаря;
2. Нужно считать закодированную информацию->раскодировать ее и вывести на экран
(прилагаю код что уже есть,прошу помочь исправить ошибки и недочеты)

[1]
PHP код:
#include 
#pragma hdrstop
#include 

#include "Unit7.h"
#include "Unit6.h"

void __fastcall TForm7::Button1Click(TObject *Sender)
{
String s
s="C:\\test"
if(!
DirectoryExists(s)) MkDir(s); //запись в файл идет но то что раньше 
Memo3->Lines->SaveToFile(s+"\\vopros.txt");   //было записано удаляется
}
//---------------------------------------------------------------------------

void __fastcall TForm7::Button2Click(TObject *Sender)
{
for (
int i 0Memo2->Lines->Counti++)
{
if (
CheckBox1->Checked==trueMemo3->Lines->Append(":+ "+Memo2->Lines->Strings[i]);
else 
Memo3->Lines->Append(":- "+Memo2->Lines->Strings[i]);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm7::Button3Click(TObject *Sender)
{
for (
int i 0Memo1->Lines->Counti++)
{
if (
i==0Memo3->Lines->Append(":? "+Memo1->Lines->Strings[i]);
else 
Memo3->Lines->Append("? "+Memo1->Lines->Strings[i]);
}
}
//--------------------------------------------------------------------------- 
Вот код шифрования, если он правилен то куда его вставить уже не могу сообразить
PHP код:
Memo1->Lines->Strings[i][k]     
for(
i=0;iLines->Count;i++);
for(
k=0;kLines->Strings[i].Length();k++);
(
char)((int)(Memo1->Lines->Strings[i][k]+1); 
Или посоветуйте где можно почитать про это.
Ms.Asura вне форума Ответить с цитированием
Старый 20.05.2016, 16:27   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
зашифровать с помощью метода Цезаря
Таким методом можно и не шифровать
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.05.2016, 16:48   #3
Ms.Asura
 
Аватар для Ms.Asura
 
Регистрация: 20.05.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Таким методом можно и не шифровать
понимаю этот метод слишком простой,но таково задание
Ms.Asura вне форума Ответить с цитированием
Старый 20.05.2016, 17:50   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Ms.Asura Посмотреть сообщение
понимаю этот метод слишком простой,но таково задание
Метод Цезаря, действительно очень прост. Его Ахилесова пята, длина слова, которая не меняется от подстановок. Вторая "пята", это частотность букв в тексте. В русском, самая частотная не "А", как можно было-бы предположить, а "О" (на которую и не подумашь ).
Самая малая по-частотности - "Ё". Но, как ни странно, по эмоциональному качеству, она превышает "О".
Сравни фразы:
ОООООО!
Ё-моё!
Как говорится, чувствуешь разницу?
Акцентируется первое и последнее Ё.
Более подробно, можно найти в трудах Журавлёва. Книга - "Звуки смысл".
Он приводит только таблицы звуко-цвета. Полной таблицы звуко-смысла, так до сих пор и не опубликовано. Наводит на мысль, а есть-ли она вообще?

Это, небольшое отступление.
Теперь по-теме. Видя "качества" кода цезаря, нужно убрать эти "несуразицы".
1. Убираем все пробелы. Строка сливается. По длине каждого слова, уже не получится.
2. Делаем таблицу соответствий. Можно книжку какую-то. Первые цифры, будут указывать номер страницы. Но, "затасканность" книги, косвенно будет говорить о том, что она "причастна к шифру".
3. НЕТ, АБСОЛЮТНО НЕ ЛОМАЕМОГО ШИФРА! Это нужно запомнить, как 2 * 2. Есть, долго ломаемые шифры. И если Ваша инфа, не представляет никакой ценности, то "ломать" её будут, лет 2000, а может и больше.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 20.05.2016 в 18:07.
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.05.2016, 17:17   #5
Ms.Asura
 
Аватар для Ms.Asura
 
Регистрация: 20.05.2016
Сообщений: 3
По умолчанию

Спасибо всем за советы!
Нашла у себя ошибки,дополнила теперь код работает правильно, выкладываю вдруг кому то поможет(но это только ответ на 1 вопрос)
PHP код:
#include <vcl.h>
#pragma hdrstop
#include <fstream.h>

#include "Unit7.h"
#include "Unit6.h"
//---------------------------------------------------------------------------
void __fastcall TForm7::Button1Click(TObject *Sender)
{
 
String s;
 
int i,k;
    for (
i=0Memo3->Lines->Counti++)
        { 
s="";
            for (
k=1Memo3->Lines->Strings[i].Length(); k++)
                {
                    
s=s+(char)((int)Memo3->Lines->Strings[i][k]+1);
                }
            
Memo4->Lines->Append(s);
        }
 
s="C:\\test";
 if(!
DirectoryExists(s)) MkDir(s);
 
Memo4->Lines->SaveToFile(s+"\\vopros.txt");
}
//---------------------------------------------------------------------------

void __fastcall TForm7::Button2Click(TObject *Sender)
{
    for (
int i 0Memo2->Lines->Counti++)
    {
        if (
CheckBox1->Checked==true)Memo3->Lines->Append(":+ "+Memo2->Lines->Strings[i]);
            else 
Memo3->Lines->Append(":- "+Memo2->Lines->Strings[i]);
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm7::Button3Click(TObject *Sender)
{
    for (
int i 0Memo1->Lines->Counti++)
    {
        if (
i==0Memo3->Lines->Append(":? "+Memo1->Lines->Strings[i]);
            else  
Memo3->Lines->Append("? "+Memo1->Lines->Strings[i]);
    }
}
//--------------------------------------------------------------------------- 

Последний раз редактировалось Ms.Asura; 22.05.2016 в 05:35. Причина: дополнила информацией
Ms.Asura вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовыми файлами (из Файла input.txt переписать слова в файл output.txt, удалив все слова, заданные в файле diction.dic Polina25 Паскаль, Turbo Pascal, PascalABC.NET 17 07.05.2014 17:49
работа с txt файлами (delphi 7) -Jack- Общие вопросы Delphi 4 21.07.2012 23:51
работа с файлами .txt forik Win Api 7 20.11.2009 19:00
C++Builder работа с txt файлами S.P Помощь студентам 1 31.10.2009 00:52
Работа с txt файлами! (C)stalin(Cpp) Общие вопросы C/C++ 5 25.10.2008 17:19