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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2010, 21:23   #1
grustniy
Новичок
Джуниор
 
Регистрация: 04.09.2010
Сообщений: 2
По умолчанию delphi. указатели.

Задание звучит так:
Дан массив, состоящий из символов. Вывести на экран цифру, наиболее часто встречающуюся в этом массиве.
Исходный код:
Код:
unit Unit1;


interface

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

type
    TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  const N=7;

  Type
    Mas1=array[1..1] of integer;
    Mas2=^Mas1;
    Mas3=array[1..1] of Integer;
    Mas4=^Mas3;

var
  Form1: TForm1;
  a:Mas2;
  b:Mas4;
  i,j,m:Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var

begin
  New(b);
  Memo1.Clear;
  Randomize;
  for i:=1 to N do
    begin
      //StringGrid1.Cells[i-1,0]:=IntToStr(Random(256));
      repeat
      b:= random(256);
      until(b > 48);
      StringGrid1.Cells[i-1,0]:=chr(b); //IntToStr(xz);

    end;
  Dispose(b);
end;



procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  New(a);
  for i:=1 to N do
       a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);
  for i:=1 to N do

  Dispose(a);

end;

end.
Ошибки при компеляции:
[Error] Unit1.pas(46): Identifier expected but 'BEGIN' found
[Warning] Unit1.pas(50): For loop control variable must be simple local variable
[Error] Unit1.pas(54): Incompatible types: 'Integer' and 'Mas4'
[Error] Unit1.pas(55): Operator not applicable to this operand type
[Error] Unit1.pas(56): Incompatible types
[Warning] Unit1.pas(67): For loop control variable must be simple local variable
[Warning] Unit1.pas(69): For loop control variable must be simple local variable
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
___________________________________ ___________________________________

Помогите бедному студенту, в чем может быть проблема?
grustniy вне форума Ответить с цитированием
Старый 05.10.2010, 22:58   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Вот как правильно работать с указателями:
Код:
Type
  TMas=array [0..9] of integer;
  PMas=^TMas;

//общая переменная
var
  Mas:PMas;

procedure TForm1.Button1Click(Sender: TObject);
Var
  i:integer;
begin
  Randomize;
  New(Mas); //или это GetMem(Mas,SizeOf(TMas));
  For i:=0 to 9 do
  begin
    Mas^[i]:=RandomRange(0,10);
    StringGrid1.Cells[i,0]:=inttostr(Mas^[i]);
  end;
  Dispose(Mas); //или FreeMem(Mas,sizeof(TMas));
end;
А вот вы уже написали поиск цифры? Именно цифры, не числа?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 05.10.2010 в 23:00.
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Указатели KLOP Помощь студентам 4 06.03.2010 20:27
Указатели(Си) Bl@st Помощь студентам 6 12.01.2010 21:03
Указатели Paul_AG Общие вопросы C/C++ 5 03.07.2009 14:22
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
Указатели!!!!!!!!!!!!!!! focus888 Паскаль, Turbo Pascal, PascalABC.NET 2 01.05.2009 09:13