Вопрос № 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.
Здравствуйте Уважаемые Эксперты ;) Очередные туповатые вопросы от меня назойливого...И так:
Есть задачка №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".
Скажите, пожалуйста, в чём здесь ошибка и что сделано не так.
Спасибо!
Отвечает: 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 Комментарий оценки: Всё понятно, спасибо!
Все верно, поскольку при операции деления у Вас результат будет вещественного типа (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 Комментарий оценки: Всё ясно! Благодарю!