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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2015, 12:02   #1
voytik
Пользователь
 
Регистрация: 22.09.2015
Сообщений: 21
По умолчанию функция с шагом и выводом отрицательного значения

Нужно вывести отрицательные значения функции y=sin(x)+cos(5*x) для х, изменяющегося на отрезке [-3,9] с шагом 0.9.
как я только не пытался это сделать, через массив и через фор то ду... ничего не выходит((( мозгов не хватает на то, что бы вывести все отрицательные числа.. помогите пожалуйста
voytik вне форума Ответить с цитированием
Старый 22.09.2015, 12:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А что не получилось?
Не знали, что в фор ту ду можно задать шаг?
Не знали, что есть другие циклы?
Не знали, что есть еще условные операторы для проверки отрицательности?
p51x вне форума Ответить с цитированием
Старый 22.09.2015, 12:25   #3
voytik
Пользователь
 
Регистрация: 22.09.2015
Сообщений: 21
По умолчанию

вот что у меня не получилось... у меня выводит и положительные и отрицательные числа... как сделать так, что бы выводило только отрицательные..?
Код:
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
var x, y, q: Extended;
    i: Integer;
begin
  x := -3;
  i := 1;
  while x <= 9 do
    begin
      readln (q);
      y := (sin(q)+cos(5*q));
      Writeln('f(', x:2:1, ') = ', y:5:3);
      x := x + 0.9;
      i := i + 1;

    end;
  Readln;
end.

Последний раз редактировалось Stilet; 22.09.2015 в 12:29.
voytik вне форума Ответить с цитированием
Старый 22.09.2015, 12:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Writeln('f(', x:2:1, ') = ', y:5:3);
Напиши
Код:
if y<0 then Writeln('f(', x:2:1, ') = ', y:5:3);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.09.2015, 12:32   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

voytik, надо убрать переменную i, т.к. она никакой роли не играет
Код:
function f(x:real):real;
begin
   Result:=Sin(x)+Cos(5*x);
end;

const h=0.9;
      a=-3;
      b=9;
var x,y:real;
begin
   x:=a-h;
   Repeat
      x:=x+h;
      y:=f(x);
      If y<0 then
         Writeln(y:5:5);
   Until x>=b;
   Readln;
end.
2-й вариант
Код:
const h=0.9;
      a=-3;
      b=9;
var x,y:real;
begin
   x:=a-h;
   Repeat
      x:=x+h;
      y:=Sin(x)+Cos(5*x);
      If y<0 then
         Writeln(y:5:5);
   Until x>=b;
   Readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 22.09.2015 в 12:34.
newerow1989 вне форума Ответить с цитированием
Старый 22.09.2015, 12:34   #6
voytik
Пользователь
 
Регистрация: 22.09.2015
Сообщений: 21
По умолчанию

только что так и сделал, но вдруг понял, что при компиляции он будет выводить все отрицательные значения... но при проверки (вводе одного и того числа, ответ на который получается отрицательное значение) - выводит вечно один и тот же ответ, то есть х у меня не меняется сам в диапазоне от -3 до 9.... блин, а оно и логично.. у меня х - это q.... блин, туплю, запутался малеха

немного не понимаю как ваш вариант откомпилировать....

Последний раз редактировалось Stilet; 22.09.2015 в 13:11.
voytik вне форума Ответить с цитированием
Старый 22.09.2015, 12:43   #7
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
немного не понимаю как ваш вариант откомпилировать....
Копируешь, вставляешь, нажимаешь F9
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 22.09.2015, 12:47   #8
voytik
Пользователь
 
Регистрация: 22.09.2015
Сообщений: 21
По умолчанию

Код:
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
const h=0.9;
      a=-3;
      b=9;
var x,y,q:real;
begin
   x:=a-h;
   Repeat
      x:=x+h;
      readln (q);
      y:=Sin(q)+Cos(5*q);
      If y<0 then
         Writeln(y:5:5);
   Until x>=b;
   Readln;
end.
немного исправил, что бы можно было вводить значение в подставку значения в функцию и все равно выходит так, что при изменении +0.9 не меняется значение функции при условии того, что я ввожу одно и тоже число.... кароче тафотологию несу... так давно парюсь, что уже сформулировать и соображать не получается(

Последний раз редактировалось Stilet; 22.09.2015 в 13:11.
voytik вне форума Ответить с цитированием
Старый 22.09.2015, 12:49   #9
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
 readln (q);
 y:=Sin(q)+Cos(5*q);
Опять q - убрать ее и заменить на x

readln (q); - убрать ее полностью! Она не нужна




Просто начало будет
Код:
program Project2;

 {$APPTYPE CONSOLE}

 uses
 SysUtils;
а потом мой кусок кода. Тогда заработает
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 22.09.2015 в 12:52.
newerow1989 вне форума Ответить с цитированием
Старый 22.09.2015, 12:51   #10
voytik
Пользователь
 
Регистрация: 22.09.2015
Сообщений: 21
По умолчанию

УРА!)
Код:
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
function f(x:real):real;
begin
   Result:=Sin(x)+Cos(5*x);
end;

const h=0.9;
      a=-3;
      b=9;
var x,y:real;
begin
    readln (x);
   x:=a-h;
   Repeat
      x:=x+h;
      y:=f(x);
      If y<0 then
         Writeln(y:5:5);
   Until x>=b;
   Readln;
end.
точно!) спасибо вам большое, вы меня спасли, у меня уже мозг изнутри чешется из за тех изгелений, что я перепробовал))) спасибо еще раз!)

Последний раз редактировалось Stilet; 22.09.2015 в 13:12.
voytik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести на экран значения произведений чисел a и b. Числа а изменяются от 1 до 11 с шагом 1, и - от 1 до 3 с шагом 0.2 ALEXandr20333 Паскаль, Turbo Pascal, PascalABC.NET 2 30.06.2014 09:48
Две программы, значения с шагом и массивы в паскале monro86 Паскаль, Turbo Pascal, PascalABC.NET 5 16.12.2011 07:09
Фортран.Функция с промежутком и шагом расчёта. Семён Т. Помощь студентам 9 20.09.2011 20:16
функция подсчета суммы элементов после первого отрицательного nikzntu Общие вопросы C/C++ 0 13.01.2009 21:40