Другие языки программирования и технологии
Здравствуйте напишите простую прогу на паскале пожалуйста. задание внутри
текст задан строкой var St: string напечатать текст, составленный из последних литер всех слов
Доброго времени суток.
Подход Александра Рыбакова нормальный, но вдруг разделителей несколько? Допустим вы ввели пробел в качестве разделителя, а в предложении есть причастный оборот. Что, будем выводить запятую? Или пользователь по ошибке ввел подряд два (или даже больше) разделителя? Так что не все так просто.
Предлагаемая программка свободна от такого эффекта, поскольку оперирует несколькими разделителями слов. Правда, все они должны быть определены до этапа компиляции. Ну и по объему чуть больше.. .
program WordFromLastChar;
uses Crt;
const
WordDelim : set of Char = [' ',',','.']; {разделители слов: пробел, запятая и точка. можно добавить и другие символы}
var
s, s1,s2 : String;
j : Integer;
begin
ClrScr;
Write('Введите предложение: ');
ReadLn(s);
s1 := '';
s2 := '';
j := 1;
while j <= Length(s) do begin
if not (s[j] in WordDelim) then s1 := s1 + s[j]; {накапливаем, если не разделитель}
if (s[j] in WordDelim) or (j = Length(s)) then {разделитель или последний символ}
if (s1 <> '') then begin {слово не пустое}
s2 := s2 + s1[Length(s1)]; {накапливаем последние символы выделенных слов}
s1 := ''; {очищаем накопитель}
end;
Inc(j);
end;
WriteLn(s2); {выводим результат}
ReadLn;
end.
Удачи!
Подход Александра Рыбакова нормальный, но вдруг разделителей несколько? Допустим вы ввели пробел в качестве разделителя, а в предложении есть причастный оборот. Что, будем выводить запятую? Или пользователь по ошибке ввел подряд два (или даже больше) разделителя? Так что не все так просто.
Предлагаемая программка свободна от такого эффекта, поскольку оперирует несколькими разделителями слов. Правда, все они должны быть определены до этапа компиляции. Ну и по объему чуть больше.. .
program WordFromLastChar;
uses Crt;
const
WordDelim : set of Char = [' ',',','.']; {разделители слов: пробел, запятая и точка. можно добавить и другие символы}
var
s, s1,s2 : String;
j : Integer;
begin
ClrScr;
Write('Введите предложение: ');
ReadLn(s);
s1 := '';
s2 := '';
j := 1;
while j <= Length(s) do begin
if not (s[j] in WordDelim) then s1 := s1 + s[j]; {накапливаем, если не разделитель}
if (s[j] in WordDelim) or (j = Length(s)) then {разделитель или последний символ}
if (s1 <> '') then begin {слово не пустое}
s2 := s2 + s1[Length(s1)]; {накапливаем последние символы выделенных слов}
s1 := ''; {очищаем накопитель}
end;
Inc(j);
end;
WriteLn(s2); {выводим результат}
ReadLn;
end.
Удачи!
сам пиши.
вопервых неясно чем разделены слова. Если просто пробелами, то просто, если не просто, то соответственно не просто.
в цикле перебираешь строку как массив St, начиная со второго элемента. В элементе 0 находится длина строки, но её можно получить соответствующей функцией.
проверяешь элемент на разделитель, если разделитель, проверяешь предыдущий элемент если не разделитель - печатаешь его. проверку на разделитель можно оформить в виде функции.
вопервых неясно чем разделены слова. Если просто пробелами, то просто, если не просто, то соответственно не просто.
в цикле перебираешь строку как массив St, начиная со второго элемента. В элементе 0 находится длина строки, но её можно получить соответствующей функцией.
проверяешь элемент на разделитель, если разделитель, проверяешь предыдущий элемент если не разделитель - печатаешь его. проверку на разделитель можно оформить в виде функции.
Да там все просто на самом деле. Просто раздражают такие, напиши им. Нет бы книжку взять, или тогда уж оплатить
Программа может выглядеть так:
var str: string;
ch: char;
i: integer;
begin
writeln('Введите текст и разделяющий символ: ');
readln(str,ch);
for i:=1 to length(str) do
if (str=ch) then write(str[i-1]);
readln;
end.
Смысл в том, что текст у нас должен представлять набор слов, разделенных определенным символом (пробелом или чем-то еще) , сначала мы вводим наш текст, потом вводим символ - разделитель. Далее в цикле перебираем символы всей строки, если текущий символ равен разделяющему символу, то печатаем предыдущий символ. Вот так вот. Удачи.
var str: string;
ch: char;
i: integer;
begin
writeln('Введите текст и разделяющий символ: ');
readln(str,ch);
for i:=1 to length(str) do
if (str=ch) then write(str[i-1]);
readln;
end.
Смысл в том, что текст у нас должен представлять набор слов, разделенных определенным символом (пробелом или чем-то еще) , сначала мы вводим наш текст, потом вводим символ - разделитель. Далее в цикле перебираем символы всей строки, если текущий символ равен разделяющему символу, то печатаем предыдущий символ. Вот так вот. Удачи.
Ужос! ! Мы это в 10 классе проходили.. . Нет в мире проги отвратительней чем паскаль!!!
Похожие вопросы
- приветик!напишите плиз проги...в паскале.
- СРОЧНО ! Напишите прогу на Паскале
- напишите проги в ПАСКАЛЕ плиз!!!очень надо.
- Помогите написать прогу на паскале
- люди помогите написать прогу в паскале чтоб она запрашивала число и потом писала простое оно или нет, всю голову сломал
- Помогите написать программу по паскалю для задания! ( см. внутри)
- СРОЧНО ПОМОГИТЕ!!! Напишите прогу на паскале
- помогите доработать маленькую прогу на паскале(см. внутри)
- КТО знает подскажите как прогу в паскале написать с применением аски кодов
- Как написать прогу на паскале или С, чтобы при запуске этой проги она удаляла файл, например С://123.txt