IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача с циклом FOR
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Не могу не как решить задачу через while сделал, а надо через for.
Сама задача звучит так
Код
Около стены наклонно стоит палка длинной x метров. Один ее конец находится на растоянии y метров от стены. Определить значения угла между палкой и полом для значений y, изменяющегося от 2 до 3 метров с шагом h.

Искал поиском, нашел такую же задачу, но тема закрыта и задача не решена.
Если надо то могу выложить свое решение через while, но думаю оно мало поможет.
Заранее благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


покажи как с WHILE'ом сделал, там подправим.

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Код

program lab6_v4;
uses CRT;
var  x,h:real;
     a,y:real;
     arccos:real;
Begin
CLRSCR;
write ('Введите длину палки  '); read(x);
write ('Введите шаг'); read(h);
y:=2;
while y<=3 do
begin
arccos:=arctan(sqrt(1-sqr(y/x))/(y/x));
writeln('Значение угла',arccos:8:2,'  при y=',y);
y:=y+h;
end;
repeat Until KeyPressed;
end.


p.s. Есть мысль что через for надо делать по формуле n:=(3-2)/h+1
h-Это шаг
и тогда получается что for i:=1 to n do
А вот какого типа должны быть переменные?

Сообщение отредактировано: mr.voland -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


если шаг больше 0.1, то можно так:
 for i:=20 to 30 do bein
arccos:=arctan(sqrt(1-sqr(y/x))/(y/x));
writeln('Значение угла',arccos:8:2,' при y=',y);
y:=y+i*h
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Client, что-то мне кажется, y := i*h;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


uses crt;
var
y,sd,x,h:real;
i:integer;
begin
clrscr;
y:=2;
writeln('Введите х');
readln(x);
write(' Введите шаг');
readln(h);
while y<=3 do begin
sd:=arctan((1-sqr(y/x))*(y/x));
writeln(' ugol = ',sd:0:5);
y:=y+h
end;
writeln;
writeln;
y:=2;
for i:=0 to 10 do begin
y:=i*h+2;
if y<=3 then begin
sd:=arctan((1-sqr(y/x))*(y/x));
writeln(' ugol = ',sd:0:5)
end
end;
readkey
end.

Для сравнения привел 2 цикла

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
если шаг больше 0.1
А если 0.09 - тогда что?

Неужели нельзя сделать общий случай?

const
start_y = 2;
finish_y = 3;
var
i, step: integer;
...
write ('Введите длину палки '); readln(x);
write ('Введите шаг '); readln(h);

step := trunc((finish_y - start_y) / h);
for i := 0 to step do begin
y := start_y + i * h;
arccos:=arctan(sqrt(1-sqr(y/x))/(y/x));
writeln('Значение угла', arccos:8:2, ' при y=', y);
end;

?
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2020 11:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name