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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2018, 12:51   #1
Andrei777
 
Регистрация: 18.11.2018
Сообщений: 3
По умолчанию Найти произведение положительных чисел и определить количество чисел, принадлежащих промежутку(A,B) и стоящих на нечетных местах.

Найти произведение положительных чисел и определить количество чисел, принадлежащих промежутку(A,B) и стоящих на нечетных местах.
Вот что есть
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Grids;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation
uses Unit2;
{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
  var
  x:array[1..10] of real;
  n,k,i:byte;
  a,b,pr:real;
  begin
    n:=StrToInt(Edit1.Text);
    a:=StrToFloat(Edit2.Text);
    b:=StrToFloat(Edit3.Text);
    StringGrid1.ColCount:=n;
    Form2.StringGrid1.ColCount:=n;
 for i:=1 to n do
       x[i]:=StrToFloat(StringGrid1.Cells[i-1,0]);
    Form2.Show;
    with Form2.StringGrid1 do
    begin
      ColCount:=n;
      for i:=1 to n do
      Cells[i-1,0]:=FloatToStr(x[i]);
    end;
    k:=0;
    i:=1;
    pr:=1;
  while i<=n do
   begin
     if x[i]>0
     then
      pr:=pr*x[i];
      i:=i+1;
   end;
   if pr=0
    then Form2.Label2.Caption:='Нет положительных элементов'
    else Form2.Label2.Caption:='Произведение положительных элементов =  '+FloatToStr(pr);
 k:=0;
 i:=1;
 while i<=n do
  begin
   if ( (i mod 2) <> 0)
   then
    begin
      k:=k+1;
    end;
   i:=i+1;
   end;
if k<0
then
  Form2.Label3.Caption:='Нет элементов пренадлежащих промежутку ('+FloatToStr(a)+','+FloatToStr(b)+')'
else
  Form2.Label3.Caption:='Кол-во элементов пренадлежащих промежутку ('+FloatToStr(a)+','+FloatToStr(b)+') k= '+IntToStr(k);

end;

end.

_____
Код программы нужно выделять (форматировать) тегами [CODE][/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 22.11.2018 в 13:41.
Andrei777 вне форума Ответить с цитированием
Старый 22.11.2018, 13:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Andrei777 Посмотреть сообщение
Код:
if pr=0
    then Form2.Label2.Caption:='Нет положительных элементов'
Это условие никогда не выполнится. pr не будет равно нулю. для проверки, были ли положительные элементы нужна отдельная переменная (либо флажок, либо счётчик).


Цитата:
Сообщение от Andrei777 Посмотреть сообщение
Код:
k:=0;
 i:=1;
 while i<=n do
  begin
   if ( (i mod 2) <> 0)
   then
    begin
      k:=k+1;
    end;
   i:=i+1;
   end
Вы забыли проверить принадлежность интервалу (a,b)

Код:
 k:=0;
 i:=1;
 while i<=n do
  begin
    if ( (i mod 2) <> 0) and (x[i]>=a) and (x[i]<=b) then
	k:=k+1;
    i:=i+1;
  end;
ну и непонятно, зачем цикл while, когда у Вас просто просится цикл for i:=1 to n do
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти количество положительных чисел среди четырёх целых чисел. Если количество положительных чисел больше количества отрицательны grooveone Паскаль, Turbo Pascal, PascalABC.NET 5 17.12.2013 10:07
Найти среднее арифметическое чисел, принадлежащих промежутку [A,B) и количество положительных чисел стоящих на местах, кратных 4. Any333 Помощь студентам 2 11.12.2013 22:52
Найти среднее арифметическое чисел, принадлежащих промежутку [A,B) и количество положительных чисел, стоящих на местах, кратных 4. edgeks Помощь студентам 0 18.11.2012 15:35
Найти сумму элементов, стоящих на четных местах и произведение элементов, стоящих на нечетных местах Dark Raven Помощь студентам 2 16.03.2012 10:09