строки в паскале
Автор я задал вопрос в разделе Другие языки и технологии
строки в Паскале и получил лучший ответ
Ответ от 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 ]
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 ставил |
процедура Insert в паскале.
Нет, не права. Insert - это процедура, она ничего не возвращает. Она вставляет подстроку "красное "
подробнее...
Эй помогителюди! ) Составить программу в паскаль которая получает из слова «АПЕЛЬСИН» слово «СПАНИЕЛЬ» и «ПАНЕЛЬ».
В Паскале строка это массив символов
Функция Concat (s1, s2, ..sn) возвращает строку,
подробнее...
как преобразовать real в string в паскаль
Люди, дельфисты! Ну кто, кто вам сказал, что у человека в ПАСКАЛЕ есть такая функция FloatToStr ?
подробнее...
Народ, как задается двумерный массив в паскале??
Массивы, положение элементов в которых описывается двумя индексами, называются двумерными.
подробнее...
Помогите со строками в языке программирования Си!
1) строк в Си нет =/
2) зачем обнулять? записывай поверх и всё.
3) программа для задачи
подробнее...
Как задать двумерный динамический массив в Паскале?
Двумерные массивы Паскаля – матрицы
Двумерный массив в Паскале трактуется как одномерный
подробнее...
Помогите написать программку в Паскале...
Оператора string нет. string - зарезервированное слово - объявление типа "строка".
Можно
подробнее...
Какая разница между WRITE и WRITELN (READ и READLN) в Паскале?
после выполнения оператора WRITELN курсор перходит на следующую строку и следущий текст там и
подробнее...
пожалуйста скажите как удалить символ с конца в паскале???
Если имеется в виду символ с конца строки, то просто скопируй ее всю в другую строку кроме
подробнее...
Пожалуйста, объясните каждую строчку действий в паскале:
Var - раздел переменных, здесь мы объявляем какие переменные каких типов у нас будут
подробнее...
Преобразование строки в число в Turbo Pascal
По-моему, из текстового файла нормально числа читаются. Не надо никаких
подробнее...
Написать программу в Паскале. сравните два числа,большее из них увеличьте на 3,а меньшее уменьшите в 3 раза.Паскаль
И чего тут писать
If а>b to
begin
а := а*3
b:=а/3
end
подробнее...
Турбо Паскаль 7.0 В функцию val можно загнать конкретный элимент строки или можно только всю строку?
не очень понятен вопрос) )
вот у Вас в строке есть какое-то число.
Паскаль его читает и
подробнее...