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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2017, 21:38   #1
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию [Delphi] Определите количество элементов массива больших 0,5 и меньших 1

Табулирование функции.

Код:
procedure TForm1.N2Click(Sender: TObject);
var
x,y,h,a,b: real;
cod:    integer;
strl,str2:  string;
begin
Memo1.Lines. Add('X F(X)');
Val(Edit1.Text, a, cod);
Val(Edit2.Text, b, cod);
Val(Edit3.Text, h, cod);
x:=a;
while x<=b+h/2 do
begin   
y:=sin(x)+1;    {Вычисляем значения функции}
{Формируем символьные строки из значений }
Str(x:8:2,strl);     { аргумента и функции}
Str(y:8:3, str2);
 if CheckBox1.Checked then
      {Вставляем строку в поле Memo1}
      Memo1.Lines. Add(strl+str2);
 x:=x+h; {Увеличиваем аргумент на величину шага}
 end
end;
end.
Изображения
Тип файла: png Безымянный.png (46.1 Кб, 142 просмотров)

Последний раз редактировалось Вадим Мошев; 07.06.2017 в 22:20.
rustorkan вне форума Ответить с цитированием
Старый 07.06.2017, 22:22   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

В чём проблема у вас? Если есть ошибки в коде, то говорите, что за ошибки, в каких местах.

Цитата:
Сообщение от rustorkan Посмотреть сообщение
Val(Edit1.Text, a, cod);
Для преобразования строки в число используйте функцию strToFloat

Цитата:
Сообщение от rustorkan Посмотреть сообщение
Str(x:8:2,strl);
Аналогично http://www.delphibasics.ru/FloatToStr.php

Последний раз редактировалось Вадим Мошев; 07.06.2017 в 22:29.
Вадим Мошев вне форума Ответить с цитированием
Старый 07.06.2017, 22:32   #3
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию

Цитата:
Сообщение от rustorkan Посмотреть сообщение
Табулирование функции.

Код:
procedure TForm1.N2Click(Sender: TObject);
var
x,y,h,a,b: real;
cod:    integer;
strl,str2:  string;
begin
Memo1.Lines. Add('X F(X)');
Val(Edit1.Text, a, cod);
Val(Edit2.Text, b, cod);
Val(Edit3.Text, h, cod);
x:=a;
while x<=b+h/2 do
begin   
y:=sin(x)+1;    {Вычисляем значения функции}
{Формируем символьные строки из значений }
Str(x:8:2,strl);     { аргумента и функции}
Str(y:8:3, str2);
 if CheckBox1.Checked then
      {Вставляем строку в поле Memo1}
      Memo1.Lines. Add(strl+str2);
 x:=x+h; {Увеличиваем аргумент на величину шага}
 end
end;
end.
Этот код рабочий.
Мне нужно определить количество элементов массива больших 0,5 и меньших 1
и вывести значение в поле Memo1.
Нужно этот код немного поправить.

Последний раз редактировалось rustorkan; 07.06.2017 в 22:39.
rustorkan вне форума Ответить с цитированием
Старый 07.06.2017, 22:41   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Вам не нужен массив для этого. Можно сделать так примерное:
Код:
amount:=0;

в цикле табилирования функции после вычисления значения писать
	if (значение > 0.5) AND (значение < 1) then begin
		inc(amount);
	end;

после цикла писать
	amount перевести в строку
	memo1.lines.append(amount_как_строка)
Вадим Мошев вне форума Ответить с цитированием
Старый 07.06.2017, 22:56   #5
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию

Можете весь код сразу в исправленном виде написать?
rustorkan вне форума Ответить с цитированием
Старый 07.06.2017, 23:17   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Вам не нужен массив для этого.
Судя по всему, это условие задания
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 07.06.2017, 23:45   #7
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию

Цитата:
Сообщение от rustorkan Посмотреть сообщение
Можете весь код сразу в исправленном виде написать?
Как-то так.

