Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 20:27   #1
uvamosk
Новичок
Джуниор
 
Регистрация: 21.05.2009
Сообщений: 6
Печаль Операции с разными типами чисел (real c integer не умножается!)

Как в таких случаях принято говорить, спасите-помогите скорее пожалуйста препожалуйста...
Не могу решить простую задачку по информатике. На паскале написать программу вычисления площади круга.

const p: real = 3.14;
var
r: integer;

бла-бла-бла, человек вводит r - радиус, и должен печататься результат p*r*r, но печатается 3.140000000E+02

что я не так делаю?
uvamosk вне форума Ответить с цитированием
Старый 21.05.2009, 20:43   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Приведите полный код.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.05.2009, 20:51   #3
uvamosk
Новичок
Джуниор
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

хорошо, вот, правда с латиницей))))

rogram ploshadkruga;

const
p: real = 3.14;


var
r, d, l, s: real;
a, ans: string;


begin

repeat

begin {repeat}
writeln ('viberite sposob podscheta ploshadi kruga:');
writeln ('1 - cherez radius');
writeln ('2 - cheraz diametr');
writeln ('3 - cherez dlinu okruznosti');
readln (a);

if a= '1' then
begin
writeln ('vvedite radius=');
readln (r);
s := p*r*r;
writeln ('ploshad kruga ravna=', s);
end;

if a= '2' then
begin
writeln ('vvedite diametr=');
readln (d);
s := p*((d/2)*(d/2));
writeln ('ploshad kruga ravna=', s);
end;

if a= '3' then
begin
writeln ('vvedite dlinu okruzhnosti=');
readln (l);
s := p * ((l/(p*2)) * (l/ (p*2)));
writeln ('ploshad=', s);
end;
if (a <> '1') and (a <> '2') and (a <> '3') then writeln ('viberitesposob podscheta tsiframi 1 ili 2 ili 3');

writeln ('poschitat esche? 1 - da, luboe drugoe vihod');
readln (ans);
end; {repeat}
until ans <> '1';



End.
uvamosk вне форума Ответить с цитированием
Старый 21.05.2009, 20:52   #4
uvamosk
Новичок
Джуниор
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

я понимаю, что не шикарно, я вообще-то програмированием занимался лет десять назад, щас просто попросили школьнику помочь, пришлось в вспоминать всё заново. НЕ получается почему-то. (((
uvamosk вне форума Ответить с цитированием
Старый 21.05.2009, 20:53   #5
uvamosk
Новичок
Джуниор
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

Да, буду очень благодарен, если ответите в 30 минут. ))) Мне до 10 часов вечера надо сделать. )))
uvamosk вне форума Ответить с цитированием
Старый 21.05.2009, 20:59   #6
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

Ну если проблема только в выводе.. То "write(<вещественное число>)" выводит на экран число в виде с плавающей точкой, как получалось у вас. Для вида с фиксированной точкой пишите так :
Код:
write('ploshad=', s:4:2) Первое число - это ширина поля вывода, второе число - количество знаков после точки.
зы в паскале для Пи есть константа Pi
anGeee вне форума Ответить с цитированием
Старый 21.05.2009, 21:02   #7
uvamosk
Новичок
Джуниор
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

)))))
Спасибо, работает! Вы меня спасли!
Но почему там буква Е да еще потом плюс02 ? Это последствия запуска древнего паскаля под вистой, или я что то не так делаю?
uvamosk вне форума Ответить с цитированием
Старый 21.05.2009, 21:08   #8
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Код:
program aa;
var
S:real;
r: integer;
begin
writeln('wwedite radius');
read(r);
S:=pi*(r*r);
writeln('S=',s:2:1);
readln;
readln;
end.
А почему нельзя сделать так???
_____
ГЫ... опоздал
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 21.05.2009, 21:09   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от uvamosk
Но почему там буква Е да еще потом плюс02 ? Это последствия запуска древнего паскаля под вистой, или я что то не так делаю?
Это экспоненциальная форма записи. Виста не при чем
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 21.05.2009 в 21:13.
Sazary вне форума Ответить с цитированием
Старый 21.05.2009, 21:13   #10
uvamosk
Новичок
Джуниор
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

то есть все вычисления с real по умолчанию, при печати на экран, будут так выдаваться?
uvamosk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с типами tavrocotaps Общие вопросы C/C++ 3 29.01.2009 17:28
Принцип хранения 32-битных integer-чисел AndruXa Свободное общение 0 26.04.2008 13:43
как перевести из integer в real(и обратно), и из real в string(и обратно) Ga-sergey Общие вопросы Delphi 2 08.06.2007 21:13
Конвертация real > integer Viteef Общие вопросы Delphi 2 03.05.2007 18:45
проблема с типами Saya Свободное общение 0 27.04.2007 12:22