Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 356
от 29.04.2007, 16:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 244, Экспертов: 68
В номере:Вопросов: 3, Ответов: 12


Вопрос № 83899: Надо сделать программу счастливый не счастливый билет.Без Массива.С процедурой VAL/.нужно сделать на этой неделе...
Вопрос № 83927: Здравствуйте Уважаемые Эксперты ;) Очередные туповатые вопросы от меня назойливого...И так: Есть задачка №1 Разработать программу расчетов мгновенной скорости земли за формулой V=sqrt(m/r) , где m= 3.97*10^20 , r -радиус -вектор земли, для значен...
Вопрос № 83971: Здравствуйте! Помогите мне, пожалуйста, с такой проблемой: Имеется программа на языке Pascal, вот её текст: Program ily; var a,b,c:longint; begin writeln ('введите объём тела'); readln (a); writeln ('Введите массу тела...

Вопрос № 83.899
Надо сделать программу счастливый не счастливый билет.Без Массива.С процедурой VAL/.нужно сделать на этой неделе
Отправлен: 23.04.2007, 20:04
Вопрос задал: А.Е.В (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Verena
Здравствуйте, А.Е.В!

Считываем намер билета как строку (насколько я помню, счасливый билет - тот, у которого сумма трёх первых цифр равна сумме трёх других), считаем сумму, преобразовывая символы в числа процедурой val (строка, число, код_ошибки).
var b: string [6];
i, k, s1, s, cod: integer;
begin
readln (b);
s:=0; s1:=0;
for i:=1 to 6 do
begin
val (b[i], k, cod);
if cod<>0 then begin writeln('Error'); Exit; end;
if i<=3 then s:=s+k else s1:=s1+k;
end;
if s=s1 then writeln ('Счастливый') else writeln ('Несчастливый');
end;
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 10-ый класс)
Ответ отправлен: 23.04.2007, 20:16
Оценка за ответ: 5

Отвечает: Крылов Александр Владимирович
Здравствуйте, А.Е.В!
var
str:string;
i1,i2,i3,i4,i5,i6,err:byte;
begin
//вводим число в переменную str
if (val(str[1],i1,err)+val(str[2],i2,err)+val(str[3],i3,err))=(val(str[4],i4,err)+val(str[5],i5,err)+val(str[6],i6,err)) then //билет счастливый
else // билет не счастливый
...
...
end.
Ответ отправил: Крылов Александр Владимирович (статус: 3-ий класс)
Ответ отправлен: 23.04.2007, 20:23


Вопрос № 83.927
Здравствуйте Уважаемые Эксперты ;) Очередные туповатые вопросы от меня назойливого...И так:
Есть задачка №1 Разработать программу расчетов мгновенной скорости земли за формулой V=sqrt(m/r) , где m= 3.97*10^20 , r -радиус -вектор земли, для значений радиус вектора 6400,6600,6900,7400,8400 км.

№2 Разработать программу нахождения факториалу числа, используя оператор while. Ввод чисел с клавиатуры... Хоть программа на пару строчек, все же ее не сделал:'(

Приложение:

Отправлен: 24.04.2007, 00:39
Вопрос задал: Grizlik (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: MaksimDenisov
Здравствуйте, Grizlik!
program factorial;
var
f,i,faq:integer; #целый тип
begin
readln(f); #считываем число
if f=0 then faq:=1 #факториал 0! = 1
else begin
while i<=f do begin
faq:=faq*i; #вычисляем в цикле
i:=i+1; #переменная цикла
end;
end;
writeln(faq); #вывод результата
end.

По задаче №1
В принципе нормально, только не ясен смысл переменной j
Ответ отправил: MaksimDenisov (статус: 5-ый класс)
Ответ отправлен: 24.04.2007, 00:56

Отвечает: Verena
Здравствуйте, Grizlik!
Что делать с первой задачей не поняла, Вы же её решили :)
Насчёт второй: k!=1*2*...k. Решение:

var i, k: integer;
fact: longint;
begin
readln (k); {считываем число}
i:=2; {счётчик}
fact:=1;
while i<=k do {в цикле множим на счётчик}
begin
fact:= fact*i;
inc (i);
end;
writeln (fact); {вывод}
end.
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 10-ый класс)
Ответ отправлен: 24.04.2007, 00:57


