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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2012, 10:34   #1
vAselek
Новичок
Джуниор
 
Регистрация: 11.03.2012
Сообщений: 1
Печаль Подсчитать количество элементов массива удовлетворяющих условиe

Подсчитать количество элементов массива х, удовлетворяющих условию -1<=хi<=1 и переписать их в массив Y.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const n=5;
var x,y:array[0..n] of real;
    i,j:Integer;
Begin
    try
    For i:=0 to n do
    x[i]:=StrToFloat(StringGrid1.Cells[0,i]);
    j:=0;
    For i:=0 to n do
           if (x[i]>-1) or (x[i]=-1) or (x[i]<1) or (x[i]=1)
            then
                 begin
                      y[j]:=x[i];
                      j:=j+1;
                 end
            else ShowMessage('Íåò ýëåìåíòîâ óäîâëåòâîðÿþùèõ óñëîâèå -1<=x<=1');
    Label1.Caption:=('Êîëè÷åñòâî ýëåìåíòîâ â ìàññèâå Y:'+IntToStr(j));
    except
        on E:Exception do
        ShowMessage(E.ClassName+' îøèáêà ñ ñîîáùåíèåì : '+E.Message);
    end;
End;

end.
Выдает ошибку "is not a valid floating point value". Пыталась вводить всевозможные форматы вещественных данных, но все равно выдает одну и ту же ошибку.
vAselek вне форума Ответить с цитированием
Старый 11.03.2012, 11:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну значит, у Вас в stringgrid в какой-то ячейке (допустим в левой верхней) находится текст (заголовок), а не число.

и, кстати, Вы знаете, что так, как Вы описали, нужно чтобы было в стрингрид минимум 5 строчек, заполненных сверху вниз?

кроме того, у Вас ошибочно задано условие проверки.
нужно использовать условие AND (И)
примерно так:
Код:
    For i:=0 to n do
           if (x[i]>=-1) and (x[i]<=1) then
                 begin
                      y[j]:=x[i];
                      j:=j+1;
                 end
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество элементов mexx1337 Паскаль, Turbo Pascal, PascalABC.NET 2 21.02.2012 19:39
Обработка элементов массива, удовлетворяющих некоторому условию sokol987 Паскаль, Turbo Pascal, PascalABC.NET 2 25.12.2011 15:24
В массиве из n элементов подсчитать количество четырёд идущих подряд одинаковых элементов ( Delphi7 ) Анастасья Помощь студентам 1 31.03.2011 19:23
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52
В массиве A, состоящем из 10 элементов, подсчитать количество положительных элементов Alex61 Помощь студентам 5 16.05.2009 23:06