строки в паскаль



строки в паскале

Автор я задал вопрос в разделе Другие языки и технологии

строки в Паскале и получил лучший ответ

Ответ от Gennady[гуру]
Доброго времени суток.

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

uses crt;
var
s, S1, tmpS : string;
SumLen, NumWord : Integer;
sred : real;
begin
Write('Введите предложение : ');
ReadLn(S);
S := S + ' '; {добавляем пробел, чтобы не потерять последнее слово}
S1 := S; {сохраняем копию введенного предложения в переменной S1}

SumLen := 0;
NumWord := 0;
while Pos(' ', S) > 0 do begin {пока в строке есть пробелы, а значит и слова}
tmpS := Copy(S, 1, Pos(' ', S) -1); {выделяем очередное}
if Length(tmpS) > 0 then begin {слово не пустое}
SumLen := SumLen + Length(tmpS); {суммируем длину}
NumWord := NumWord + 1; {и увеличиваем счетчик слов}
Delete(S,1, Pos(' ', S)); {удаляем слово из входной строки}
end;

Sred := SumLen / NumWord; {определяем среднюю длину слова}
WriteLn('Средняя длина слова ', Sred:0:3);

S := S1; {восстанавливаем входную строку}
while Pos(' ', S) > 0 do begin {пока в строке есть пробелы, а значит и слова}
tmpS := Copy(S, 1, Pos(' ', S) -1); {выделяем очередное}
if Abs(Length(tmpS) - Round(Sred)) <= 2 then {разница в длинах не более 2 символов}
WriteLn(tmpS); {выводим слово}
Delete(S,1, Pos(' ', S)); {удаляем слово из входной строки}
end;

ReadLn;
end.

Удачи!

PS Если все-таки нужен ваш вариант, пишите в почту.

Ответ от Їеловек Наук[гуру]
чтобы Ответы не переделывали код программы, целесообразно использовать [ l ] вместо [ i ]

Ответ от Alibak[активный]
var
i, n, bukvi, slov, sred : integer;
slovo, s : string;
m : Array [1..256] of string;
begin
slova:=0;
bukvi:=0;
n:=0;
Readln(s); {читаем текст}
for i:=1 to length(s) do {Повторяем действия столько раз скоко символов в строке s}
if (s[|] = ' ') and (slovo <> ''); {Если буква i в строке s равно пробелу и переменная slovo }
then {то }
begin
m[n]:=slovo; {массив m с номером n заполняем тем что есть в переменной slovo}
inc(slova); {Увеличиваем переменную на 1, которая подсчитывает количество слов}
inc(n); {увеличиваем на еденичку переменную n, что бы в следуйщий раз слово записывалась в следуйщий массив}
slovo:='' {опусташаем переменную slovo}
else
begin {иначе}
inc(bukvi); {увеличиваем на еденичку значение перменной bukvi, которая подсчитывает количество букв}
slovo:=slovo + s[|]; {добавляем букву к переменной slovo, сохраняющая слова}
end;
sred:=bukvi/slova; {среднее арефметическое количества букв в слове}
writeln(sred);
for i:=1 to slova do
if length(m[|])-sred>2
then writeln(m[|]);
end.
Не компилировал, так что могут быть недочеты.
Алсо как посоветовал гуру (лол, ник не помню, возвращаться лень) вместо i ставил |

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: строки в Паскале

процедура Insert в паскале.
Нет, не права. Insert - это процедура, она ничего не возвращает. Она вставляет подстроку "красное "
подробнее...
спросили в Shadrinsk Паскаль
как преобразовать real в string в паскаль
Люди, дельфисты! Ну кто, кто вам сказал, что у человека в ПАСКАЛЕ есть такая функция FloatToStr ?
подробнее...
спросили в Pavel Prusskiy
Народ, как задается двумерный массив в паскале??
Массивы, положение элементов в которых описывается двумя индексами, называются двумерными.подробнее...
спросили в String h
Помогите со строками в языке программирования Си!
1) строк в Си нет =/
2) зачем обнулять? записывай поверх и всё.
3) программа для задачи
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

Как задать двумерный динамический массив в Паскале?
Двумерные массивы Паскаля – матрицы
Двумерный массив в Паскале трактуется как одномерный
подробнее...

Помогите написать программку в Паскале...
Оператора string нет. string - зарезервированное слово - объявление типа "строка".

Можно
подробнее...

Какая разница между WRITE и WRITELN (READ и READLN) в Паскале?
после выполнения оператора WRITELN курсор перходит на следующую строку и следущий текст там и
подробнее...

Функция в паскале
uses crt;
function sum(a:Integer):Integer;
var r:Integer;
begin
r:=0;подробнее...

пожалуйста скажите как удалить символ с конца в паскале???
Если имеется в виду символ с конца строки, то просто скопируй ее всю в другую строку кроме
подробнее...

Пожалуйста, объясните каждую строчку действий в паскале:
Var - раздел переменных, здесь мы объявляем какие переменные каких типов у нас будут
подробнее...

Преобразование строки в число в Turbo Pascal
По-моему, из текстового файла нормально числа читаются. Не надо никаких
подробнее...
спросили в Паскаль
Турбо Паскаль 7.0 В функцию val можно загнать конкретный элимент строки или можно только всю строку?
не очень понятен вопрос) )
вот у Вас в строке есть какое-то число.
Паскаль его читает и
подробнее...
Строковый тип на Википедии
Посмотрите статью на википедии про Строковый тип
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*