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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2009, 17:26   #1
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
Стрелка Перевернуть строку заданную интервалом

Доброго времени суток. Нашёл интересную для меня задачку, захотелось решить.

Задание:
Цитата:
Ввести числа №1 и №2. Из текста выбрать кусок, заключенный между позициями №1 и №2, вывести его на экран. А в тексте перевернуть его заголовок наперед.
Пример входного файла:
Цитата:
privet
zamok
bo
ngo
Если №1 = 5, а №2 = 13, то результат должен быть следующим:
Цитата:
privob
komaz
te
ngo
Были следующие мысли:
Код:
program pr;
uses CRT;
const
e = 100;
type
SMass = array[1..e] of string;
LMass = array[1..e] of integer;
var
{ Массив для строк }
s : SMass;
{ Массив для длин строк }
c : LMass;
i, n_str, n1, n2, p1, p2, sum_lstr, sum_c : integer;
input : text;
str : string;

function check_interval(num_1, num_2, length_str : integer) : boolean;
var
key : boolean;
begin
     { Начальное присвоение }
     key := true;
     { Если интервал не соответствует условию, то ложь }
     if (num_1 > num_2) or (num_1 > length_str) or (num_2 > length_str) or (num_1 <= 0) or (num_2 <= 0) then
     begin
          key := false;
     end;
     { Возвращаем результат }
     result := key;
end;

begin
clrscr;

assign(input,'C:\input.txt');
reset(input);

i:=0;

while not eof(input) do
begin
     { Количество строк }
     inc(i);
     readln(input,str);
     { Записываем строку i }
     s[i] := str;
     { Записываем длину строки i }
     c[i] := length(str);
     { Находим сумму, для проверки интервалов }
     sum_lstr := sum_lstr + c[i];
end;

close(input);

{ Число строк }
n_str := i;

writeln('Информация для пользователя');
writeln('Количество строк: ',n_str);
writeln('Количество символов: ',sum_lstr);

{ Вводим интервал }
repeat
write('Введите интервал (через пробел): ');
read(n1,n2);
until check_interval(n1,n2,sum_lstr);

sum_c := 0;

{ Определяем строку, в которой находится первый символ }
for i:=1 to n_str do
begin
     sum_c := sum_c + c[i];
     if sum_c >= n1 then
     begin
          p1 := i;
          n1 := c[i] - sum_c + n1;
          break;
     end;
end;

sum_c := 0;

{ Определяем строку, в которой находится второй символ }
for i:=1 to n_str do
begin
     sum_c := sum_c + c[i];
     if sum_c >= n2 then
     begin
          p2 := i;
          n2 := c[i] - sum_c + n2;
          break;
     end;
end;

writeln('Позиция первого числа в ',p1,' строке под номером: ',n1);
writeln('Позиция второго числа в ',p2,' строке под номером: ',n2);

end.
Кто может хотя бы на словах описать алгоритм дальнейших действий?

Спасибо.
Пишу глупости.
Gongled вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кликать мышью с интервалом в секунду 4ajnik Помощь студентам 3 10.06.2010 01:07
Перевернуть значения цикла SwiP PHP 14 01.04.2009 17:36
Содержит ли текст заданную отдельную строку длинной не более 255 из символов 0 и 1 Curtis Помощь студентам 1 15.02.2009 20:08
Перевернуть строку Манжосов Денис :) Общие вопросы Delphi 13 03.12.2008 04:37
Удвоить каждый символ строки, потом перевернуть строку Didi Помощь студентам 6 20.05.2008 15:33