Wczytywanie długiej liczby do tablicy

Odpowiedz Nowy wątek
2006-08-16 10:39
KarolP
0

Witam!

Mam taki problem: chcę aby wczytać ze standardowego wejścia 10000-cyfrową liczbę, chodzi mi o to że mam coś w takiej postaci: ilość_cyfr_liczby spacja liczba_x_cyfrowa (nie ma spacji między cyframi).

Chodzi o to żeby wczytać tą liczbę do tablicy (jedna cyfra zajmuje jedno pole w tablicy), jakim poleceniem w języku pascal to zrobić. Mogą być kombinacje okrężne itp. ale nie może być żadnych zmian w specyfikacji wejścia. Dla ciemnych przykład:

18 123456789012345678

i chcę aby było:
t[1]=1;
t[2]=2;
...
t[18]=8;

To jest na konkurs i nie wiem jak prawidłowo wczytać tą liczbę. Próbowałem coś takiego:

for i:=1 to j do begin
read(zn); // zn = char
c[i]:=ord(zn)-48;
end.

Niestety nie można deklarować ŻADNYCH MODUŁÓW!!

Pozostało 580 znaków

2006-08-16 10:55
0

Przypominają sie czasy Olimpiady Informatycznej.
Dobrze kombinujesz z tymi charami - taką liczbę trzeba wczytać znak po znaku;

const
   max_cyfr = 10000;
var
   il_cyfr : word;
   cyfra : array[1..max_cyfr] of byte;
   c : char;
   i : word;

BEGIN
   read(il_cyfr);
   for i:=1 to il_cyfr do
   begin
      read(c);
      cyfra[i] := ord(c)-48;
   end;
END.

przypomnę jeszcze tylko, że dobrze jest kompilować tego typu rzeczy we freepascalu, a nie w tp.
powodzenia z zadaniami :P
Jak co to pisz na maila; chętnie pomogę

Pozostało 580 znaków

2006-08-16 10:57
Ad
0

No i co nie działa?


Pozostało 580 znaków

2006-08-16 11:41
0
<ot> > To jest na konkurs i nie wiem jak prawidłowo wczytać tą liczbę. Na tym konkursie dają też punkty za znalezienie rozwiązania na forum? </ot>

Pozostało 580 znaków

2006-08-16 15:04
KarolP
0

to stary konkurs (już nie można zdobyć punktów), rozwiązuję zadania z tego konkursu dla treningu, możliwe że na następnym ta umiejętność mi się przyda. Właśnie dostosowuję podany kod do rozwiązania. Za chwilę powiem jaki efekt.

Pozostało 580 znaków

2006-08-16 15:11
KarolP
0

Pomysł działa. Jak widać blisko byłem z rozwiązaniem. Niestety, póki co zasługuję na ledwie 45/100 (Błędy wykonania). Dzięki za pomoc. btw. zadanie to pochodzi z Olimpiady Informatycznej (12 edycja) i zwie się Bankomat.

Pozostało 580 znaków

2006-08-16 15:20
Ad
0
KarolP napisał(a)

Niestety, póki co zasługuję na ledwie 45/100 (Błędy wykonania).

Nowe rozwiązanie na 45%, czy stare?


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