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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2006, 19:01   #11
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Если с двумерным массивом не удобно работать, то вот пример с одномерным:
Код:
var
  Form1: TForm1; a:array[1..50] of byte;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var f:textfile; i,j,x:byte;
begin
assignfile(f,'111.txt');
reset(f);
x:=0;
for i:=1 to 10 do
 begin
 for j:=1 to 5 do
   begin
   x:=x+1;
   read(f,a[x]);
   end;
 readln(f);
 end;
closefile(f);
end;
zetrix вне форума Ответить с цитированием
Старый 14.11.2006, 20:31   #12
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
Радость

спасибо! щас буду пробовать.
SashaB вне форума Ответить с цитированием
Старый 15.11.2006, 16:21   #13
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

и вобще в данном случае числа = слова,
подойдет любой алгоритм частотного анализа текста.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 15.11.2006, 18:46   #14
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
По умолчанию

У меня с двумерным массивом все получилось.
Но мне нужно немножко не так.
Вот например если у меня в строки будут выглядеть так:
привет 2006 18 25 33 47....
привет 2007 15 19 36 42....
Можно ли a[1] присвоить 18, a[2] - 25 и т.д. , а b[1] - 2006, b[2] - 2007?
Я думаю это возможно - к примеру b[2] присвоить значение начинающееся с восьмого символа слева и до пробела.
А вот как уже это в делфи осуществить?
SashaB вне форума Ответить с цитированием
Старый 15.11.2006, 20:47   #15
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

' a[1] присвоить 18 '
где 1 = количество_пробелов.
простая индексация, 2-мерный массив
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 15.11.2006, 21:58   #16
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Virtson Посмотреть сообщение
' a[1] присвоить 18 '
где 1 = количество_пробелов.
простая индексация, 2-мерный массив
А можно чуть поподробней?
a[1] у меня первый элемент массива, a[2] - второй, и т.д.
SashaB вне форума Ответить с цитированием
Старый 15.11.2006, 22:14   #17
delphik
 
Аватар для delphik
 
Регистрация: 15.11.2006
Сообщений: 8
Сообщение

Я так понял тебе необходимо
Первое число из строки посадить на массив «b» а на массив «а» проследить кие числа чаще всего встречаются?
Попробуй так!

type
Sim = array [0..10000] of integer;
Var
b,a : Sim;
S,k : string:
i,j,z : integer
begin
for i:=0 to 10000 do begin
a[i]:=0; b[i]:=0; // обнулим данные массива (не обязательно но желательно)
end;
// я советую загружать файл в ListBox (Это необходимо сделать предварительно)
For i:=0 to (form1.ListBox1.Items.Count-1) do begin
S:=form1.ListBox1.Items[i];
j:=0;
k:=’’;
Repeat // если строка начинается не сразу с чисел а есть текст то определяем положение первого знака 1 или 2 или 3 и тд.
j:=j+1;
Until ((S[j]='0')or(S[j]='1')or(S[j]='2')or(S[j]='3')or(S[j]='4')or(S[j]='5')or(S[j]='6')or(S[j]='7')or(S[j]='8')or(S[j]='9'));

Repeat // выбираем первое число до знака ‘ ‘ <= пробел
k:=k+S[j];
j:=j+1;
Until (S[j]=' ‘); // если не уверен что пробел то можно определять как ((S[j]<>’0’)or(S[j]<>’1’) и тд.)
b[i]:=StrToInt(k);
Repeat
K:=’’;
j:=j+1;
Repeat
k:=k+S[j];
j:=j+1;
Until ((S[j]=' ‘)or(j= Length(S)));
Z:=StrToInt(k); // Я предлагаю другой ход a[Число]:= сколько раз повторяется (одновременно идет сортировка)
а[z]:= а[z]+1;
Until (j= Length(S)); // если переменная j равна длине строки S
End;
End;
Знание это сила. Человек владеющий данной силой не победим!
delphik вне форума Ответить с цитированием
Старый 16.11.2006, 00:50   #18
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
По умолчанию

Цитата:
Сообщение от delphik Посмотреть сообщение
Я так понял тебе необходимо
Первое число из строки посадить на массив «b» а на массив «а» проследить кие числа чаще всего встречаются?
Попробуй так!
Ну это конечно для примера. Но смыс тот же.
Спасибо конечно Но так расписывать было не к чему . Мне нужно было буквально несколько строк из этого кода.
Остальное я сам бы сделал.
Щас к сожалению времени нет. После завтра на свежую голову все разберу..
А в Listbox я так понял из txt файла можно загрузить?
Или вручную скопировать и вставить?
SashaB вне форума Ответить с цитированием
Старый 16.11.2006, 16:28   #19
delphik
 
Аватар для delphik
 
Регистрация: 15.11.2006
Сообщений: 8
Сообщение

form1.ListBox1.Items.LoadFromFile(' C\XXX\xxx.txt');
Знание это сила. Человек владеющий данной силой не победим!
delphik вне форума Ответить с цитированием
Старый 19.11.2006, 15:01   #20
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
По умолчанию

Сегодня попробовал - ни чего не получилось.
Строки загрузил в ListBox1.
А дальше одни ошибки.
И я так и не понял как присвоить число.
Если можно то объясните на простом примере
привет 2006 18 25 33 47....
Строка меняется, но длина чисел и слова остается, т.е. первое слово у меня будет всегда из шести букв, и вычислять пробелы не обязательно.
Мне нужно всего лишь присвоить:
S:=......{например восмой символ слева, длина всегда будет 4 символа, массив не обязательно}.
SashaB вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна ваша помощь! forsy Паскаль, Turbo Pascal, PascalABC.NET 2 19.05.2008 14:38
прога на С/С++(нужна ваша помощь) AlterEgo Помощь студентам 1 09.09.2007 18:41