господа, помогите в написании скрипта

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

господа, помогите в написании скрипта

Сообщение *13* » 15.02.2007 00:37:27

Суть такова...
есть файл в формате .txt
в нём идут записи столбиком, по типу
1,6,0,0,285
1,6,0,2,280
1,7,0,0,283
мне нужно чтобы программа сделала другой файл и переделала в ней немного структуру записи, а именно в такой вид
285 6 0 0 1
280 6 0 2 1
283 7 0 0 1
если кто не понял, поменять местами 1 элемент ( до первой запятой ) с последним элементом ( после последней запятой ) и вместо запятых чтобы были пробелы. все это нужно записать опять же в файл формата .txt без сбивания последовательности, и имено в столбик а не в строчку.
я не понимаю алгоритм действий даже :(
пожалуйста друзья, кто может, набросайте алгоритм действий в программе и по возможности сделайте набросок самой программы. у меня-то он есть, но он не работает :?
заранее пасибки.
*13*
новенький
 
Сообщения: 28
Зарегистрирован: 14.12.2006 16:29:57

Сообщение *13* » 15.02.2007 01:23:48

простите заранее если моя идея тупая, но она возникла :roll:
и при этом не работает :roll:
вот придумал я такой алгоритм для данной программы.. он ее компилирует, но выдает рантайм эррор :(
Код: Выделить всё
program project1;

{$mode objfpc}

var
  q1,q2,q3,q4,q5,qq:real;
  name,name1: string;
  t,t1:text;

begin
writeln('Vvedi imja faila');
readln(name);
writeln('Teper imja faila kuda budem vse zapisivat');
readln(name1);
assign(t,name);
assign(t1,name1);
reset(t);
rewrite(t1);
  if ioresult <> 0 then
  begin
  writeln('nelza otkrit fail: ',name);
  exit;
  end;
  while not eof(t) do
  begin
  readln(t,q1,q2,q3,q4,q5);
  qq:=q1;
  q1:=q5;
  q5:=qq;
  write(t1,q1); write(t1,' ');
  write(t1,q2); write(t1,' ');
  write(t1,q3); write(t1,' ');
  write(t1,q4); write(t1,' ');
  write(t1,q5); writeln(t1);
  end;
close(t);
close(t1);
end.     
*13*
новенький
 
Сообщения: 28
Зарегистрирован: 14.12.2006 16:29:57

Сообщение shade » 15.02.2007 10:39:42

Код: Выделить всё
program project1;

{$mode objfpc}

type
  TStringArray = array of string;

var
  s: string;
  sArr: TStringArray;
  name,name1: string;
  t,t1:text;

function Explode(Ch: Char; const Text: string): TStringArray;
var
  i, k, Len: Integer;
  Count: Integer;
begin
  if Text = '' then
  begin
    Result := nil;
    Exit;
  end; // if
  Count := 0;
  Len := Length(Text);
  for i := 1 to Len do
  begin
    if Text[i] = Ch then Inc(Count);
  end; // for i
  SetLength(Result, Count + 1);
  Count := 0;
  k := 1;
  for i := 1 to Len do
  begin
    if Text[i] = Ch then
    begin
      Result[Count] := Copy(Text, k, i - k);
      Inc(Count);
      k := i + 1;
    end; // if
  end;
  Result[Count] := Copy(Text, k, Len - k + 1);
end;

begin
writeln('Vvedi imja faila');
readln(name);
writeln('Teper imja faila kuda budem vse zapisivat');
readln(name1);
assign(t,name);
assign(t1,name1);
reset(t);
rewrite(t1);
  if ioresult <> 0 then
  begin
  writeln('nelza otkrit fail: ',name);
  exit;
  end;
  while not eof(t) do
  begin
  readln(t,s);
  sArr := Explode(',', s);
  writeln(t1, sArr[4], ' ', sArr[1], ' ', sArr[2], ' ', sArr[3], ' ', sArr[0]);
  end;
close(t);
close(t1);
end.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Romtek » 15.02.2007 13:26:57

можно сделать так: сканировать строку посимвольно. Выделяешь число - заносишь в стек, и так до конца строки. Потом в новый файл выводишь числа из стека в обратном порядке через пробел. :)
Аватара пользователя
Romtek
постоялец
 
Сообщения: 190
Зарегистрирован: 22.05.2005 12:29:35
Откуда: Рамат Ган

Сообщение Romtek » 15.02.2007 13:29:05

*13*, а что, если бы чисел в твоём примере было не 5, а милион? Заводила бы милион переменных? 8)
Аватара пользователя
Romtek
постоялец
 
Сообщения: 190
Зарегистрирован: 22.05.2005 12:29:35
Откуда: Рамат Ган

Сообщение *13* » 15.02.2007 17:27:11

shade, спасибо :wink:
думаю мне эта функция еще не раз пригодиться :D
*13*
новенький
 
Сообщения: 28
Зарегистрирован: 14.12.2006 16:29:57


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru