Zapisywanie dwuwymiarowej tablicy do pliku, określona ilość elementów w wierszu.

Odpowiedz Nowy wątek
2011-07-09 21:43
0

Witam, otóż mam taki problem. Zacznę od tego, że piszę w pascalu, bo to ważne. Kombinuje jak zapisać dwuwymiarową tablicę do pliku tekstowego, przy czym żeby w wierszu znajdowało się max N określonych elementów oddzielonych ; (średnikami). Dodatkowo najlepiej żeby na końcu każdego wiersza nie było już ; ani innego znaku, ale nie jest to (w tej chwili chyba). Plik i tablica zawierają wartości liczbowe.

Zawartość jednego z moich przykładowych plików po zapisie powinien wyglądać tak:

1;1;1;1;1;1;1;1;1;1;1;1
1;0;0;0;1;0;0;0;0;0;42;1
1;0;1;0;1;0;1;1;0;1;1;1
1;54;1;0;1;0;1;1;0;0;0;1
1;1;1;0;0;0;0;1;0;1;0;1
1;0;0;41;1;1;0;1;0;1;0;1
1;52;1;0;1;1;0;1;0;0;0;1
1;0;1;0;1;1;0;1;0;1;42;1
1;51;1;0;1;1;0;1;0;1;0;1
1;0;1;0;1;1;0;1;0;1;3;1
1;2;1;0;0;0;0;1;42;42;1;1
1;1;1;1;1;1;1;1;1;1;1;1

Niestety jak przepuszczam tablicę przez mój kod, zapisany plik wygląda tak:

1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;1;0;0;0;0;0;42;1;1;0;1;0;1;0;1;1;0;1;1;1;1;54;1;0;1;0;1;1;0;0;0;1;1;1;
1;0;0;0;0;1;0;1;0;1;1;0;0;41;1;1;0;1;0;1;0;1;1;52;1;0;1;1;0;1;0;0;0;1;1;0;1;0;1;1;0;1;0;1;42;1;1;51;1;0;1;1;0;1
;0;1;0;1;1;0;1;0;1;1;0;1;0;1;3;1;1;2;1;0;0;0;0;1;42;42;1;1;

1;1;1;1;1;1;1;1;1;1;1;1;

(entery wrzucone żeby nie wydłużać posta, normalnie jest to ciąg w '1 lini', poza tym 'potrójnym')
Żeby było śmieszniej, mimo widocznej przerwy tutaj w poście, w notatniku jej nie widzę, tak jak we wcześniej podanym 'docelowym wyglądzie'.

Mój kodzik którego używam do tej czynności wygląda następująco:

const
N = 12;
 
var
curposx,curposy:integer;
 
[...]
 
procedure save_p;
var
  file_to_save : text;
 
begin
    Assign(file_to_save, 'D:\_CO\plik.txt');
    ReWrite(file_to_save);
    for curposx := 1 to N do
    begin
      if curposx = 12 then write(file_to_save, #10#13);
      for curposy := 1 to N do write(file_to_save, tab[curposx][curposy], ';');
    end;
    Close(file_to_save);
    delay(10000);
end;

No i problem w tym, jak widać że niby wstawia mi ten 'enter' w dodatku tylko w 1 miejscu, ale nie do końca, albo raczej nie taki jaki bym chciał mieć.
Jakaś wskazówka, gdzie powinienem pomyśleć, bądź z jaką funkcją pascala popróbować?

@edit
zapomniałem dodać że każdy element to liczba, tak jak są oddzielone średnikami, czyli np 1 element tablicy to '1', inny to '42' itd.

edytowany 4x, ostatnio: tariel36, 2011-07-09 21:58
Zamiast #10#13 powinno być #13#10 - pelsta 2011-07-09 22:13

Pozostało 580 znaków

2011-07-09 22:11
for y := 1 to N do
begin
  for x := 1 to N-1 do Write(file_to_save, tab[x,y], ';');
  WriteLn(file_to_save, tab[N,y]);
end;

Pozostało 580 znaków

2011-07-10 00:55
0

dzięki bardzo, mimo że x i y były przestawione wszystko działa perfekcyjnie!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0