Другие языки программирования и технологии
Помогите кто знает Паскаль
Помогите исправить ошибки в программе, чёт не работает. Программа рисует кусок круга в середине экрана с радиусом 5 звёздочками. uses crt; procedure round; var x:integer; y:real; begin gotoxy(35,12); write('*'); begin for x:=35 to 40 do y:=sqrt(sqr(5)-sqr(x)); gotoxy(x,y); write('*'); end; round; readln; end.
1) У вас нету главного бегина.
2) Процедуре gotoxy необходимо передавать целые аргументы.
3) Бегин для цикла пишется после for...
4) При вычислении точки Y у вас будет вычисляться корень из отрицательного числа, т. к. вы вычитаете sqr(x) из квадрата радиуса.. . На самом деле необходимо вычитать квадрат расстояния от центра до вычисляемой точки по координате Х.
5) Ну и при рисовании, т. к. в y будет хранится расстояние от центра до вычисляемой точки по координате Y, то надо будет произвести соответствующее преобразование.
В итоге получается примерно следующее.. .
uses crt;
procedure round;
var
x,y:integer;
begin
clrscr;
gotoxy(35,12);
write('*');
for x:=35 to 40 do
begin
y:=trunc(sqrt(sqr(5)-sqr(x-35)));
gotoxy(x,12-y);
write('*');
end;
readln;
end;
begin
round;
end.
Соглашусь с пред. ответом про имя процедуры. Если хочется, можно, но не рекомендуется.. . В больших программах будет возникать путаница.
2) Процедуре gotoxy необходимо передавать целые аргументы.
3) Бегин для цикла пишется после for...
4) При вычислении точки Y у вас будет вычисляться корень из отрицательного числа, т. к. вы вычитаете sqr(x) из квадрата радиуса.. . На самом деле необходимо вычитать квадрат расстояния от центра до вычисляемой точки по координате Х.
5) Ну и при рисовании, т. к. в y будет хранится расстояние от центра до вычисляемой точки по координате Y, то надо будет произвести соответствующее преобразование.
В итоге получается примерно следующее.. .
uses crt;
procedure round;
var
x,y:integer;
begin
clrscr;
gotoxy(35,12);
write('*');
for x:=35 to 40 do
begin
y:=trunc(sqrt(sqr(5)-sqr(x-35)));
gotoxy(x,12-y);
write('*');
end;
readln;
end;
begin
round;
end.
Соглашусь с пред. ответом про имя процедуры. Если хочется, можно, но не рекомендуется.. . В больших программах будет возникать путаница.
Вы не сказали, на что именно и как именно ругается компилятор.
Скорее всего y должен быть целым
y:=round(sqrt(sqr(5)-sqr(x)));
Скорее всего y должен быть целым
y:=round(sqrt(sqr(5)-sqr(x)));
Интернет Магазин
Спасибо, действительно нужно округление и ещё скажите пожалуйста как в паскале выделять модуль числа?
К предыдущим ответам добавлю, что перед вызовом round пропущен begin
Вот как должно быть:
uses crt;
procedure Draw_round;
var x, y:integer;
begin
gotoxy(35,12);
write('*');
for x:=35 to 40 do begin
y:=Round(sqrt(sqr(5)-sqr(x)));
gotoxy(x,y);
write('*');
end;
end;
begin
Draw_round;
readln;
end.
Round -- стандартная процедура, ее имя использовать в кач-ве имени своей процедуры нехорошо ;)
Вот как должно быть:
uses crt;
procedure Draw_round;
var x, y:integer;
begin
gotoxy(35,12);
write('*');
for x:=35 to 40 do begin
y:=Round(sqrt(sqr(5)-sqr(x)));
gotoxy(x,y);
write('*');
end;
end;
begin
Draw_round;
readln;
end.
Round -- стандартная процедура, ее имя использовать в кач-ве имени своей процедуры нехорошо ;)
Я не профи, но походу begin должно быть после for:
for x:=35 to 40 do begin
for x:=35 to 40 do begin
Похожие вопросы
- Помогите студентке с Паскаль
- кто знает паскаль?
- Помогите с решением. Паскаль.
- Помогите пожалуйста с паскалем...я его только осваиваю(
- Помогите пожалуйста с паскалем!!!
- Кто поможет в программировании?Паскаль
- Помогите решить задачу Паскаль
- Срочно!!! Не займет много времени!!! Ломаю голову над вопросом, Помогите!!! Программа. Pascal. Паскаль
- знающие паскаль, вопрос к вам
- кто знает Паскаль помогите написать програмку
Можете поэксперементировать с этим кодом, попробовать поменять радиус и центр... Вроде все верно :)
uses crt;
procedure draw_circle;
var
r,xc,yc,x,y:integer;
begin
clrscr;
xc:=40;
yc:=40;
r:=35;
gotoxy(xc,yc);
write('*');
for x:=xc to xc+r do
begin
y:=round(sqrt(sqr(r)-sqr(x-xc)));
gotoxy(x,yc-y);
write('*');
end;
readln;
end;
begin
draw_circle;
end.
поставил в данной программе round вместо trunc... с этим тоже можете поэкспериментировать... результаты чуть чуть различаются...