[Dante] Napisano 1 Listopada 2005 Zgłoś Napisano 1 Listopada 2005 (edytowane) 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 1 Listopada 2005 przez [Dante] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach More sharing options...
Excray Napisano 4 Listopada 2005 Zgłoś Napisano 4 Listopada 2005 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach More sharing options...
[Dante] Napisano 4 Listopada 2005 Zgłoś Napisano 4 Listopada 2005 (edytowane) 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 4 Listopada 2005 przez [Dante] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach More sharing options...
Haquim Napisano 4 Listopada 2005 Zgłoś Napisano 4 Listopada 2005 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; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach More sharing options...
[Dante] Napisano 5 Listopada 2005 Zgłoś Napisano 5 Listopada 2005 (edytowane) Nikt już nie pomoże? Nawet poradą? B) Edytowane 9 Listopada 2005 przez [Dante] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach More sharing options...