Вопрос № 83.971
Здравствуйте!
Помогите мне, пожалуйста, с такой проблемой:
Имеется программа на языке Pascal, вот её текст:
Program ily;
var a,b,c:longint;
begin
writeln ('введите объём тела');
readln (a);
writeln ('Введите массу тела');
readln (b);
c:=b/a;
writeln ('Плотность= 'c);
readln;
end.
Проблема здесь в том, что, когда компьютер доходит до строки: c:=b/a; , то выводится ошибка: "Type Mismatch".
Скажите, пожалуйста, в чём здесь ошибка и что сделано не так.
Спасибо!
Отправлен: 24.04.2007, 15:36
Вопрос задал: Красильников И.П. (статус: 10-ый класс)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Coupler
Здравствуйте, Красильников И.П.!
Переменная, которая получается в результате деления, автоматически должна иметь дробный тип, например real, double и т.д (т.к. в результате деления может получиться дробное число).
Исправленная программа в приложении.

Приложение:

Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 24.04.2007, 15:45
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: MaksimDenisov
Здравствуйте, Красильников И.П.!
Это вполне естественно, что возникает данная ошибка. Смотрите, переменные a и и описаны у Вас как длинные целые. Соответственно, при делении одного целого на другое совсем не факт, что получится целое число. Соответственно, нужно либо переопределить переменную с как real
Ответ отправил: MaksimDenisov (статус: 5-ый класс)
Ответ отправлен: 24.04.2007, 15:45
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вам огромное, Ваш совет мне помог!!!

Отвечает: Menand
Здравствуйте, Красильников И.П.!

как вариант - округляйте до целого ( c:=b div a)
Ответ отправил: Menand (статус: Студент)
Ответ отправлен: 24.04.2007, 15:47
Оценка за ответ: 5
Комментарий оценки:
Да, и так тоже получилось!

Отвечает: Dr.Alex
Здравствуйте, Красильников И.П.!
Просто эта операция деления для чисел типа real, а для целочисленных надо применять операцию DIV. И все будет ОК.
Ответ отправил: Dr.Alex (статус: 10-ый класс)
Ответ отправлен: 24.04.2007, 15:47
Оценка за ответ: 5
Комментарий оценки:
Всё понятно, спасибо!

Отвечает: Gh0stik
Здравствуйте, Красильников И.П.!

Все верно, поскольку при операции деления у Вас результат будет вещественного типа (real), а переменная с - у Вас типа longint целого типа., следоваетльно Вам нужно либо переопределить переменную либо использовать операцию целочисленного деления (div).

Ваш код будет выглядеть так:
Program ily;
var a,b:longint;
c:real;
begin
writeln ('введите объём тела');
readln (a);
writeln ('Введите массу тела');
readln (b);
c:=b/a;
writeln ('Плотность= ',c:6:2);
readln;
end.


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 24.04.2007, 15:48
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Красильников И.П.!

Деление двух целых чисел не всегда есть целое число.
Два варианта:

C:=ROUND(INT(B/A));

или

VAR
C:REAL;

в строке: writeln ('Плотность= ',c); запятую забыли .
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 24.04.2007, 15:54
Оценка за ответ: 5
Комментарий оценки:
Тоже вариант! Большое спасибо!

Отвечает: Чичерин Вадим Викторович
Здравствуйте, Красильников И.П.!
a, b и с - целые. необходимо с - сделать нецелым - м.б. так:
var a, b : longint;
с : real;
Если допускается округление плотности до целого, то можно использовать операцию целочисленного деления или округления результата:
с := b div a;
с := trunc(b / a);

---------
Чем больше я смотрюсь в зеркало, тем больше верю Дарвину...
Ответ отправил: Чичерин Вадим Викторович (статус: 2-ой класс)
Ответ отправлен: 24.04.2007, 15:54
Оценка за ответ: 5
Комментарий оценки:
Да, так тоже получилось!!! Спасибо!

Отвечает: Necromancer
Здравствуйте, Красильников И.П.!
Видите ли, результат деления b/a имеет вещественный тип, следовательно и переменная, к-рой его присваивают должна быть описана как вещественная. В разделе Var должно быть следующее:
Var
a, b : LongInt;
c : Real // можно кончено же любой вещественный тип.
---------
Никогда не сдавайся, даже если боишься проиграть
Ответ отправил: Necromancer (статус: 2-ой класс)
Ответ отправлен: 24.04.2007, 18:20
Оценка за ответ: 5
Комментарий оценки:
Всё ясно! Благодарю!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.51 (beta) от 27.04.2007
Яндекс Rambler's Top100

В избранное