Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 21.12.2010, 01:31   #1
Andros_me
Новичок
Джуниор
 
Регистрация: 21.12.2010
Сообщений: 2
По умолчанию Дан массив, состоящий из символов. Вывести на экран цифру, наиболее часто встречающуюся в этом массиве.

Условие задачи: Дан массив, состоящий из символов. Вывести на экран цифру, наиболее
часто встречающуюся в этом массиве.

вот мой код:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Edit1: TEdit;
Label1: TLabel;
Memo1: TMemo;
Label2: TLabel;
BitBtn1: TBitBtn;
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);


private
{ Private declarations }
public
{ Public declarations }
end;

var

Form1: TForm1;
a: array of char;
chastota: array of integer;
n,m,i,max:integer;


implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text='' then exit;
m:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n+1;

for i:=1 to m do StringGrid1.Cells[0,i]:=' i='+IntToStr(i);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear
end;



procedure TForm1.BitBtn1Click(Sender: TObject);

begin
chastota:=0;
for i:=0 to n do
if a[i] in ['0'..'9'] then
begin
inc(chastota[i]);
end;
max:=0;
for i:=1 to 9 do if chastota[i]>chastota[max] then max:=i;
Memo1.Text:=(IntToStr(max));

end;

end.

при нажатие на кнопку выполнить выскакивает ошибка EAcessViolation... Подскажите пожалуйста как исправить чтобы заработало.. Буду очень признателен
Andros_me вне форума Ответить с цитированием
Старый 21.12.2010, 02:18   #2
Andros_me
Новичок
Джуниор
 
Регистрация: 21.12.2010
Сообщений: 2
По умолчанию

ребята помогите пожалуйста, сдавать через 6 часов((
Andros_me вне форума Ответить с цитированием
Старый 21.12.2010, 08:50   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

1)
Цитата:
Код:
a: array of char;
  chastota: array of integer;
если используете динамический массив, то ОБЯЗАТЕЛЬНО, прежде чем к нему обращаться, нужно задавать ему размер в программе через SetLength(a, Размер); SetLength(chastota, Размер);
Если это не сделать, то будет EAccessViolation!

2) вообще не вижу, гед Вы заполняете массив a

3) почему не воспользоваться статистическим массивом?

4) а что, Вам задание задали в час ночи? А в 8 утра его уже надо сдать?
Как жестокие преподаватели...

5) подсчитал по времени, судя по всему, уже время вышло...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си. Ввести строку символов. Найти букву, наиболее часто встречающуюся в тексте. ClassicV Общие вопросы C/C++ 8 05.03.2016 22:39
Найти в массиве наиболее часто встречающееся число. с++ lbvflbvf Общие вопросы C/C++ 52 23.05.2010 21:34
Delphi. Вывести наиболее часто повторяющуюся цифру из строки символов Kurai Помощь студентам 1 27.04.2010 22:04
Pascal: Наиболее часто встречающееся число в массиве. MaGWaY_minsk Помощь студентам 2 20.01.2010 00:22


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS