• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, пожалуйста, с элементарным вопросом

Dimafania

Новые
Регистрация
18 Май 2015
Сообщения
29
Реакции
0
Баллы
0
Помогите, пожалуйста, с элементарным вопросом

Программа не работает. Объясните пожалуйста почему. Как задать y, чтобы все заработало? Необходимо решение именно в таком алгоритме.

var
i:Integer;
x:Real;
y:array [1..1000] of Real;


begin
for i:=1 to 720 do
x:=i*3.14/180;
y:=sin(x);
if y[i-1]<0 and y>0 then
x:=(x[i-1]+x)/2;
writeln(x);
end.
 
Иными словами у меня есть цикл по i. x - функция от i, y - функция от х. Как прописать условия, чтобы я потом мог указывать y, y[i-1] и т.д.
 
Я вижу у Вас объявление массива Y, но обращение к элементам массива Х. Разберитесь в своих переменных )))
 
Я вижу у Вас объявление массива Y, но обращение к элементам массива Х. Разберитесь в своих переменных )))

Уважаемый black, я и реал писал, но Реалу же я не могу присвоить , тоже не работает.
 
Вы не о том говорите.
У вас описан массив Y, а в выражении с индексом стоит X.
Второе: Элемент с индексом стоит вне оператора цикла, соответственно индекс у него не изменяется.
Поскольку не использованы операторные скобки, то в цикл входит единственная строка.
 
Упс... Тяпница, извините...
 
Вопрос решил. Подсказали ввести Function название(i:Integer):Real
К счастью помогло)
 
Неисчислимы диалекты языков...
 
Владимир, если у вас будет свободное время, будьте любезны дать знать. Есть нетривиальная задачка, но чувствуется мне ваш опыт поможет решить ее очень элегантным простым способом)
 
Я не Владимир :)
У нас специалистом по программированию действительно является Владимир Игоревич aka Vladimir_S, а я так, немножко балуюсь. Но если что, пишите.
 
Уважаемый black, я в курсе) К нему и обращался. Он мне однажды уже сильно помог)
 
Все равно не работает=((( Помогите найти ошибку SchoolPak
 
Я Вам уже называл причины: неправильное объявление переменных и неправильное использование элемента массива вне цикла, в котором изменяется индекс.
Дальше - назовите, на каком именно диалекте Вы пишете.
 
Их тоже много. Версия?
 
Качаю, поставлю, погоняю, отпишусь...
 
Вроде сам справился. Все работает)
 
Покажите итог.
 
Покажите итог.

var
i:Integer;
x,y,b,c,x1,x2:Real;

Function a(i:Integer):Real;
begin
x:=i*3.14/180;
y:=cos(x);
a:=y;
end;


begin
Writeln;
for i:=1 to 720 do
begin
if (a(i-1)<=0) and (a(i)>0) then
begin
x1:=i*3.14/180;
x2:=(i-1)*3.14/180;
c:=(x1+x2)/2;
Writeln(a(i-1),a(i),c );
end;
end;
end.
 
Назад
Сверху