Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Исправление ошибки в проге

Автор: Juhn 16.01.2008 1:48

Есть такая программа:
program chisla;
function sar(const a, b:integer):real;
begin
sar:=(a + b)/2;
end;

function num(var i1, i2:integer):integer;
var
i:integer;
begin
i:=0;
while i1<>0 do begin
inc(i);
i1:=i1 div 10;
end;

while i2<>0 do begin
inc(i);
i2:=i2 div 10;
end;

num:=i;

var
a, b:integer;
begin
repeat
writeln('Vvedite a'); readln(a);
writeln('Vvedite b'); readln(b);
until(a<b);
writeln('summa chisel:', (a+b));
writeln('srednee arifmeticheskoe:', sar(a,b):4);
writeln('kolichestvo cifr:', num(a,b));
readln;
end.

1.Ошибка в следующем, сумма и арифметическое считается правильно, а вот количество цифр почему - то пишется 1, а не 2, хотя написано writeln('kolichestvo cifr:', num(a,b)); Как сделать что бы выдавало кол-во цифр 2 ?
2. Не поможете разобраться с данными строками:
function sar(const a, b:integer):real;
function num(var i1, i2:integer):integer;

Какой тип к этим переменным присваевается ? реальный или переменный? а то в скобках например integer а за скобками ещё и real. Вообщем помогите как расписать эти строки.
Заранее спасибо.

Автор: Client 16.01.2008 2:27

Цитата
а вот количество цифр почему - то пишется 1, а не 2,
Ты приведи пример, где неправильно выдает ответ
Цитата
Какой тип к этим переменным присваевается ?
Это функции: первая вернет результат вещественного типа, вторая-целого. В скобках указываются формальные параметры и их тип.

Автор: Juhn 16.01.2008 2:31

Ну вообщем запрвашивается 2 числа, я напрмиер ввожу первое 2, и второе 4, и мне выдаётся результат:
сумма = 6, ср. фрифметическое = 3, кол-во цифр = 1. Вот она и ошибка, выдаёт что количество цифр =1, а нужно что бы выдавало 2, ведь я ввёл 2 числа.

Автор: Client 16.01.2008 2:38

Вот смотри, твоя прога


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Juhn 16.01.2008 2:40

Странно у тебя вообще показывает количество цифр то 2, то 3, а у меня 1, интересно из - за чего одна и та же программа у всех по разному... вот в этом и загвоздка, это надо как - то подправить что бы было 2, не понимаю в чём тут ошибка

Автор: compiler 16.01.2008 2:45

Juhn, а кто писал эту программу? сам?

Автор: Juhn 16.01.2008 2:49

Да нет не сам, мне срочно нужно было в школе, попросил, написали, в школе проверил, неполадочка :/

Автор: Client 16.01.2008 2:50

Цитата
количество цифр то 2, то 3, а у меня 1,
Если ввести 3 и 10 то ответ должен быть 3, что и выдала программа.
Цитата
не понимаю в чём тут ошибка
while i2<>0 do begin
inc(i);
i2:=i2 div 10;
end;

num:=i;
end; // у тебя так??
var

Автор: compiler 16.01.2008 2:53

Цитата(Juhn @ 15.01.2008 21:49) *
Да нет не сам, мне срочно нужно было в школе, попросил, написали, в школе проверил, неполадочка :/
А зачем надо было создавать новую тему? http://forum.pascal.net.ru/index.php?showtopic=20878&hl=
я уже думал, скажешь сам написал mad.gif

Автор: Juhn 16.01.2008 2:58

Client да так, это в первом посте и написано.
compiler сорри, темка далеко ушла, я думал может и удалена уже

Автор: compiler 16.01.2008 3:58

>>Client да так, это в первом посте и написано.
а теперь сверь с тем что я выкладывал... или сделай отступы(правильно сделаешь -> найдёшь ошибку)... Client, правильно отметил место...*
>>compiler сорри, темка далеко ушла, я думал может и удалена уже
Поиск рулит! А если давать тема информативные имена, то и искать одно удовольствие

примечание
неужели, эта программа компилируется на ТП? сейчас поздно но завтра проверю...