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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 16:21   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию Процедура в Delphi,сумма элементов массива кратных трем.

Задание:Ввести массив F[0..6] и число C. Для каждого элемента массива вычислить функцию G=tg (F[i]/F[i]+C) . Найти сумму элементов введенного массива кратных 3.
Код:
procedure]TForm1.Button2Click(Sender: TObject);
var s,a: extended;
begin
C:=StrToInt(edC.Text);
s:=0;
  for i:=1 to N do
    F[i]:= StrToFloat(strgrF.Cells[0,i]);
  for i:=1 to N do begin
    a:=F[i]/F[i]+C;
    G[i]:=sin(a)/cos(a);
    strgrG.Cells[0,i]:=FloatToStrF(G[i],ffFixed,2,2);
    if (F[i] mod 3 = 0)
    Then S=F[i]+s;
  end;
Edit1.Text=S;

end;

end.
Выбивает ошибку в if (F[i] mod 3 = 0)
spectrum988 вне форума Ответить с цитированием
Старый 03.03.2014, 16:55   #2
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Самое очевидное
Код:
Then S := F[i] + s;
...
Edit1.Text := S;

Последний раз редактировалось Unique_Maks; 03.03.2014 в 20:50.
Unique_Maks вне форума Ответить с цитированием
Старый 03.03.2014, 20:15   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от spectrum988 Посмотреть сообщение
Выбивает ошибку в if (F[i] mod 3 = 0)
понятие кратности определено только для ЦЕЛЫХ чисел.
у Вас же вещественные числа.
Например, число 0.333 кратно трём?!

А если подходить формально, то можно избавится от ошибки, которую Вам выдаёт компилятор, например, так:

Код:
f (trunc(F[i]) mod 3 = 0) then ....
но ещё раз повторю - Вы, скорее всего, неправильно поняли условия задачи!

Ну, или автор задачи некомпетентен!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.03.2014, 19:15   #4
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Спасибо исправил на trunc(F(I)),запускается но вот после нажатия кнопки выбивает ошибку.С чем это может быть связано?
spectrum988 вне форума Ответить с цитированием
Старый 05.03.2014, 19:42   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Найти сумму элементов введенного массива кратных 3.
Скорее элементов массива с индексом кратным трем.
Цитата:
после нажатия кнопки выбивает ошибку.С чем это может быть связано?
Видимо с секретной ошибкой в программе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.03.2014, 20:36   #6
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Безымянный.jpg
Нет именно элементов,а не индексов.Столько уже над ней работаю,но все время одна и таже ошибка,что только не пробовал,может кто сталкивался ?
spectrum988 вне форума Ответить с цитированием
Старый 05.03.2014, 20:40   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Нет именно элементов,а не индексов
Не бывает плавающих кратных трем. Согласно этому условию в ответе ноль А в сообщении об ошибке все сказано, добавить нечего
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.03.2014, 20:40   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Вы где-то пустую строку пытаетесь в число преобразовать. Наверное, в oncreate формы берете значения из edit'ов.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.03.2014, 20:45   #9
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Проблема в том, что mod работает только с целыми числами. Подробнее можно прочитать здесь.
Вы же ему вместо положенного integer, подсовываете float вещественное число.
Streletz вне форума Ответить с цитированием
Старый 05.03.2014, 20:51   #10
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Извиняюсь,что ранее не показал новый код,отредактированный и более правильный.
BDA:Я вообще опустил OnCreate свел задачу к минимуму


Код:
......................
const N=6;
type
 Mas1=array[1..N] of integer;
........
var
  F:Mas1;
...............
procedure TForm1.Button1Click(Sender: TObject);
var a,s,i:integer;
begin
S:=0;
  for i:=1 to N do
    F[i]:= StrToInt(StringGrid1.Cells[0,i]);
  for i:=1 to N do
  begin
    If (trunc(F[i]) mod 3=0)
    Then
    begin
    S:=F[i]+S;
    Edit1.Text:=IntToStr(S);
    end;
  end;
end;
Но без изменений,я уже вообще убрал считывание из Edit'ow.
spectrum988 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
роизведение чисел, кратных трем с индексами массива aleksskay Microsoft Office Excel 3 09.06.2013 15:06
Определить сумму элементов массива, кратных трем [Паскаль] ketik Помощь студентам 3 12.12.2010 21:10
Паскаль. определить сумму элементов кратных трем. KnoPaA Помощь студентам 5 27.10.2009 17:42
Определить сумму элементов массива, кратных трем (Не выполняется условие) Skrip Общие вопросы C/C++ 8 04.06.2009 13:56