Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 06.04.2008, 09:14
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Это снова я - слушайте - написал прогу - работает вроде - вот по условию: Наити произведение положительных элементов масива А={a[i]}, удовлетворяющих условию:
с<=a[i]<=d

Но блин - считает произведение - а оно отрицательное иногда получается - плиз - посмотрите прогу и скажите что не так...

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a:array [0..19] of integer;
P:integer;
i:integer;
c,d:real;
begin
randomize;
for i:=0 to 19 do
begin
a[i]:=random(50--50+1)-50;
StringGrid1.Cells[i,0]:=InttoStr(a[i]);
end;
P:=1;
c:=StrtoInt(Edit1.Text);
d:=StrtoInt(Edit2.Text);
for i:=0 to 19 do
if (a[i]>=c) and (a[i]<=d) and (a[i]>0) then
P:=P*a[i];
Memo1.Lines.Add(FormatFloat('0.00',P));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Clear;
Edit1.Clear;
Edit2.Clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Close;
end;

end.
  #17  
Старый 06.04.2008, 15:13
Аватар для Zylex
Zylex Zylex вне форума
Прохожий
 
Регистрация: 06.04.2008
Адрес: Сыктывкар
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
Сообщение от AndrYxo
Это снова я - слушайте - написал прогу - работает вроде - вот по условию: Наити произведение положительных элементов масива А={a[i]}, удовлетворяющих условию:
с<=a[i]<=d

Попробуйте этот кусок

Код:
if (a[i]>=c) and (a[i]<=d) and (a[i]>0) then

заменить на
Код:
   if (a[i]>0) then
      if (a[i]>=c) and (a[i]<=d) then
  #18  
Старый 06.04.2008, 16:10
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Спасибо! Там надо было через real сделать оказывается! Хотя твой код что sn сказал тоже поменял! Спасибо)
  #19  
Старый 08.04.2008, 17:54
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

народ кто-то может мне обьяснить плиз что значит строка log:=1E30; взятая от сюда? Думаю ее надо в блок схему включать или нет?

Код:
begin
k:=0;
log:=1E30;
while log>0.045 do
begin
log:=2/(b*b+b+2);
z:=b*b*b+ln(log);
memo1.Lines.Add('z = '+floattostr(z));
  #20  
Старый 08.04.2008, 18:27
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
народ кто-то может мне обьяснить плиз что значит строка log:=1E30; взятая от сюда? Думаю ее надо в блок схему включать или нет?

Код:
begin
k:=0;
log:=1E30;
while log>0.045 do
begin
log:=2/(b*b+b+2);
z:=b*b*b+ln(log);
memo1.Lines.Add('z = '+floattostr(z));
Просто начальное значение, чтобы выполнялось условие цикла while. Можете любое другое написать, устраивающее условию. А вообще лучше бы использовать repeat until.
  #21  
Старый 08.04.2008, 18:31
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

MegaPiha Спасибо)
  #22  
Старый 09.04.2008, 11:20
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Это снова я - нужна помощь умных людей 8) Не подскажите как можно сделать что бы например с однй формы я мог заходить еще на 4 - тоесть при нажатии на button1 мне открывалась форма с 1-й задачей и на 2 - со второй и так далее - я делаю, например на форме 2 ставлю Enabled False - а на первой форме задаю на button1 Form2.Show - при этом форма появляется -но не работает - тоесть просто появляется - но ничего не считает - не подскжите как сделать что бы появлялась форма рабочая?
  #23  
Старый 09.04.2008, 11:31
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Это снова я - нужна помощь умных людей 8) Не подскажите как можно сделать что бы например с однй формы я мог заходить еще на 4 - тоесть при нажатии на button1 мне открывалась форма с 1-й задачей и на 2 - со второй и так далее - я делаю, например на форме 2 ставлю Enabled False - а на первой форме задаю на button1 Form2.Show - при этом форма появляется -но не работает - тоесть просто появляется - но ничего не считает - не подскжите как сделать что бы появлялась форма рабочая?
Я так понял, у Вас на главной форме 4 кнопки перехода на другие формы.
Нажали на button1
Код:
MainForm.Close;
Form2.show;
Нажали на button2

Код:
MainForm.Close;
Form3.show;

Enabled False ведь и делает форму нерабочей.
  #24  
Старый 09.04.2008, 13:20
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Ok! Спасибо - не знал, думал просто скрывает! Буду пробовать!
  #25  
Старый 10.04.2008, 22:34
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Всем здрасте! Это снова я - я уже не финишной прямой - и опять небольшой вопросик - задаю матрицу по формуле C[i,j]:=sqr(j) - все работает - задаю по формуле C[i,j]:=cos(14.2*j+1) - не работает - пишет Incompatible Tipes: 'Integer' and 'Extended' - не знаете какэ то исправить можно - желательно не меняя на real массив?
  #26  
Старый 10.04.2008, 22:49
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Всем здрасте! Это снова я - я уже не финишной прямой - и опять небольшой вопросик - задаю матрицу по формуле C[i,j]:=sqr(j) - все работает - задаю по формуле C[i,j]:=cos(14.2*j+1) - не работает - пишет Incompatible Tipes: 'Integer' and 'Extended' - не знаете какэ то исправить можно - желательно не меняя на real массив?

Код:
C[i,j]:=trunc(cos(14.2*j+1)) 
  #27  
Старый 11.04.2008, 08:04
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

MegaPiha спасибо, код подходит - но в матрицу выводит одни нули.. не знаешь в чем дело может быть? sqr выдает нормлаьные значения - а cos - нули...

Последний раз редактировалось AndrYxo, 11.04.2008 в 08:38.
  #28  
Старый 11.04.2008, 10:15
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Вообще то я не правильно написал. Давно не использовал.
Cos принимает значения от нуля до единицы. TRUNC округляет значение. Поэтому надо либо массив делать real либо писать так trunc(k*cos(14.2*j+1)), где k-коэффициент умножения. Можно принять за 100.
И еще один момент, косинус берет угол в радианах, поэтому надо делить 14.2*j+1 на 57
  #29  
Старый 11.04.2008, 15:05
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Еще раз спасибо - начал делать через реал - вроде все нормально - но ту же самую фразу выдает Incompatible Tipes: 'Integer' and 'Extended' на строке где я новой переменной присваиваю значение массива - t:=C[i,k]; - если написать так - C[i,k]:=t; - запускает - но работает не правильно... в чем тут может быть причина?
  #30  
Старый 11.04.2008, 15:50
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Еще раз спасибо - начал делать через реал - вроде все нормально - но ту же самую фразу выдает Incompatible Tipes: 'Integer' and 'Extended' на строке где я новой переменной присваиваю значение массива - t:=C[i,k]; - если написать так - C[i,k]:=t; - запускает - но работает не правильно... в чем тут может быть причина?
Значит t надо в real или extendend перевести.
Закрытая тема


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter