Skocz do zawartości
[Dante]

Program - Delphi 7

Rekomendowane odpowiedzi

Zaznaczę może na początku, iż oczekuję tylko wskazówek odnośnie mojego problemu - nie gotowego rozwiązania.

 

Mam do napisania swój pierwszy 'banalny' programik. Fakt, że dopiero co stawiam pierwsze kroki w środowisku Pascala / Delphi sprawia mi pewien problem.

 

Polecenie brzmi: 'Kompresja jednowymiarowej tablicy polegającej na zastąpieniu ciągu 2 lub więcej takich samych sąsiednich wartości przez pojedyńczą wartość (np. 122344455 -> 12345).'

 

Mój kod źródłowy w wersji Alpha :) wygląda następująco:

 

program Project_51;{$APPTYPE CONSOLE}uses  SysUtils;var  a:array[1..10] of integer;  b:integer;begin   writeln('Type 10 numbers:');   for b:=1 to 10 do    readln(a[b]);   if (a[b])=succ(a[b]) then    writeln(a[b]);   if (a[b])<>succ(a[b]) then    writeln(succ(a[b]));   for b:=1 to 10 do    write(a[b]);   readln;end.

 

Program działa, lecz przepisuje wszystkie wartości w takiej postaci w jakiej mu je podałem. Proszę o udzielnie jakichś wskazówek.

Edytowane przez [Dante]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale żeś namachał. Po kiego kija używasz funkcji succ???? A nie lepiej napisać X:=X+1;? I każdy by wiedział o co chodzi. Według Twojego programu to przy a równym na przykład 3 program będzie działać następująco:

If 3=4 {succ(3) to 4} to zrób cośtam

If 3<>4 to zrób coś innego

Sprawdź to, bo sam nie mogę - nie mam TP. Ewentualne braki wybacz ale dawno już w TP cos pisałem.

program Project_51;{$APPTYPE CONSOLE}uses SysUtils;var a:array[1..10] of integer; b,c,d:integer;begin  writeln('Type 10 numbers:');  for b:=1 to 10 do   readln(a[b]);  d:=10;  for b:=1 to 10 do  begin    if b>1 then    begin      if a[b]=a[b-1] then      begin        for c:=b to (d-1) do          a[c]:=a[c+1];        d:=d-1;      end;     end;   end;   for b:=1 to d do     write(a[b]);          end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Działa lepiej niż moja wersja :) ale wciąż niepoprawnie. Np. przy wpisaniu cyfr "1122234556" wypisuje "1223". Popróbuję modyfikacji tego kodu, zobaczymy czy coś uzyskam.

 

Dzięki za pomoc.

 

EDIT: Delphi zapisu [x-1] nie traktuje jako poprzednika 'x' tylko odejmuje 1 od 'x'. Więc nie mogę raczej stosować tego rodzaju zapisu.

Edytowane przez [Dante]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Działa lepiej niż moja wersja :) ale wciąż niepoprawnie. Np. przy wpisaniu cyfr "1122234556" wypisuje "1223". Popróbuję modyfikacji tego kodu, zobaczymy czy coś uzyskam.

 

Dzięki za pomoc.

 

EDIT: Delphi zapisu [x-1] nie traktuje jako poprzednika 'x' tylko odejmuje 1 od 'x'. Więc nie mogę raczej stosować tego rodzaju zapisu.

1736363[/snapback]

Na pascala to juz mnie mdli <_<

wskazówki :

1)a kto ci powiedział że to muszą być liczby ? Klepnij literkę i enter a będzie nieprzyjemnie

2)Uzywaj stałych słowo const nie gryzie

3) do oznacznia indeksow uzywa sie zwyczjaowo i,j,k,l... - w takiej kolejnosci

a nie b

 

Opis algorytmu:

1)Wczytaj łańcuch znaków do tablicy

2) zapisz sobie znak pusty '\0' w zmiennej np. aktualny;

a w pętli

for i to N do  begin              if aktualny<>tab[i] then               begin                  aktualny:=tab[i];                  writeln(tab[i]);              end;  end;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...