0 / 0 / 1
Регистрация: 09.01.2011
Сообщений: 7
1

Переписать строки файла в новый в обратном порядке

04.06.2011, 23:19. Показов 3814. Ответов 4
Метки нет (Все метки)

Доброго времени суток, друзья. Помогите с задачей. Всю голову себе уже с ней сломал.
Дан текстовый файл. Используя стек сформировать новый текстовый файл , каждая строка которого содержит символы соответствующей строки исходного файла, записанные в обратном порядке.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2011, 23:19
Ответы с готовыми решениями:

Переписать в новый массив все числа, в обратном порядке
Дан одномерный массив из целых чисел М(20). Переписать в новый массив все числа, в обратном порядке.

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

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

Используя один просмотр текстового файла, вывести его строки в обратном порядке
Собственно вот: используя один просмотр текстового файлаб вывести его строки в обратном порядке (в...

4
go
Эксперт С++
3645 / 1377 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
05.06.2011, 00:15 2
ничего сложного
определяешь тип стек и стандартные процедуры по нему
тип элементов - строки
далее заполняешь его, а потом вынимаешь
в итоге строки конечного файла будут идти обратном порядке по сравнению с исходным
код писать - лень
если будет что-то не понятно - спрашивай
если не знаешь, как работать с файлами, воспользуйся поиском, я не однократно уже писал
1
13091 / 5872 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
05.06.2011, 02:22 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pavel_4a-4anax, вот реализация стека на статическом массиве:
Pascal
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
const
  //Глубина стека. Т. е. максимальное количество элементов,
  //которое может поместиться в стек.
  //255 - т. к., мы будем работать со строками, а в Pascal максимальная длина
  //строки = 2^8 - 1 = 256 - 1 = 255.
  N = 255;
 
type
  //Тип, описывающий стек.
  TStack = record
    //Указатель вершины стека. Это индекс последнего добавленного элемента.
    Pnt : Integer;
    //Контейнер данных стека.
    Data : array[1..N] of Char;
  end;
 
//Инициализация стека (обнуление стека).
procedure StackPush(var aStack : TStack);
begin
  aStack.Pnt := 0;
end;
 
//Добавить элемент на вершину стека.
function StackPush(var aStack : TStack; const aCh : Char) : Boolean;
begin
  StackPush := False;
  with aStack do begin
    if Pnt < High(Data) then begin
      //Индекс добавляемого элемента.
      Inc(Pnt);
      //Добавляем элемент в массив (т. е. в стек).
      Data[Pnt] := aCh;
      StackPush := True;
    end;
  end;
end;
 
//Взять элемент с вершины стека.
function StackPop(var aStack : TStack; var aCh : Char) : Boolean;
begin
  StackPop := False;
  with aStack do begin
    if Pnt >= Low(Data) then begin
      aCh := Data[Pnt];
      Dec(Pnt);
      StackPop := True;
    end;
  end;
end;
Дальше действуй так, как подсказал go.
---
Можно стек реализовать и на динамических структурах.

Реализация стека на связанном динамическом списке:
Pascal
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
type
  TPElem = ^TElem;
  TElem = record
    Data : Char;
    PNext : TPElem;
  end;
 
//Добавить элемент на вершину стека.
procedure StPush(var aPStack, aPElem : TPElem);
begin
  if aPElem = nil then Exit;
  aPElem^.PNext := aPStack;
  aPStack := aPElem
end;
 
//Взять элемент с вершины стека.
function StPop(var aPStack, aPElem : TPElem) : Boolean;
begin
  Result := False;
  if aPStack = nil then Exit;
  aPElem := aPStack;
  aPStack := aPElem^.PNext;
  Result := True;
end;
 
//Удаление стека из памяти.
procedure StFree(var aPStack : TPElem);
var
  PDel : TPElem;
begin
  while aPStack <> nil do begin
    PDel := aPStack;
    aPStack := aPStack^.PNext;
    Dispose(PDel);
  end;
end;
1
go
Эксперт С++
3645 / 1377 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
05.06.2011, 10:09 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
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
Type
    adr = ^zveno;
  zveno = record
          element: string;
          adrcled: adr
        end;
Procedure Zanes (Var St: Stek; El:string); 
 Var  
  Q: Adres1; 
 Begin 
{1} New (Q); 
{2}  Q^.Element := El; 
{3}  Q^.Adrcled := St; 
{4}  St := Q 
End; 
Procedure Vibor (Var St: Stek; Var A: string);  {Будете использовать эту процедуру,\
 покуда не закончаться элементы в стеке }
Var  
  Q: Adres1; 
 Begin 
{1}  A := St^.Element; 
{2}  Q := St; 
{3}  St := St^.Adrcled; 
{4}  Dispose (Q) 
End;
1
0 / 0 / 1
Регистрация: 09.01.2011
Сообщений: 7
05.06.2011, 21:29  [ТС] 5
Спасибо большое,друзья. Вы спасли меня.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2011, 21:29
Помогаю со студенческими работами здесь

Очереди: Содержимое текстового файла переписать в новый файл, перенося цифры в конец строки
Здравствуйте! Используя очередь, решить следующую задачу. Содержимое текстового файла f,...

Переписать все элементы массива А в массив А1 в обратном порядке
Ввести массив А(n). Переписать все элементы массива А в массив А1 в обратном порядке. Массивы А и...

Используя стек , переписать строку посимвольно в обратном порядке
Используя стек ,переписать строку посимвольно в обратном порядке!!!!!!!!!!!

Создать матрицу размера nxm. Переписать столбцы в обратном порядке
Создать матрицу размера nxm. Переписать столбцы в обратном порядке.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru