GRY-Online.pl --> Archiwum Forum

Pomoc w Turbo Pascal

26.11.2008
21:39
smile
[1]

struss [ Legionista ]

Pomoc w Turbo Pascal

Witam. Mam ogromn� pro�b� o pomoc w zadaniu kt�re brzmi:
Napisz program z procedur� kt�ra we wczytanym ci�gu znak�w zamieni wszystkie wyst�pienia A na B i na odwr�t. Ci�g znak�w wczytywany za pomoc� programu g��wnego i wszystkie zmienne globalne.

Tu w spoilerze dam tre�� programu kt�ry napisa�em i po 1,5 godzinnym szukaniu wydaje si� najbardziej prawdopodobny i dzia�aj�cy w teorii ale nie w praktyce. Mo�e kto� si� zna i pomo�e, robi� kiedy� co� takiego, widzi jaki� b��d w moim programie lub potrafi znale�� odpowied� na to zadanie w internecie. Przyda si� ka�da pomoc :D
Z g�ry dzi�ki.


spoiler start

Program zad4;
Uses
crt;
Var
wejscie,wyjscie:String;
i:Byte;
l:Char;
Procedure obroc;
Begin
for i:=length (wejscie) downto 1 do
Begin
l:=wejscie;
if l='a' then
Begin
wejscie:='b';
wyjscie:=wyjscie+wejscie;
End
else if l='b' then
Begin
wejscie:='a';
wyjscie:=wyjscie+wejscie;
End
else wyjscie:=wyjscie+wejscie;
End;
End;
Begin
clrscr;
wyjscie:='';
writeln ('Wprowadz znaki');
readln (wejscie);
obroc;
writeln (wyjscie);
readln;
End.

spoiler stop


PS
Je�eli w celu zdiagnozowania b��du mam wypr�bowa� jakie� kombinacje to napiszcie jakie.

PS2
Wydaje mi si� �e b��d nastepuje w tym momencie poniewa� zmiennej typu Char przypisuj� zmienn� typu Byte. Niestety nie wiem jak to zast�pi� i zrobi� tak �eby dzia�a�o :P

l:=wejscie;

26.11.2008
21:55
[2]

GBreal.II [ floydian ]

Program zad4;
Uses crt;
Var
wejscie,wyjscie:String;
i:Byte;
l:Char;
dlugosc:integer;

Procedure obroc;
Begin
dlugosc:=length(wejscie);
for i:=1 to dlugosc do
Begin
l:=wejscie[ i ];
if l='a' then
Begin
l:='b';
wyjscie:=wyjscie+l;
End
else if l='b' then
Begin
l:='a';
wyjscie:=wyjscie+l;
End
else wyjscie:=wyjscie+l;
End;
End;
-------------------------------------
zmieni�em tylko to, co wida�. Reszta zostaje z Twojego programu.
1. Dlaczego p�tla jest od ko�ca do pocz�tku? W takim przypadku program wypisze Ci to, co zamieni� od ko�ca...
2. B��d podczas kompilacji pojawia� si� w momencie, kiedy chcia�e� "dosta� si�" do pojedynczych liter w s�owie - je�li chcesz to zrobi�, musisz odwo�a� si� do konkretnej litery - typ 'string' to w�a�ciwie tablica zmiennych typu 'char', wi�c do kolejnych liter odwo�ujemy si� tak jak do element�w tablicy.
3. Te przypisywania, kt�re robi�e� nie dzia�a�yby. Maj�c "wyjscie:=wyjscie+wejscie; " przy ka�dym wyst�pieniu literki 'a' dopisywa�by� do wyj�cia ca�e wczytane s�owo, a chyba nie to chodzi�o.

Mam nadziej�, �e pomog�em :) Jakby co - pytaj :)

26.11.2008
22:10
[3]

DEXiu [ Genera� ]

Dlaczego w spoilerze?! :| Ma to jakie� g��bsze uzasadnienie opr�cz ch�ci bycia fajnym i jednoczesnego zniech�cenia kogokolwiek do rzucenia cho�by okiem na ten kod?

Kilka rad na przysz�o��:
GBreal.II ju� ci napisa�, �e string to tak jakby tablica char�w, wi�c odwo�uj�c si� do pojedynczej litery musisz indeksowa� tak jak tablic�.
Poza tym chyba "poprawniej" (tzn. �ci�lej wed�ug tre�ci zadania) by�oby nie tworzy� stringu wyj�ciowego tylko modyfikowa� wej�ciowy i jego zwraca� (g�owy sobie za to uci�� nie dam, ale w Pascalu chyba mo�na modyfikowa� pojedyncze litery w stringu).
Dobrze jest przy procedurze/funkcji bez parametr�w pisa� puste nawiasy (tzn. np tak: procedure obroc(); ) i przy wywo�aniu tak�e - dla poprawy czytelno�ci i u�atwieniu domy�lenia si� intencji autora. Opr�cz tego dobrze jest wywo�uj�c funkcj� (np. length) nawiasy z argumentami umieszcza� bezpo�rednio za nazw� (czyli np. length(wejscie) a NIE length (wejscie) ) - chodzi o wyrobienie sobie nawyk�w bo w niekt�rych j�zykach spacje maj� znaczenie i b�dzie si� rzuca� o to.
I na koniec najwa�niejsze: mam nadziej�, �e pisz�c program stosujesz wci�cia (spacje albo tabulatory) i og�lnie jaki� spos�b formatowania tekstu? Nie czepiam si� tego tutaj, bo GOL automatycznie usuwa whitespace'y na pocz�tku linii, ale przy programach d�u�szych ni� kilka(na�cie) linijek wci�cia jednak si� przydaj�.

26.11.2008
22:55
[4]

HondoX [ Konsul ]

to na tym sie jeszcze pracuje o_O? mysla�em ze wurzytku jest juz tylko C++

26.11.2008
23:04
smile
[5]

struss [ Legionista ]

Wielkie dzi�ki za profesjonaln� pomoc. To przywraca nadzieje �e cho� niezbyt cz�sto pisz� to s� na tym forum warto�ciowi ludzie a nie sami spamerzy, z�o�liwcy lub dzieci.

Co chcia�em doda� od siebie: Jestem totalnym amatorem w programowaniu - ucz� si� sam, stawiam sobie w�a�nie takie trudne zadania �eby si� doskonali�. Zacz��em 2 tygodnie temu a �e nie zawsze mam czas to uczy�em si� mo�e z 15 godzin. Dlatego wezm� sobie do serca Wasze rady.


Par� s��w do DEXiu :)
Poza tym chyba "poprawniej" (tzn. �ci�lej wed�ug tre�ci zadania) by�oby nie tworzy� stringu wyj�ciowego tylko modyfikowa� wej�ciowy i jego zwraca� (g�owy sobie za to uci�� nie dam, ale w Pascalu chyba mo�na modyfikowa� pojedyncze litery w stringu).

Na razie jeszcze do tego nie doszed�em tak�e nie chcia�bym sobie namiesza�.

Dobrze jest przy procedurze/funkcji bez parametr�w pisa� puste nawiasy (tzn. np tak: procedure obroc(); ) i przy wywo�aniu tak�e

Nie wiedzia�em o tym, spr�bowa�em i nie dzia�a :P . Po zastosowaniu pustych nawias�w przy pr�bie kompilacji wyskakuje Error 2: Identifier expected.

Opr�cz tego dobrze jest wywo�uj�c funkcj� (np. length) nawiasy z argumentami umieszcza� bezpo�rednio za nazw� (czyli np. length(wejscie) a NIE length (wejscie) )

Zapami�tane :)

I na koniec najwa�niejsze: mam nadziej�, �e pisz�c program stosujesz wci�cia (spacje albo tabulatory) i og�lnie jaki� spos�b formatowania tekstu?

Pisz�c program stosuj� wci�cia tzn. rzeczy odpowiadaj�ce sobie takie jak Begin-End czy if-else stawiam w tej samej kolumnie ale jak sam stwierdzi�e� GOL zmaza� spacje.

Dlaczego w spoilerze?! :| Ma to jakie� g��bsze uzasadnienie opr�cz ch�ci bycia fajnym i jednoczesnego zniech�cenia kogokolwiek do rzucenia cho�by okiem na ten kod?

Zrobi�em to w odwrotnym celu ale jak wida� nie bardzo mi wysz�o. Powod�w by�o par�:
- Chcia�em �eby osoba najpierw przeczyta�a wst�p a nie rzuci�a si� na kod.
- Aby post by� bardziej czytelny. Ze swoich do�wiadcze� wiem �e je�eli post jest obszerny to po�owie w og�le nie chc� si� go czyta�.
- Podejrzewa�em �e w pisz�c kod nie ca�kiem poszed�em w dobrym kierunku a co za tym idzie, wyszed�em z za�o�enia, �e gdy znajdzie si� osoba kt�ra zechce mi pom�c a niezbyt ma poj�cie w tej dziedzinie, nie zasugerowa�a si� moim z�ym kierunkiem my�lenia tylko zrobi�a w�asny kod.





No to w sumie tyle i jeszcze raz dzi�ki.

© 2000-2024 GRY-OnLine S.A.