Const n = 3; var m: array[1..n] of integer; i, mn, mx: integer; begin write('введите через пробел три целых числа: '); i : = 1; repeat read(m[i]); i : = i + 1 until i > n; mn : = m[1]; mx : = mn; i : = 2; repeat if mx < m[i] then mx : = m[i] else if mn > m[i] then mn : = m[i]; i : = i + 1 until i > n; writeln('разность наибольшего с наименьшим равна ', mx - mn) end. тестовое решение: введите через пробел три целых числа: 7 9 3 разность наибольшего с наименьшим равна 6
Volochaev
26.01.2021
Как один из примитивных вариантов type libbook = record book: string[50]; author: string[50]; publisher: string[30]; pubyear: integer; city: string[30]; deleted: boolean end; var gf: file of libbook; function create(pname: string): file of libbook; // создает или обнуляет существующий файл библиотеки // с полным именем pname (в имени можно указать и путь) begin var f: file of libbook; rewrite(f,pname); result: =f; f.close end; procedure insert(plib: libbook); // добавляет книгу в базу begin var n: =filesize(gf); seek(gf,n); write(gf,plib); end; procedure bookwrite(pn: integer; plib: libbook); // вывод книги номер pn begin writeln('*** книга №',pn,' ***'); if plib.deleted=false then begin writeln('название: ',plib.book); writeln('автор: ',plib.author); writeln('издатель: ',plib.publisher); writeln('год выпуска: ',plib.pubyear); writeln('город: ',plib.city); end else writeln('=== у д а л е н а ==='); writeln end; procedure view(pkol: integer: =0); // отображает содержимое библиотеки. // можно вывести не все, а только pkol первых записей begin var nb: =filesize(gf); if nb=0 then writeln('библиотека пустая') else begin seek(gf,0); writeln('книг в библиотеке: ',nb,newline); if pkol< > 0 then nb: =min(pkol,nb); var lib: libbook; for var i: =1 to nb do begin read(gf,lib); bookwrite(i,lib) end end end; function delete(pnom: integer): boolean; // удаляет книгу с номером pnom и возвращает true. // возвращает false, если такой книги нет begin var nb: =filesize(gf); var lib: libbook; if pnom-1> nb then begin writeln('книга №',pnom,' не найдена'); result: =false end else begin seek(gf,pnom-1); read(gf,lib); lib.deleted: =true; seek(gf,pnom-1); write(gf,lib); writeln('книга №',pnom,' удалена'); result: =true end; end; procedure find(ps: string); // поиск книги по параметрам, заданным строкой // формат < код> пробел < значение> begin var n: =ord(ps[1])-ord('0'); delete(ps,1,2); var par: =ps; var lib: libbook; case n of 0: begin // по номеру книги var nb: =filesize(gf); var fn: =par.tointeger; if fn-1> nb then writeln('книги с таким номером нет') else begin seek(gf,fn-1); read(gf,lib); bookwrite(fn,lib) end end; 1: begin // по названию книги var nl: =par.length; // для контекстного поиска seek(gf,0); var i: =1; while not eof(gf) do begin read(gf,lib); if copy(lib.book,1,nl)=par then begin bookwrite(i,lib); exit end else inc(i) end; writeln('поиск по названию книги ',par,' неуспешен') end; 2: begin // по автору книги var nl: =par.length; // для контекстного поиска seek(gf,0); var i: =1; while not eof(gf) do begin read(gf,lib); if copy(lib.author,1,nl)=par then begin bookwrite(i,lib); exit end else inc(i) end; writeln('поиск по автору книги ',par,' неуспешен') end; 3: begin // по издательству var nl: =par.length; // для контекстного поиска seek(gf,0); var i: =1; while not eof(gf) do begin read(gf,lib); if copy(lib.publisher,1,nl)=par then begin bookwrite(i,lib); exit end else inc(i) end; writeln('поиск по издательству книги ',par,' неуспешен') end; 4: begin // по году выпуска seek(gf,0); var i: =1; var ipar: =par.tointeger; while not eof(gf) do begin read(gf,lib); if lib.pubyear=ipar then begin bookwrite(i,lib); exit end else inc(i) end; writeln('поиск по году издания ',par,' неуспешен') end; 5: begin // по городу var nl: =par.length; // для контекстного поиска seek(gf,0); var i: =1; while not eof(gf) do begin read(gf,lib); if copy(lib.city,1,nl)=par then begin bookwrite(i,lib); exit end else inc(i) end; writeln('поиск по городу ',par,' неуспешен') end; else writeln('неверная строка поиска') end end; const libname='mylib.lib'; begin var mybook: libbook; gf: =create(libname); reset(gf,libname); with mybook do begin book: ='первый учебник'; author: ='первый автор'; publisher: ='издательство 1'; pubyear: =2010; ; city: ='город 1' end; insert(mybook); with mybook do begin book: ='второй учебник'; author: ='второй автор'; publisher: ='издательство 2'; pubyear: =2012; ; city: ='город 2' end; insert(mybook); with mybook do begin book: ='третий учебник'; author: ='третий автор'; publisher: ='издательство 3'; pubyear: =2006; ; city: ='город 3' end; insert(mybook); view; delete(2); view; find('0 3'); find('1 перв'); find('2 тре'); find('3 издательство 2'); find('4 2006'); gf.close end.
Yelena642
26.01.2021
Получилась громоздкая конструкция из логический условий, но по-другому никак не придумалось var t: string; n: integer; i,x,y: byte; begin writeln ('введите строку'); readln (t); n: =length(t); t: =t+'.'; //пририсовываем к строке лишний символ "не буква", иначе программа может не посчитать последнее слово в случае, если строка кончается буквой. x: =0; // переменная для обозначения конца каждой группы из букв, идущих подряд y: =0; // переменная для подсчета количества групп из букв, идущих подряд for i: =1 to n do begin // определяем, является ли текущий символ буквой: if ((ord(t[i])> 64) and (ord(t[i])< 91)) or ((ord(t[i])> 96) and (ord(t[i])< 123)) or ((ord(t[i])> 191) and (ord(t[i])< 256)) then x: =1 //если да, то х=1 else begin if x=1 then begin y: =y+1; x: =0 end; // если текущий символ не буква, то проверяем "х" - если х=1, значит слово кончилось и "у" увеличиваем на 1, а "х" соответственно снова обнуляем. теперь при следующем символе "небуква" наш "у" не увеличится //в следующем длинном условии проверяем исключение - является ли текущий символ тире или дефисом. если дефис, то количество уже посчитанных слов уменьшим на 1, т.к. дефис стоит в середине слова и значит предыдущее прибавление 1 было неправильным. if (t[i]='-') and (t[i-1])> 64) and (ord(t[i-1])< 91)) or ((ord(t[i-1])> 96) and (ord(t[i-1])< 123)) or ((ord(t[i-1])> 191) and (ord(t[i-1])< and (t[i+1])> 64) and (ord(t[i+1])< 91)) or ((ord(t[i+1])> 96) and (ord(t[i+1])< 123)) or ((ord(t[i+1])> 191) and (ord(t[i+1])< then y: =y-1 end end; writeln('в данной строке ',y,' слов') end. результат работы программы: введите строку ali-baba,- это не имя атамана разбойников, это китайский магазин. в данной строке 9 слов