novoe07
1

Текстовый файл: сделать так, чтобы все строки были задом наперед

25.12.2012, 22:16. Показов 1991. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, уважаемые форумчане! Возникла небольшая проблема с написанием такой программы: Дан текстовый файл, состоящий из строк, сделать так, чтобы все строки были задом наперед. Что-то вроде "Написать" стало "ьтасипан" Заранее благодарю за помощь! Если можно,то самым простым способом...
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2012, 22:16
Ответы с готовыми решениями:

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

Преобразовать файл так, чтобы все строки Были отцентрированы
Считаем, что длинна строк текстового файла не превышает 80 символов. Преобразовать файл так, чтобы...

Файл: Перезаписать содержание файла так, чтобы все строки были по 20 символов
Создать текстовый файл f, состоящий из 2-3 строк текста произвольной длины. Перезаписать содержание...

Переписать исходный текстовый файл в результирующий задом наперед
Написать программу, которая переписывает исходный текстовый файл в результирующий задом наперед....

5
332 / 85 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
25.12.2012, 22:43 2
А какая проблема возникла?

Добавлено через 3 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure asd;
var 
 f: textfile;
 s, s1: string;
 i: integer;
begin
 assignfile(f, 'my.txt');
 reset(f);
 readln(f, s);
 closefile(f);
 for i:=1 to length(s) do
  s1[Length(s)-i+1]:=s[i];
 rewrite(f);
 write(s1);
 closefile(f);
end;
1
Заблокирован
25.12.2012, 23:11 3
Да очень просто. Если строка, работаем со строкой, если это слово, то со словом, если вообще весь текст, то с текстом.
Берём, то что нужно, например одну строку и вычисляем её длину, а потом щделим её пополам. Это будет количество шагов цикла. А в цикле нужно менять местами симметричные позиции.

Ну например слово шоколад
7 символов
делим на 2, будет 3
шаг 1 меняется местами 1 и 7 буквы
шаг 2 меняется местами 2 и 6 буквы
шаг 3 меняется местами 3 и 5 буквы

Предположим S - строка
n - её длина

v - вспомогательная строка

Тогда
c:= n div 2 - 1;
Delphi
1
2
3
4
5
for i:= 0 to c dо begin
                 v: = S [i+1];                        
                 S[i+1]:= S[n-i];
                 S[n-i]:=v;
                                   end;
1
novoe07
25.12.2012, 23:23 4
Цитата Сообщение от Lirrk Посмотреть сообщение
Да очень просто. Если строка, работаем со строкой, если это слово, то со словом, если вообще весь текст, то с текстом.
Берём, то что нужно, например одну строку и вычисляем её длину, а потом щделим её пополам. Это будет количество шагов цикла. А в цикле нужно менять местами симметричные позиции.

Ну например слово шоколад
7 символов
делим на 2, будет 3
шаг 1 меняется местами 1 и 7 буквы
шаг 2 меняется местами 2 и 6 буквы
шаг 3 меняется местами 3 и 5 буквы

Предположим S - строка
n - её длина

v - вспомогательная строка

Тогда
c:= n div 2 - 1;
Delphi
1
2
3
4
5
for i:= 0 to c dо begin
                 v: = S [i+1];                        
                 S[i+1]:= S[n-i];
                 S[n-i]:=v;
                                   end;
Спасибо Вам за внятное обьяснение! Разобрался.
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32793 / 21133 / 8144
Регистрация: 22.10.2011
Сообщений: 36,393
Записей в блоге: 8
26.12.2012, 13:18 5
ReverseString решает эту задачу в одну строку. Не надо придумывать велосипеды, лучше, чем у разработчиков это всё равно не будет.
1
7 / 7 / 3
Регистрация: 01.04.2012
Сообщений: 120
26.12.2012, 14:10 6
Цитата Сообщение от UI Посмотреть сообщение
ReverseString решает эту задачу в одну строку. Не надо придумывать велосипеды, лучше, чем у разработчиков это всё равно не будет.
Кстати да, честно говоря забыл про чудо функцию.
А вообще, первое что пришло на ум, это просто взять строку, узнать длину и потом в новую строку писать с конца.
Delphi
1
2
3
4
5
6
7
8
9
10
function RS(const s: string): string;
var
ss:string;
i:integer;
begin
for i:=length(s) downto 1 do begin
ss:=ss+s[i];
end; 
RS:=ss;
end;
Lirrk, ты знаешь толк в извращениях)
0
26.12.2012, 14:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2012, 14:10
Помогаю со студенческими работами здесь

Дан текстовый файл с 1 строкой, дописать в него эту же строку задом наперед
Вот пытался сделать подскажите что не так:? using System; using System.Collections.Generic;...

Как перевернуть индексацию массива задом наперёд, так чтобы не менять местами элементы массива?
Есть нужда в том чтобы перевернуть элементы массива задом наперёд, но хочется это сделать так чтобы...

Файл: Как сделать так, чтобы числа в файл были прописаны не рандомно?
Здраствуйте, дан код: #include "stdafx.h" #include <iostream> #include <fstream> #include...

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

Можно сделать так, чтобы в Word 2010 строки таблицы были на одной странице
Привет. Приведу сразу скриншот: Не очень удобно читать, когда начинается строка таблица на одной...

Сделать так, чтобы в двух массивах все значения были равными и их скалярное произведение равнялось 4
Как можно сделать так, чтобы в 2-х одномерных массивах все значения были равными и их скалярное...


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

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

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