Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
DEM90
17 / 17 / 7
Регистрация: 06.05.2009
Сообщений: 115
#1

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

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

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

С++ (Работа с файлами)
Как по данному числу вывести текстовый файл в С++ ? ("Мне нужно что-бы программа при вводе числа...

Работа с файлами
Здравствуйте, столкнулся с двумя проблемами. 1) При считывании текста из файла читается только...

работа с файлами
в программе не работает удаление... что делать?? #include "stdafx.h" #include <string.h>...

Работа с файлами
Задание: Написать программу, которая считывает текст из файла и записывает в другой файл только...

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

6
Evg
Эксперт CАвтор FAQ
19276 / 7133 / 528
Регистрация: 30.03.2009
Сообщений: 19,973
Записей в блоге: 30
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); // записываем закодированный буффер в выходной файл
}
1
DEM90
17 / 17 / 7
Регистрация: 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
0
Evg
Эксперт CАвтор FAQ
19276 / 7133 / 528
Регистрация: 30.03.2009
Сообщений: 19,973
Записей в блоге: 30
01.06.2009, 22:11 #4
Честно говоря, к вечеру уже голова не соображает, чтобы понять, что ты там и куда в двумерный массив засовываешь. А главное - зачем

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

Добавлено через 2 минуты 45 секунд
Наскидку могу сказать, что поскольку у тебя 6 символов в тексте, то после цикла чтения у тебя инициплизируются только 2 строки в массиве arr, но дальше ты пытаешься печатать 10 строк. Да и всё равно логику того, что делает программа, мне не очень понятно. У тебя есть буффер. Тебе нужно в нём переставить буквы а потом буффер напечатать. Для чего ты завёл какойто дополнительный двумерный массив? Чтобы загнать в него весь текст? Но ведь тебе это не нужно. Прочитал кусок, закодировал, записал кусок в выходной файл. Весь текст пытаться запомнить тебе не надо
1
DEM90
17 / 17 / 7
Регистрация: 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 секунд
Напечатал своё сообщение и увидел Ваше, сейчас попробую
0
Evg
Эксперт CАвтор FAQ
19276 / 7133 / 528
Регистрация: 30.03.2009
Сообщений: 19,973
Записей в блоге: 30
01.06.2009, 22:16 #6
Я к своему посто потом ещё добавил. В трёх своих циклах печатания замени 10 на 2 (ибо столько блоков было проичтано из входного файла)

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

Работа с файлами
помогите решить плиз!!!!!! зарание всем огромное спс!!! Задача 1. Дан файл целых чисел....

Работа с файлами
Задача из сборника Златопольского: 14.28. Имеется типизированный файл, элементами которого...

работа с файлами
Написать программу, которая выводит на экран содержимое текстового файла


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

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

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