Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
#1

работа с файлами + небольшое шифрование - C++

01.06.2009, 19:41. Просмотров 547. Ответов 6
Метки нет (Все метки)

Текст шифруется по следующему правилу: из исходного текста выбирается 1-й, 4-й, 7-й, 10-й и т. д. символы, затем 2-й, 5-й, 8, 11-й и т. д. символы, затем 3-й, 6-й, 9-й, 12-й и т. д. символы. Зашифровать за-данный текст, то есть на основании исходного текстового файла полу-чить новый файл по указанному выше правилу.
Чем дальше, тем сложнее Помогите пожалуйста разобраться в ЭТОМ. Ну или такой вопросик: как можно поместить данные из файла в переменную-массив, что бы опперировать её эллементами как с обычным массивом? Это у меня и вызывает всюю сложность...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2009, 19:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос работа с файлами + небольшое шифрование (C++):

Си, работа с файлами - C++
помогите пожалуйста написать прогамму на Си, вот само задание: подготовьте текстовый файл, который состоит из строк, содержащих...

Работа с файлами - C++
Здравствуйте, суть в том что необходимо сделать что-то типо копирования произвольного файла, т.е. выбираю файл будь то изображение,...

Работа с файлами - C++
Подскажите пожалуйста что не так в программе. Она не открывает заданые файлы. #include <fstream> #include <iostream> #include...

Работа с файлами С++ - C++
Доброго время суток! Подскажите где создавать текстовый файл для привязки его к коду. Чтобы после зборки, он нормально считывался...

работа с файлами - C++
1/подскажите(пошагово) как создавать exe-шный файл в с++ builder и visual studio 08 ? 2/чтобы входные данные шли из файла ...

работа с файлами - C++
Помагите пожалуйсто доделать прогу. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны: -номер...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17630 / 5854 / 376
Регистрация: 30.03.2009
Сообщений: 16,141
Записей в блоге: 26
01.06.2009, 21:27 #2
Давай для начала рассмотрим простой случай, когда длина файла кратна 12

C
1
2
3
4
5
6
7
8
9
10
char buff[13];
buff[12]=0; // размер буффера сделаем на 1 больше и в конец влепим ноль - чтобы его можно было печатать на экран
while (!feof(fin))
{
  fread (buff, 12,1, fin);
  printf ("buff before coding=%s", buff);
  // шаманишь с куском в 12 байт
  printf ("buff after coding=%s", buff);
  fwrite (buff, 12,1, fout); // записываем закодированный буффер в выходной файл
}
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
01.06.2009, 22:05  [ТС] #3
Но вот проблема. У меня файл file.txt. В нём текст ABCDEF, а он выводит ABCDEF5. Вот текст программы:
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
#include <iostream>
#include <conio.h>
using namespace std;
 
 
int main()
{
 FILE *fin;
 fin = fopen("file.txt", "r");
 char arr[3][100];
 char buff[4];
 int i=0;
while (!feof(fin))
{
  fread (buff, 3, 3, fin);
    arr[0][i] = buff[0];
    arr[1][i] = buff[1];
    arr[2][i] = buff[2];
  i++;
}
    cout << "\n\n";
for(int i=0;i<10;i++)
{
  cout << arr[0][i] ;
}
cout <<"\n";
for(int i=0;i<10;i++)
{
  cout << arr[1][i] ;
}
cout <<"\n";
for(int i=0;i<10;i++)
{
  cout << arr[2][i] ;
}
cout <<"\n";
 
 system("PAUSE");
}
Этот код выводит у меня:
C++
1
2
3
AF5   5 r)
B   И2C|
C
Evg
Эксперт CАвтор FAQ
17630 / 5854 / 376
Регистрация: 30.03.2009
Сообщений: 16,141
Записей в блоге: 26
01.06.2009, 22:11 #4
Честно говоря, к вечеру уже голова не соображает, чтобы понять, что ты там и куда в двумерный массив засовываешь. А главное - зачем