Код:
procedure TForm1.N2Click(Sender: TObject);
var
x,y,h,a,b: real;
cod,kolichestvo: integer;
strl,str2: string;
begin
Memo1.Lines. Add('X F(X)');
Val(Edit1.Text, a, cod);
Val(Edit2.Text, b, cod);
Val(Edit3.Text, h, cod);
x:=a;
while x<=b+h/2 do
begin   
y:=sin(x)+1; {Вычисляем значения функции}
begin
kolichestvo:=0;
end;
if (y > 0.5) AND (y < 1) then
  begin
    inc(kolichestvo);
  end;
memo1.lines.append(IntToStr(kolichestvo));
{Формируем символьные строки из значений }
Str(x:8:2,strl);     { аргумента и функции}
Str(y:8:3, str2);
 if CheckBox1.Checked then
      {Вставляем строку в поле Memo1}
      Memo1.Lines. Add(strl+str2);
 x:=x+h; {Увеличиваем аргумент на величину шага}
 end
end;
end.

Последний раз редактировалось rustorkan; 07.06.2017 в 23:53.
rustorkan вне форума Ответить с цитированием
Старый 08.06.2017, 10:03   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от rustorkan Посмотреть сообщение
Как-то так.
не, обнуление надо за цикл вынести.
и вывод количества тоже

так:
Код:
  kolichestvo:=0;
  x:=a;
  while x<=b+h/2 do
  begin   
      y:=sin(x)+1; {Вычисляем значения функции}
      if (y > 0.5) AND (y < 1) then
           inc(kolichestvo);
      if CheckBox1.Checked then begin
          {Вставляем строку в поле Memo1}
          {Формируем символьные строки из значений }
          Str(x:8:2,strl);     { аргумента и функции}
          Str(y:8:3, str2);
          Memo1.Lines.Append(strl+' '+str2);
      end;
      x:=x+h; {Увеличиваем аргумент на величину шага}
  end;
  Memo1.Lines.Append('количество элементов от 0.5 до 1 = '+IntToStr(kolichestvo));
end;

p.s. а почему не хотите воспользоваться функциями FloatToStr или FloatToStrF или Format ?
вместо 3-х строк кода будет всего одна!

Код:
      if CheckBox1.Checked then begin
          {Формируем символьные строки из значений и Вставляем строку в поле Memo1
           аргумента и функции}
          Memo1.Lines.Append(Format('%8.2f %8.3f',[x,y]));
      end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.06.2017, 15:32   #9
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию

Код:
procedure TForm1.N2Click(Sender: TObject);
var
x,y,h,a,b: real;
cod,kolichestvo: integer;
begin
Memo1.Lines. Add('X F(X)');
Val(Edit1.Text, a, cod);
Val(Edit2.Text, b, cod);
Val(Edit3.Text, h, cod);
kolichestvo:=0;
x:=a;
  while x<=b+h/2 do
  begin   
      y:=sin(x)+1;
      if (y > 0.5) AND (y < 1) then
           inc(kolichestvo);
      if CheckBox1.Checked then begin
           Memo1.Lines.Append(Format('%8.2f %8.3f',[x,y]));
      end;
      x:=x+h;
  end;
  Memo1.Lines.Append('Количество элементов от 0.5 до 1 =
'+IntToStr(kolichestvo));
end;
end.
rustorkan вне форума Ответить с цитированием
Старый 11.06.2017, 15:32   #10
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию

Всем спасибо!
rustorkan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить число элементов массива, меньших К. Осуществить сортировку массива по возрастанию методом сортировки выбором. pfkbz Microsoft Office Excel 1 22.05.2017 16:45
количество элементов массива, больших С ( Delphi ) Kagero Помощь студентам 6 30.10.2012 09:14
Определите количество элементов массива(pascal) Pinap Помощь студентам 1 21.10.2012 23:19
Ввести матрицу 5х10 и найти в ней количество элементов, больших и меньших среднего арифметического (Delphi) Юлийа Помощь студентам 15 05.03.2012 19:59