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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2017, 10:30   #1
t10yj
Пользователь
 
Аватар для t10yj
 
Регистрация: 25.01.2017
Сообщений: 13
По умолчанию Присваивание n к edit

Добрый день. Требуется чтобы значение n=88
бралось из Edit1. т.е. число

будет не корректно

n=StrToInt(Edit1.Text);

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
n=88;
var
m:array[1..n] of integer;
i,k:integer;
begin

randomize;
for I := 1 to length(m) do m[i]:=randomrange(-100,100);

k:=0;
for I := 1 to length(m) do begin
                        if m[i]<0 then inc(k) else break;
                           end;

  Memo1.Lines.Add('Ïîñëåäîâàòåëüíîñòü èç '+inttostr(n)+' íà÷èíàåòñÿ ñ '+inttostr(k)+' îòðèöàòåëüíûõ ÷èñåë.');
end;
t10yj вне форума Ответить с цитированием
Старый 25.01.2017, 10:32   #2
t10yj
Пользователь
 
Аватар для t10yj
 
Регистрация: 25.01.2017
Сообщений: 13
По умолчанию

надо правочка кода
t10yj вне форума Ответить с цитированием
Старый 25.01.2017, 10:37   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
n := StrToInt(Edit1.Text);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 25.01.2017, 10:41   #4
t10yj
Пользователь
 
Аватар для t10yj
 
Регистрация: 25.01.2017
Сообщений: 13
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
n := StrToInt(Edit1.Text);
Так уже писал и по разному. Ошибки.

[Error] Unit1.pas(32): '=' expected but ':=' found
[Error] Unit1.pas(32): Constant expression expected
[Error] Unit1.pas(34): Low bound exceeds high bound

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
n:=StrToInt(Edit1.Text);
var
m:array[1..n] of integer;
i,k:integer;
begin

// çàïîëíåíèå ìàññèâà
randomize;
for I := 1 to length(m) do m[i]:=randomrange(-100,100);
// ïðîâåðÿåì  óñëîâèå
k:=0;
for I := 1 to length(m) do begin
                        if m[i]<0 then inc(k) else break;
                           end;

  Memo1.Lines.Add('Ïîñëåäîâàòåëüíîñòü èç '+inttostr(n)+' íà÷èíàåòñÿ ñ '+inttostr(k)+' îòðèöàòåëüíûõ ÷èñåë.');
end;

end.
t10yj вне форума Ответить с цитированием
Старый 25.01.2017, 10:44   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А зачем константой объявил? Объявляй переменной и присваивай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.01.2017, 10:45   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

так ПЕРЕМЕННАЯ должна быть объявлена, там где она используется.
и КОМПИЛЯТОР не может посчитать то чего он не знает.
Код:
 const 
 n:=StrToInt(Edit1.Text); 
var 
  n: integer;
begin
  n:=StrToInt(Edit1.Text);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 25.01.2017, 10:57   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

t10yj
либо используйте статический массив ЗАВЕДОМО БОЛЬШЕГО размера:

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
MaxN=1000;
var
  m:array[1..MaxN] of integer;
  i,k,n:integer;
begin
  n := StrToInt(Edit1.Text);
  if (n<1) or (n>MaxN) then begin
    ShowMessage('Неверный размер массива, введите N от 1 до '+StrToInt(MaxN));
    Exit
  end;

  randomize;

  for I := 1 to n do m[i]:=randomrange(-100,100);
  k:=0;
  for I := 1 to n do begin
                        if m[i]<0 then inc(k) else break;
......
или использовать динамические массивы:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  m:array of integer;
  i,k,n:integer;
begin
  n := StrToInt(Edit1.Text);
  SetLength(m, n);

  randomize;

  for I := 0 to n-1 do m[i]:=randomrange(-100,100);
  k:=0;
  for I := 0 to n-1 do begin
                        if m[i]<0 then inc(k) else break;
......
обратите внимание, что динамические массивы индексируются от НУЛЯ
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.01.2017, 11:04   #8
t10yj
Пользователь
 
Аватар для t10yj
 
Регистрация: 25.01.2017
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
t10yj
либо используйте статический массив ЗАВЕДОМО БОЛЬШЕГО размера:

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
MaxN=1000;
var
  m:array[1..MaxN] of integer;
  i,k,n:integer;
begin
  n := StrToInt(Edit1.Text);
  if (n<1) or (n>MaxN) then begin
    ShowMessage('Неверный размер массива, введите N от 1 до '+StrToInt(MaxN));
    Exit
  end;

  randomize;

  for I := 1 to n do m[i]:=randomrange(-100,100);
  k:=0;
  for I := 1 to n do begin
                        if m[i]<0 then inc(k) else break;
......
или использовать динамические массивы:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  m:array of integer;
  i,k,n:integer;
begin
  n := StrToInt(Edit1.Text);
  SetLength(m, n);

  randomize;

  for I := 0 to n-1 do m[i]:=randomrange(-100,100);
  k:=0;
  for I := 0 to n-1 do begin
                        if m[i]<0 then inc(k) else break;
......
обратите внимание, что динамические массивы индексируются от НУЛЯ
Спасибо всем!!
Более менее разобрался)

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  m: array of integer;
  i, k, n: integer;
begin
  n := StrToIntDef(Edit1.Text, 0);
  SetLength(m, n);
 
  randomize;
  for i := 1 to length(m) do
    m[i] := randomrange(-100, 100);
  k := 0;
  for i := 1 to length(m) do
  begin
    if m[i] < 0 then
      inc(k)
    else
      break;
  end;
Memo1.Lines.Add('Последовательность из '+inttostr(n)+' начинается с '+inttostr(k)+' отрицательных чисел.');
end; 


end.
t10yj вне форума Ответить с цитированием
Старый 25.01.2017, 11:57   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от t10yj Посмотреть сообщение
Более менее разобрался)
нет, не разобрались!


Это НЕВЕРНО!
Цитата:
Сообщение от t10yj Посмотреть сообщение
for i := 1 to length(m) do
m[i] := randomrange(-100, 100);
k := 0;
for i := 1 to length(m) do
нужно:

Код:
for i := 0 to length(m)-1 do
    m[i] := randomrange(-100, 100);
  k := 0;
  for i := 0 to length(m)-1 do
разницу видно или указать прямо?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.01.2017, 12:42   #10
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Сергей, вы уже дали решение в дубле этой темы:
http://www.programmersforum.ru/showthread.php?t=303207
kropotkina-alice вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присваивание edit переменной. sinobithug Общие вопросы C/C++ 2 13.04.2014 23:34
Присваивание С++ Praud Помощь студентам 11 11.03.2014 03:19
Присваивание BastAngel Компоненты Delphi 2 01.02.2012 14:35
Массовое присваивание Zhenya-Pvl Общие вопросы C/C++ 6 26.02.2011 17:51
Присваивание объектов Stalevar Общие вопросы Delphi 0 17.02.2009 19:06