Добавлено через 1 минуту 17 секунд
И для того, чтобы корректно отработало "cout<<"Bylo: \n"<< buff;" надо сделать "buff[3]=0", а то если у тебя в стеке будет мусор, то можно уйти далеко за пределы buff

Добавлено через 2 минуты 45 секунд
Наскидку могу сказать, что поскольку у тебя 6 символов в тексте, то после цикла чтения у тебя инициплизируются только 2 строки в массиве arr, но дальше ты пытаешься печатать 10 строк. Да и всё равно логику того, что делает программа, мне не очень понятно. У тебя есть буффер. Тебе нужно в нём переставить буквы а потом буффер напечатать. Для чего ты завёл какойто дополнительный двумерный массив? Чтобы загнать в него весь текст? Но ведь тебе это не нужно. Прочитал кусок, закодировал, записал кусок в выходной файл. Весь текст пытаться запомнить тебе не надо
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
01.06.2009, 22:12  [ТС] #5
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
#include <iostream>
#include <conio.h>
using namespace std;
 
 
int main()
{
 FILE *fin;
 fin = fopen("file.txt", "r");
 char arr[3][100];
 char buff[4];
 int i=0;
buff[3]=0;
while (!feof(fin))
{
  fread (buff, 3, 3, fin);
    arr[0][i] = buff[0];
    arr[1][i] = buff[1];
    arr[2][i] = buff[2];
  i++;
}
    cout << "\n\n";
for(int i=0;i<10;i++)
{
  cout << arr[0][i] ;
}
cout <<"\n";
for(int i=0;i<10;i++)
{
  cout << arr[1][i] ;
}
cout <<"\n";
for(int i=0;i<10;i++)
{
  cout << arr[2][i] ;
}
cout <<"\n";
 
 system("PAUSE");
}
поставил buff[3]=0;, но ен помогло
Засовывываю в массив потому что так по заданию надо (ну или я просто ен могу придумать, как сделать задание по другому). А в массив помещаю следующее:
в arr[0] помещаю 1-ый, 4-ый, 7-ой и т.д. символы из файла
в arr[0] помещаю 2-ый, 5-ый, 8-ой и т.д. символы из файла
в arr[0] помещаю 3-ый, 6-ый, 9-ой и т.д. символы из файла

Добавлено через 47 секунд
Напечатал своё сообщение и увидел Ваше, сейчас попробую
Evg
Эксперт CАвтор FAQ
17630 / 5854 / 376
Регистрация: 30.03.2009
Сообщений: 16,141
Записей в блоге: 26
01.06.2009, 22:16 #6
Я к своему посто потом ещё добавил. В трёх своих циклах печатания замени 10 на 2 (ибо столько блоков было проичтано из входного файла)

Добавлено через 2 минуты 12 секунд
> поставил buff[3]=0;, но ен помогло
Это нужно только для того, чтобы печать "Bylo" (которую ты убрал) отработала корректно. Печать всё-таки верни - отлаживиться проще будет
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
01.06.2009, 22:31  [ТС] #7
Всё сделал! КАК Я СЧАСТЛИВ! БОЛЬШУЩЕЕ СПАСИБО!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2009, 22:31
Привет! Вот еще темы с ответами:

РАБОТА С ФАЙЛАМИ - C++
Пожалуйста объясните задачу, как её сделать? Создать текстовый файл с записями фиксированной длины. Файл содержит информацию об 10...

Работа с файлами - C++
Здравствуйте! Я вот с такой задачей: Дана последовательность из n вещественных чисел (0.3; 1.5; 2.6; 3.24; 5.89; 6.0; 7.3; 9.25; 10.98)....

Работа с файлами - C++
Когда например играет музыка или видео, то для обработки информации в память компьютера грузится весь файл или его части (если часть, то...

Работа с файлами - C++
Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись содержит поля: фамилия со¬трудника,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.06.2009, 22:31
Ответ Создать тему
Опции темы

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