ch:integer;
repeat
ch := n mod radix
if ch < 10 then begin
s := Char((ch+48)) + s;
else
s := Char((ch+64)) + s;
end;
n:=n div radix;
until n=0;
Help!!!
1. Задача: Задан текст из маленьких латинских букв, в конце точка. Напечатать в алфавитном порядке все согласные буквы, которые не входят ни в одно слово, с использованием процедуры.
Представил следующее решение, но препод говорит, что неправильно. Якобы нигде не использован символ '.', т.е. текст типа mama.papa. Проверил, и с этим текстом работает. Немогу понять. Может я не так условие задачи понял? Как исправить?
program Leter;
type let=set of 'a'..'z';
st=string;
var s1:string; h,h1,h2:let; c:'a'..'z';
procedure in_word (s:string; var ss:let);
var i:integer;
begin
ss:=[];
for i:=1 to length(s) do
if s in h then ss:=ss+[s]
end;
begin
h:=['b','c','d','f','g','h','k','l','m','n','p','q','r','s','t','v','w','x','z'];
writeln('‚ўҐ¤ЁвҐ бва®Єг');
readln(s1);
in_word(s1,h1);
h2:=h-h1;
for c:='a' to 'z' do
if c in h2 then writeln(c)
end.
2.Задача: Задано число Р. Построить запись типа:
type chisco=record
поле1-число;
поле2- двоичное представление;
поле3 - шестнадцатеричное представление;
end;
и напечатать.
Решение ниже. Прошу Вас проверить правильно ли понято мной условие задачи по приведенному решению.
Заранее благодарен, а то мозги уже зацикливаются. А экзамен на носу.
program Chislo;
type chislo=record
p1:integer;
p2:string;
p3:string;
end;
var p:chislo; k:integer;
function FromDec(n, radix:longint):string;
var s:string;
const digit:string[16]='0123456789ABCDEF';
begin
s:=' ';
repeat
s:=digit[(n mod radix)+1]+s;
n:=n div radix;
until n=0;
FromDec:=s;
end;
begin
write('Введите число');
readln(k);
p.p1:=k;
writeln('Поле p1=',p.p1);
p.p2:=FromDec(k,2);
writeln('Поле p2=',p.p2);
p.p3:=FromDec(k,16);
writeln('Поле p3=',p.p3);
end.
я думаю преподаватель хотел сказать что ты должен находить конец текста
по первой точке, а не при помощи функции length,
т.е. текст состоит из слов и одной точки которая
является признаком конца текста и его иследования соответственно
а то что твоя прога работает это не удивительно
2.Задача
на мой взгляд решение нормальное, но я не препод :),
у нас это решали немного по другому, а конкретно
никогда не видела что бы использовали массив для перевода
числа(но это не значит что это неправильно)
Код:
за грамматику языка не отвечаю, т.к. Паскаль не знаю
Код:
const
radix = 16;// основание системы счисления
var
ch, n : integer;
begin
read(n);
repeat
ch := n mod radix;
if ch < 10 then
s := Char((ch+48)) + s
else
s := Char((ch+64)) + s;
n:=n div radix;
until n = 0;
end;
radix = 16;// основание системы счисления
var
ch, n : integer;
begin
read(n);
repeat
ch := n mod radix;
if ch < 10 then
s := Char((ch+48)) + s
else
s := Char((ch+64)) + s;
n:=n div radix;
until n = 0;
end;
Вроде так) не компилил(
З.ы. Удалите предыдущее сообщение ;>
Код:
ch:integer;
repeat
ch := n mod radix
if ch < 10 then begin
s := Char((ch+48)) + s;
else
s := Char((ch+64)) + s;
end;
n:=n div radix;
until n=0;
repeat
ch := n mod radix
if ch < 10 then begin
s := Char((ch+48)) + s;
else
s := Char((ch+64)) + s;
end;
n:=n div radix;
until n=0;
за грамматику языка не отвечаю, т.к. Паскаль не знаю[/QUOTE]
Многим, изучающим Паскаль не мешало бы так не знать его. :) сhr(ch+64) + s;, а так всё очень здорово.