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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 14:47   #1
апрол
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 12
По умолчанию mod не принимает

прописываю в программе
Код:
if (a[i] mod 5)=0 then
выбивает ошибку вместо мод пишу
Код:
/
программа запускается, что делать если мне нужно именно
Код:
mod

Последний раз редактировалось апрол; 28.05.2013 в 15:19.
апрол вне форума Ответить с цитированием
Старый 28.05.2013, 14:53   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

a - какого типа? для mod нужен Integer или совместимый
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.05.2013, 15:00   #3
апрол
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
a - какого типа? для mod нужен Integer или совместимый

у меня real, поставил Integer теперь в другом месте ошибка, рядком раньше
Код:
a[i]:=StrToFloat(StringGrid1.Cells[i,1]);
апрол вне форума Ответить с цитированием
Старый 28.05.2013, 15:09   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
у меня real, поставил Integer теперь в другом месте ошибка, рядком раньш
Идей вообще нет почему? Наводка - StrToFloat
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.05.2013, 15:18   #5
апрол
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 12
По умолчанию

У меня есть вот такой рабочий код
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StringGrid1: TStringGrid;
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A: array of  real; 
    i, N: integer;
    S: real;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin 
   if Edit1.Text = '' then exit;
   n:=StrToInt(Edit1.Text);
   stringgrid1.ColCount:=n;
for i:=0 to n-1 do StringGrid1.Cells[i,0]:=inttostr(i);

SetLength(a,n);
end;

procedure TForm1.Button1Click(Sender: TObject);
Begin
For i:=0 to n-1 do
a[i]:=StrToFloat(StringGrid1.Cells[i,1]);

S:=0;
for  i:=0 to N-1 do if A[i]>0 then S:= S + A[i];
Label1.Caption:= ' S = '+ FloatToStr(S);
end;

end.
программа подсчитавыет суму всех елементов в массиве
длинной N, а мне нужно подсчитать суму елементов массива А, кратных пяти при условии остачи (A(i)/5)=0 делаю условие A[i] mod 5 = 0 выкидывает ошибку
апрол вне форума Ответить с цитированием
Старый 28.05.2013, 15:26   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сам подумай, какой может быть остаток от деления по модулю пять для дробных чисел? Даже в математике такого нет. Эта операция применима только для целых чисел. Даже если в массиве a целые числа, это ничего не меняет - описан то он как real
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.05.2013, 16:03   #7
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

как вариант конечно можно
Код:
if (round(a[i]) mod 5)=0 then 
//или 
if (trunc(a[i]) mod 5)=0 then
но все же лучше разберитесь со своими типа данных и заданием, ибо то что приведено лишь "костыль" для вашего кода
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.05.2013, 18:39   #8
апрол
Пользователь
 
Регистрация: 07.12.2008
Сообщений: 12
По умолчанию

Всем спасибо, проблему решил
апрол вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не принимает данные(soket) WebbMan C/C++ Сетевое программирование 0 02.02.2012 19:35
idTCP не принимает русский текст. TwiX Работа с сетью в Delphi 11 20.03.2010 03:10
Клиент файл принимает но не сохраняет D_E_N Работа с сетью в Delphi 11 06.08.2009 18:30
Инди не принимает куки schnaps Работа с сетью в Delphi 2 14.07.2009 16:18
Дельфи не принимает лицензию... Dj_smart Свободное общение 5 09.05.2008 11:16