Вопрос № 90827: Уважаемые эксперты, помогите расставить begin и end; во фрагменте программы:
reset(f);
while not eof(f) do
read(f,s);
Tmp:=S+' ';
While Pos(' ',Tmp)<>0 do
begin
p:=Pos(' ',Tmp);
S:=Copy(Tmp,1,p-1);
T...Вопрос № 90840: Привет профи.Помогите пожалуйста,мне нужно сделать вот такую програму:
сделать программу перевода букв алфавита с больших в маленькие.Использовать процедуру для латинского и русского языков. Перевести "Индивидуальное задание к лабораторной р...Вопрос № 90844: Уважаемые эксперты! Вот у меня ещё такая задачка, которую я решить не могу (
Суть вот в чем:
сделать программу, которая позволяет попунктно (согласно запросу) выводить на экран монитора статти 55 и 56 , которые находятся в текстовых файлах s...Вопрос № 90850: Есть ли в Паскале аналог фунции strchr из С?
Заранее благодарен!...
Вопрос № 90.827
Уважаемые эксперты, помогите расставить begin и end; во фрагменте программы:
reset(f);
while not eof(f) do
read(f,s);
Tmp:=S+' ';
While Pos(' ',Tmp)<>0 do
begin
p:=Pos(' ',Tmp);
S:=Copy(Tmp,1,p-1);
Tmp:=Copy(Tmp,p+1,Length(Tmp)-p);
l:=Length(S);
if l=1 then mas[1]:=s;
if l=2 then mas[2]:=s;
if l=3 then mas[3]:=s;
if l=4 then mas[4]:=s;
if l=5 then mas[5]:=s;
if mas[1]<>'' then writeln(f1,mas[1]) else writeln(f1);
if mas[2]<>'' then writeln(f2,mas[2]) else writeln(f2);
if mas[3]<>'' then writeln(f3,mas[3]) else writeln(f3);
if mas[4]<>'' then writeln(f4,mas[4]) else writeln(f4);
if mas[5]<>'' then writeln(f5,mas[5]) else writeln(f5);
end;
close(f);
Пожалуйста не изменяйте ничего в написанной программе, она должна работать,
просто я совсем запутался в циклах while ... do что не могу правильно поставить
составной оператор Begin end;, но знаю где он должен находится.
Условие такое (если вам поможет разобраться):
Пусть дан текстовый файл. Максимальная длина слова в этом файле равнв пяти символам.
Создайте пять файлов. Каждой строке входного файла соответствует одна строка в каждом
из пяти файлов, в которые переписаны через пробел слова соответствующей длины: в
первом файле-слова длины 1 и т.д. Если слов длины k нет, то соответствующая строка
должна быть пустой.
P.S. Ни в коем случае не изменяйте программу.
Код ниже.
Приложение:
Отправлен: 10.06.2007, 15:09
Вопрос задал: Eisenheim (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Градов Юрий Михайлович
Здравствуйте, Eisenheim!
Великолепное правило - обозначать на листинке открытие и закрытие begin и end отступами и с новой строки, тогда никогда не запутаетесь. Например:
begin
While n<>0 do
begin
for i:=1 to 100 do
begin
n:=n*i;
..........
n:=n-k;
end;
end;
end.
Измененный код смотрите в приложении (перенесено из мини-форума по просьбе эксперта). [Edited by Gh0stik]
Приложение:
--------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 10.06.2007, 15:38 Оценка за ответ: 5 Комментарий оценки: Тема!
Вопрос № 90.840
Привет профи.Помогите пожалуйста,мне нужно сделать вот такую програму:
сделать программу перевода букв алфавита с больших в маленькие.Использовать процедуру для латинского и русского языков. Перевести "Индивидуальное задание к лабораторной работе 3" и "Borland international".
P.S. пишите пожалуйсто всё , потомучто я нуб (
Отправлен: 10.06.2007, 16:25
Вопрос задал: S.A.O. (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Tribak
Здравствуйте, S.A.O.!
Вот код:
program www;
uses crt;
var
i:integer;
s1,s2:string;
function pere(c:char):char;
var
z:char;
begin
z:=c;
if (ord(c)<91) and (ord(c)>64) then z:=chr(ord(c)+32);
if (ord(c)>127) and (ord(c)<144) then z:=chr(ord(c)+32);
if (ord(c)>143) and (ord(c)<160) then z:=chr(ord(c)+80);
pere:=z;
end;
begin
clrscr;
readln(s1);
for i:=1 to length(s1) do
s2:=s2+pere(s1[i]);
writeln(s2);
readln;
end.
Для перевода используется функция pere, она берет букву и анализирует ее код, от 65 до 90 идут заглавные латинские буквы, она к их номеру добавляет 32 и получаються теже буквы, но строчные. С русскими буквами сложнее, строчные буквы разбиты на 2 части, а-п и р-я, а заглавные рядом, поэтому для русских букв функция анализирует стоит ли до П наша буква или после и взависимости от этого выбирает сколько добавить к коду символа чтоб получить строчную букву, +32 либо +80
chr-возращает по номеру символ
ord-возращает по символу его номер
Ответ отправил: Tribak (статус: 2-ой класс)
Ответ отправлен: 10.06.2007, 17:32 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо. Мне самому стало всё ясно.
Отвечает: Градов Юрий Михайлович
Здравствуйте, S.A.O.!
var st: string;
i: integer;
begin
ClrScr;
Write('Input string: ');
Readln(st);
for i:=1 to Length(st) do
begin
if st[i] in ['A'..'Z','А'..'Я'] then st[i]:=Chr(Ord(st[i])+32);
end;
Writeln(st);
ReadKey;
end.
--------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 10.06.2007, 17:55 Оценка за ответ: 5 Комментарий оценки: Спасиб. То что ответ такой маленький , эт канешно приветсвуется!
Вопрос № 90.844
Уважаемые эксперты! Вот у меня ещё такая задачка, которую я решить не могу (
Суть вот в чем:
сделать программу, которая позволяет попунктно (согласно запросу) выводить на экран монитора статти 55 и 56 , которые находятся в текстовых файлах st55 и st56 . (суть написаного в файлах не важна).
Отправлен: 10.06.2007, 16:46
Вопрос задал: S.A.O. (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Градов Юрий Михайлович
Здравствуйте, S.A.O.!
uses crt;
var st: string; F: TextFile; {в Pascal нет такого типа}
F: Text;
begin
ClrScr;
Write('Input st.№: ');
Readln(st);
if st[2]<>'t' then st:='t'+st;
if st[1]<>'s' then st:='s'+st;
st:=st+'.txt';
Assign(F,st);
{$I-}
Reset(F);
{$I+}
if IOResult = 0 then
begin
While not Eof(F) do
begin
Readln(F,st);
Writeln(st);
end CloseFile(F);{в Pascal нет такой процедуры}
Close(F);
end else Writeln('File access error');
ReadKey;
end.
Конечно выше перечисленные ошибки, не будут ошибками в Delphi, но вопрос был задан в тематику Pascal! [Edited by Gh0stik] --------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 10.06.2007, 17:17 Оценка за ответ: 5 Комментарий оценки: Спасибо! )
Вопрос № 90.850
Есть ли в Паскале аналог фунции strchr из С?
Заранее благодарен!
Отправлен: 10.06.2007, 18:16
Вопрос задал: Torrens (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Ерёмин А.А.
Здравствуйте, Torrens!
Для нахождения первого вхождения подстроки в строку существует функция Pos(): Pos('подстрока','строка');
А вот для нахождения последнего вхождения, например, функции нет, но её несложно написать (см. вопрос №89614).
Удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин А.А. (статус: Профессор) Россия, Тула WWW:Программирование на DELPHI ---- Ответ отправлен: 10.06.2007, 18:25 Оценка за ответ: 5
Отвечает: Gh0stik
Здравствуйте, Torrens!
Конечно есть это Function Pos(Substr : String; S : String) : Byte;
Выдержка из справки: Pos (функция)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Ищет подстроку в строке.
Объявление:
Function Pos(Substr : String; S : String) : Byte;
Режим:
Windows, Real, Protected
Замечания:
Параметры Substr и S - строковые выражения. Pos ищет первое вхождение строки
Substr в строку S и возвращает целочисленное значение, которое является
индексом первого символа Substr внутри S. Если строка Substr не найдена, то
Pos возвращает нуль.
Good LUck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 10.06.2007, 18:26 Оценка за ответ: 5