programavimas c,pascal
DESCRIPTION
c++TRANSCRIPT
� ��
�
� � � � � � � � � � � �
��� ����������� �� � �����
II dalis
�������� �������������� ������ ���� ���� �� �� ��
����� ��� ��� ���� �����������
���
������
������������ �
� � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � ! � � � � � � � � � ! � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
�
������� �
�������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �� � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
���� � � � � � � � � �� � � � � � � � � � �� � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � �
��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� ��� � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �"�"�" �#$%&' �%($%&%�)))))))))))))))))))))))))))))))))))))))))))))))))))))))))) * �"�"�" ��+,$�-%� )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) * �"�"." �$�/��0 1��2�2-2�1#�($�2��#$%&' �(%3%�0 ' � )))))))))))))))))))))))))))))))))))) �� �"�"4" 512$(1��2�2-2�1#�6��#$%&' �($%78�# )))))))))))))))))))))))))))))))))))))))))) �� �"�" " ��2-2�1' �612$(�-%���#$%&' �9�7�/2��(' �+:' /' �2�2-2�1' ))))))))))))))))))))))))) �. �"�";" �%�%�+��1��2�2-2�1#��&��#$%&' �($%78�' �)))))))))))))))))))))))))))))))))))))) � �"�"*" ��2-2�1' �(%�%�+���-%���#$%&' �(%3%�0 ' /2 ))))))))))))))))))))))))))))))))))) �* �"�"<" �%�%�+��1��2�2-2�1#��&��#$%&' �9�7�$�' )))))))))))))))))))))))))))))))))))))) �< �"�"=" ��+$2�(1��$' 7>+�? �6�+:#/6��#$%&' �2�2-2�1#))))))))))))))))))))))))))))))))))) �� �"�"��" �' 7>+�@����+$2�(�-%��6�($�2&(%�+�1��6�2�2-2�1# ))))))))))))))))))))))))))) �� �"�"��" 1�(%��7��1��9�2�(���' ��#$%&' �2�2-2�1�����' �($%78�' �))))))))))))))))))))))) �� �"�"��" 1�(%��7��1���#$%&' �2�2-2�1�����' �(%3%�0 ' �))))))))))))))))))))))))))))))) ��
� �� � � �� � � �� � ! � �" # $ � % �� & ��� ' # ( ) ( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � * �"�"�" ($%&%�)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) �4 �"�"�" 512$(1��2�2-2�1#�79�(���' ��#$%&' �9�7�/2�(' �+:' /' �2�2-2�1' ))))))))))))))))))))) � �"�"." �%�%�+��1��+:#/6�2�2-2�1#��&��#$%&' �9�7�$�' )))))))))))))))))))))))))))))))))) �*
� �+ � � % , " ( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � + - �"."�" ��+�$1���12+#����9�2���2�2-2�1�)))))))))))))))))))))))))))))))))))))))))) .� �"."�" 57@1��2�2-2�1#�6��12+#�A' (2$%B�/%�����C ))))))))))))))))))))))))))))))))))))) .� �"."." �%�%�+��1���12+' �2�2-2�1#�A' (2$%B�/%�(' (C )))))))))))))))))))))))))))))))))) .�
� �* � � �./ � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � + + �"4"�" ��+�$1��2��? )))))))))))))))))))))))))))))))))))))))))))))))))))))))))) .. �"4"�" 57@1��2�2-2�1#�6�2��? )))))))))))))))))))))))))))))))))))))))))))))))))))) .4 �"4"." �%�%�+��1��2��@��2�2-2�1#)))))))))))))))))))))))))))))))))))))))))))))))) .
� ��� � ( � $ 0 ! 1 �( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � + 2 �" "�" ��2�(���' ��#$%&' ���+,$�-%���$��(%��7���-%� ))))))))))))))))))))))))))))))))) .;
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
+ ��� 3 � ( ! ( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � * +
+ �� � � ( � " ( .$ 4, � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � * + ."�"�" �1$%&1@ ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 4. ."�"�" (�3$@8�-D �7%��� )))))))))))))))))))))))))))))))))))))))))))))))))))))) 4. ."�"." �2�+�-D �7%��� )))))))))))))))))))))))))))))))))))))))))))))))))))))))) 44 ."�"4" ���B�%��E%9�-' �7%��� )))))))))))))))))))))))))))))))))))))))))))))))))))) 44 ."�" " �$%����%9�-%�))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 44
+ �+ � 5 � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � * * ."."�" �1$%&F �D �G%��D �+,$�-%� ))))))))))))))))))))))))))))))))))))))))))))))))) 44 ."."�" �2��D �G%��D �1$%����%9�-%����%�7' /%�1�0 BB )))))))))))))))))))))))))))))))))))) 4 ."."." �$%����%9�-%��+�1�$ )))))))))))))))))))))))))))))))))))))))))))))))))))) 4
+ �* � � ( � $ 0 ! $ � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � * � ."4"�" �%�B%� ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 4
� .�
."4"�" � )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 4*
� � ��! �"�"# �$ % & "% '( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �)
* ��� � � �6 7 ! � .�� � � ( � " ( .$ 4, & � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � * 8 4"�"�" �2�+�-%�����7%1%��$��%�+� )))))))))))))))))))))))))))))))))))))))))))))))) 4= 4"�"�" �2�+�-%�����G%��%�� ))))))))))))))))))))))))))))))))))))))))))))))))))))) 4=
* �� � � % ( 9 ! ( # % �9 / � �5�:� 9 " ; �47 � �! ( # < � ��� � �.( �" � ��# �! ( % ( � � � � � � � � � � � � � � � � � � � � � � � � � � � � �+
* �+ � � � , # ( ; �9 / � �� �� % , 6 7 � �" 7 6 ( 9 ! =�� $ " ! $ 6 ( � �5�� # 7 > # ( 6 7 4, � � � � � � � � � � � � � � � � � � � � �*
� � � � � � � � * � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
���� � � �< # / 1 % �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
��� � � ( � $ < / � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
��+ � , " � # � �9 �=�� # 7 ; , ! ? # =�:7 # 6 7 � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
, " � # � �4( ��# ��% , # ( ; �4( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �2
� ( � $ 0 ! 1 �( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �2 "."�" ! %+1' $�%�' ��+%�F �%9�-%� ))))))))))))))))))))))))))))))))))))))))))))))))) ; "."�" ��2�+$>(F �' ��#$%&' ��(%��7���-%��%19�$+&F �%�19%$+% )))))))))))))))))))))))))))) < "."." �278�' �%(@/�-' �$2+�$����%��%�0 ' $�1-%� ))))))))))))))))))))))))))))))))))))) < "."4" �%�/' ��$2�&+-@��61$%�+�-%��6�792/21%��6�(%�2&+' ��-276 )))))))))))))))))))))))) ;�
+ � , -.�/ .�% �"# '.( 0.�# �1 �& 2 '��(�2 ( "% ��3 ��'2 % �.���" � � � � � � � � � � � � � � � � � � � � � � � � � � + �
2 ��� � .> 7 # �%6 7 �( � # ( ) ( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 2 �
2 �� � � .> 7 # �%6 7 �� � ! / % �9 > � 6 7 �� , # % �9 �6 ( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 2 �
� � .�! % '.4 �( .'# ��"� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � + �
���� � �6 < 7 .�( ���# �, �.� % / � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 2 �
��� � � �6 < 7 .�=�, �.� @ �=�( � # ( ) $ 6 ( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 2 � *"�"�" ��-3' ��D �+' ��1%�1% )))))))))))))))))))))))))))))))))))))))))))))))))))) ;* *"�"�" ��-3' ��D �2���1@ ))))))))))))))))))))))))))))))))))))))))))))))))))))))) ;* *"�"." ����1@��6927�-%��A�1%�7%$1��@��G��+B�/' ���&��17�' "H C ))))))))))))))))))))))))))) ;= *"�"4" ����F �D ��&927�-%�)))))))))))))))))))))))))))))))))))))))))))))))))))))) *� *"�" " ��1' ���1$��0 "H �G��+B�/' �))))))))))))))))))))))))))))))))))))))))))))))))) *� *"�";" ����F �D �%(7' $' /�-' �' (2$%B�/' � ))))))))))))))))))))))))))))))))))))))))))) *� *"�"*" ����F �D �(%�>0 ���-%� )))))))))))))))))))))))))))))))))))))))))))))))))))) *. *"�"<" �%�2&+%�2���1@�2 ))))))))))))))))))))))))))))))))))))))))))))))))))))))) *4 *"�"=" �%��+�$�' ����-3' ��D �%(7' $' /�-' �G��+B�/' �����&�B1>(2"H ))))))))))))))))))))))))) * *"�"��" ��1' ��G��+B�/' � )))))))))))))))))))))))))))))))))))))))))))))))))))))) *
� ( � $ 0 ! 1 �( � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �2
.�(���, �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �5 ��
� 4�
Pratarm�
�21' 7��@�($�2-' �@�I�$' 0 $%-%9�-%���%�+%�����$�������7%���J �>$%��+�$1%���+�$�' �-%12-%1�+' ���$��1%1��1�+' ���1�7�/D �+$>(F �D ��1�72�1%-�"����%(�-%���G' $-%1�+' ��7%�>+' �%�1$' ��2-2�1$' �($' 0 $%-#"�K��($�2-' �@�(%(��7' �7' B"�7$"��"��%0 %�&�' �-21' 7��? �($�2-' �? �L�M�($' 0 $%-%9�-' �%�(2+1�"��' /2�>$%�(%12�+�%-��($' 0 $%-%9�-' ��#9' +D �$2%��E%9�-' ��%�+%�����$���(%9>E78�%�"��%�0 2�>/2��+>$�D ���,�' -%�����(%8��1�����L�M�($�2-' �@/2��&7@�1>1%�-278�%0 %��$�1' ��%���%0 $��@1��F �%�(%12�+�%-���(%9>E78���"�
K��-278�%0 %�>$%��+�$1%�($' 0 $%-%9�-' ��%�/' +%-�"��' /2��12�0 �%-%���+�' �(%($%�F �%���$2-�%�1��������1$%B�/' -����$�/%��%1�1��+%�F �' -���+' 7' �2���1@-����&7@�1>1��7��%-���' �($' 0 $%-%9�-' �-21' 7�+#"� %3�%��(%82�0 ���2-��($' 0 $%-%9�-2����,�>F �%���+%�1>1��+�1%���%�+&12��6�8���D ��>0 6�%1�1��+%�F �%��-' +>-' �($�2-' �2��L�M��L4M"��%�+�1������+>$������+�$1%����-3' ��D �2���F �D �%(7' $' /�-�����+%�3' /2��>$%�G%+��1%1>9����"��2%��E�' 1����-3' ��D �2���F �D �%(7' $' /�-' ��87�' 16�($�9%�' -%�1�+��%�+%��' �+%�3%"�� 8���+%�3' ��$2%��E%B�/#��1�72�1���>$%���12�+�%-��(%(��7' -��1%&+%�"�
K�' /2�-' +>-' �($�2-' �@/2�>$%���,�' -%�&���-' +>-' ����B2�%$�/��N�
�C��&�%0 $��@1��L�M�-21' 7��@/2�($�2-' �@/2�(%12�+1#��#9' +' ��%(�3,7���-#N�
�C��&�%0 $��@1��&�' /2�-21' 7��@/2�(%12�+�%-���$2%��E%B�/' ��(%%�&+���-�����
.C�($%1>3D �-21��0 %�1#��87�' 16�($%7@1��$%&>1����' �(%9>E78�' ��(%12�+1' �&�' /2�-278�%0 ' /2��
4C�(2$19%$+>1��(%9>E76��%1��892�0 �%�1�6�0 %�1#��87�' 16"�
�#9' +D �$2%��E%B�/%�>$%������1$�' /%-%��%�+%��' ��$���($' 0 $%-%9�-' �+%�3D �(%9>E78�%��"��#-' ���0 %���12�0 �%-%���(%12�+1��9�2�#�A%�1' $@����' -' �2�(%($%�12��6C�$2%��E%9�-' �3,7#��$�92�0 1��9��D �+%�3' ��0 %��->3�D ��$���31��>3�D �7@�1>-' "��
K��($�2-' �@��2�78�%�(%��$�' &1���+%�1>1���$���($%�1��($' 0 $%-%9�-' ���12$%1,$#���+�$1#��+%�1>1' /������($%�1%�F �%-�3%E��2��($' 0 $%-%9�-' ��#9' +%�"��
� �
1 . DINAMINIS ATMINTIES IŠSKYRIMAS
1.1. STATINIS IR DINAMINIS ATMINTIES IŠSKYRIMAS
1��892�0 �%�1�6�20 E��1%9�-' �1$�+-? ��$��72�1�G�+%9�-' �3,7#��+��1%-�2/��>$%��+�$�1' -��6��1%1�������$�7��%-�����"��
�1%1���%��+��1%-�2/���72�1�G�+�' /%-��9%$7%��"�K�2�+��1%-�2/��%1��$%�7%��1%��>$%�/D �$2�+&-@-��>$%��+�$�%-%�9�21%�%1-��1>/2��($%7@/���9>+7>1��($' 0 $%-#��+�$�' /2�/�2�>$%�%($%&>1�"��' +�2�+��1%-�2/��9%7��%-���1%1���%�����2��/D �20 E��1%9�-#����%+' �1D �+��1%-D /D �%($%&D �9�21%�($' 0 $%-' ��12+�12"�
���%-���%��+��1%-�2/����+�$�%-���9>+7%�1�($' 0 $%-#��+�$�' /2�>$%��1%�7%$1��@��+��1%-' /' �+,$�-' �Anew��mallocC��$��%�+���-' �Adispose��freeC�($' B27,$' �"���2�9%7��%-��7��%-���%���1' 7@���+%7�/D �20 E��1%9�-' �1$�+-? ����%+' �($' 0 $%-' ��%1��+�-' �($' B2�%�"����%-���%��+��1%-�2/���72�1�G�+�' /%-��$' 7>+�@-��"��' 7>+�@�O�1%��$' 7>+�@��1�(' �$2�+&-@"��
� ���� � ��� � ��� ���� ��� � � �� � ���� � � �� �� ����� � ��� ��� � � ��� � � � �� � � ��� � ��� �� ��� ������ �� ���� � �� � � � ��� �� �� �� ������ ���� � �� �� ���� �� ���� � �� ���� �� � �� ���static� �� � � �� � ������ � � �� ������ � ��� � �� � ���� � ��� �� � � � �� � �� � �� � �� ��� � ��� �� ��� ���� �� ���� ������� ��� �� � �� � �� ��� ����� �� ������! � � �� ��� � � � ���"�� �� �� #��� ������ �� �� ���
($%&%�1�7��%-������+��1%-�' ������+��1%-D /D �%($%&D ��+>$��/2���$' 7' -%���2�(%1��+��1%-%�����' �$' 7>+�@�6�/6"��%�0 ���$' 7>+�@�>$%�6($%�1%��+��1%-%�����' �+��1%-%����6�+�$6���$' 7' �$' 7>+�@�O�7��%-����"�
1.2. RODYKL�S
�%�7' /%�1�$' 7>+�2��6�+��1%-#/6��+��1%-%����>$%�%(7' $' /%-%���' (2$�' /%�1�/' �%7$2��"��
P 2-�%��(%12�+1�' �2�($' 0 $%-D �G$%0 -2�1�' �2������1$�' /%-%���1%1���D ��$�7��%-���D �+��1%-D /D �%($%&>-%���$��%�7' /�-%�"��%$�+%$1#�(%�123@+�-2��+%7�&�%-2�+' 7' �G$%0 -2�12�+��1%-%����zv�>$%��1%1������%�+%��' �+%�3' ��12$-���/' ��($%�-2��1%��>$%�1�$�-%�' -2�>/2��+%7�/%-2�>$%��%�0 ' -%�$2�+&-@"�' ��2�$' 7>+�@"����1%-%����zv_rod�>$%�$' 7>+�@"�
�%�+%���� ��
program stat_dinam;
var zv_rod: ^char;
zv: char;
begin
zv := '*' ;
zv_rod := addr(zv);
end.
#include <stdio.h>
int main()
{
char *zv_rod, zv;
*zv_rod = '*';
zv_rod = &zv;
}
�:��(%9"�(%9%�E7�' /%���1�%B�/#�%1-��1>/2��%1��+���(%12�+1%-2�G$%0 -2�12���$' 7>1���92�+�-��"�
� ;�
�
�' 7>+�@��+��1%-%����0 %���3,1��&�' �2�3,�2�' �2N�
�C��%-2�0 %���3,1��6$%&>1%��7��%-���' �+��1%-' /' �%7$2�%���+�$�%-�>$%��&�+�$1%��9�21%��$�($��+�$1%�$2�+&-@�A8$"��:��(%9"C"�
�
�C��%-2�0 %���3,1���(2B�%����1�&F �%����-3' ���"��%�+%��' �+%�3' /2�&�����-3' ����>$%�9%7��%-%��NIL�A8$"��:.�(%9"C"���+%�3' /2�1�&F �%����-3' ����>$%�NULL"��
�
.C�����0 %���3,1���2%(�3$@81%��A8$"��:4�(%9"C"�
�
K�' /2�3,�2�' /2�$' 7>+�@�>$%�($' 0 $%-' ��7%$3' �($%78�' /2��+' ���2($��+�$1%��/' +��%7$2�%���$�1�' -21��+%��%1-��1�2���#�12�@��6�+�$�#�$' 7' �$' 7>+�@��>$%�%1�%��9��%-%"��' 7>+�@�7%$���12$%1,$' /2�0 %���3,1��9%7��%-' ����' $' 7' -��"�
�
$%$���� ��& ��'��� ���� � �� � �� �� � � ����� ��( � �� �� �������� ������ ! ��� ���� ������� ���� �� �� ���
$%)���� ��* �����+ ���� � � � ���
$%,���� ��- ��. �� ����� � � � ����+ � � ���� ���� ��� ��� � �
$%/���� ��0 ������+ ���� � � � ���
� *�
2 . DUOMEN� STRUKT�ROS
2.1. VIENPUSIS S�RAŠAS
��2�(������#$%&%��>$%�1' +�%�7�' -2�D ��1$�+1,$%��+�$�' /2�+�2+9�2�%����&�+>$���(%�+�1��6���#$%&' �2�2-2�1%����$' 7' �2��%�16�(' �/' �2�2-2�1#�A8$"��:��(%9"C"�����-%����8���D �$��+��>��%(�2�&�#�7�' -2�D ��1$�+1,$#�>$%�(%12�+�%-%��L�M�-21' 7��@/2�($�2-' �@/2N�H 11(NQ Q R R R "-�G"9�"�1Q S $%0 %����Q ��G�9%7%�Q ��' -�1$"H 1-��
�2+' -2�7�' /��(%�+%�1>1��12��(%12�+1#�-278�%0 #��($�2&�($%727%�1�-' +>1���($' 0 $%-�' 1��7��%-��2���1$�+1,$%�"�
2.1.1. S�rašo aprašas
�
��2+9�2�%���72�1�G�+%1' $����1�$��3,1��%($%&>1%��($�2&�/' �(%�%�7' /�-#�+�1�' �2�%($%&�' �2"�($%&%�1�7��%-������+��1%-�' ������20 %��-%��&��92$�1���$�7��%-��@���1$�+1,$' ��2�2-2�1%-��>$%�(%7%$>1%��&�-1��"��%�+%�>/2�$' 7>+�@�6�7��%-��@���1$�+1,$' ��2�2-2�1#�1�$��3,1��%($%&' -%�($�2&�1' �2�2-2�1' �%($%&#"���+%�3' /2�1%�(�(%1�1�(' �%($%&2��%�7' /%-%��$2+�$���@���' $' 7#�6�%($%&' -#�1�(#"�
�%�+%���� ��
type rod = ^el; el = record duom : integer; kitas : rod;4 end;�
struct el { int duom; struct el *kitas; };
�
2.1.2. Suk�rimas
��2�(������#$%&%��>$%���+�$�%-%���+%��6�/6�61$%�+�%-%��(�$-%��2�2-2�1%�"���2�(���%-2��#$%&2�(%($%�1%���%�7' /%-2�7��+��1%-�' ����:$' 7>+�2���+�$�2�$' 7' �6��#$%&' �($%78�#��$�(%3%�0 #"��$%78�' /2�>$%�%($%&' -' ���#$%&' �($%78�' ���(%3%�0 ' ��$' 7>+�@�"��elem�O�7%$3��@�$' 7>+�@��$2�+%���0 %�7%$3�������#$%&�"�
�%�+%���� ��
var pradzia, pabaiga, elem : rod;� struct el *pradzia, *pabaiga, *elem;�
�' ��7%$�$' 7>+�@-���2($��+�$1' ��$2�+&-@���/' ��>$%��2%(�3$@81' ��A8$"��:��(%9"C"�
�
)%$���� ��1 � ����� ������� �! ��'��� ������ ��( � �� �� ���
)%)���� ��* ����� �� �� �� � ���� ������� ��� ����� ������ � ���� �� �� ��
� <�
�
�C���&F �' ��#$%&' ���+,$�-%��
��&F �%���#$%&%��>$%���+�$�%-%���+%��($%78�' ���$�(%3%�0 ' ��$' 7>+�@-��>$%�($��+�$�%-%��1�&F �%����-3' ���N���
�
�%�+%���� ��
pradzia := nil;
pabaiga := nil;�
pradzia = NULL;
pabaiga = NULL;�
�
�' �&�D �92�+�-D �+��1%-D /D �3,�2�%��(%9%�E7�' /%��:.�(%9"�
�
�
�.C���$-%/%-��#$%&' �2�2-2�1����&�+�$�%-%�%1-��1��"��
�%�+%�>/2��%�/%��2�2-2�1%��>$%���+�$�%-%����%�7' /%�1�($' B27,$#�new()"�P 2-�%��(%12�+�%-%�������1$%B�/' /2�(%9%�E7�' 1' ����1�%B�/' ��%($%&%���%�+%���"���+%�3' /2���%�7' /%�1�%1-��1�2���&�+>$�-' �G��+B�/#�malloc()��$2�+�%�($�/��0 1��%�1$%&F �D �G%��#�stdlib.h��+�$�%-2�>$%�&�' ��G��+B�/' ��($' 1' 1�(%��A(�$-%9%�E7��C"�
�
�%�+%���� ��
new ( elem );� #include <stdlib.h> … elem = (struct el *) malloc ( sizeof ( struct el ) );
�' �&�D �92�+�-D �+��1%-D /D �3,�2�%��0 $%G�&+%��(%9%�E7�' /%���:4�(%9"��%-2�$' 7>+�@/2�elem /%��(%1%�(��1%��(�$-%-��#$%&' �2�2-2�1����&�+�$1' ��%1-��1�2��%7$2�%�"�
�
�
)%,���� ��- ��. ������������
)%/���� ��& ��'��� ���� � �� � �� �� � � ���� ��( � �� �� ��
� =�
4C���$-%/%-�2�2-2�1���($��+�$�%-' ��$2�+&-2�"��
�%�+%���� ��
elem^.duom := 3;
elem^.kitas := nil;�
elem -> duom = 3;
elem -> kitas = NULL;�
�K���+' 7' �G$%0 -2�1%��(%+2�1@�7��%-���' �+��1%-' /' �3,�2�#��A8$"��: �(%9"C"����%-���' �+��1%-' /' ��%�+%-��>$%�($��+�$1' ��$2�+&-@�"�
�
�� �8��0 ����"���+$2�(�%-2��#$%&' �($%78�' ���$�(%3%�0 ' ��$' 7>+�2��6�(�$-#���+�$1#�2�2-2�1#�A8$"��:;�(%9"C"��
�
�
�:;�(%9"�$' 7>+��D ��(%�9%�%1�1��+%�+' 7' �2���1@���(%�9#N�
�
�%�+%���� ��
pradzia := elem;
pabaiga := elem;
pradzia = elem;
pabaiga = elem;�
)%2���� ��3 � �� � �� �� � �� � �� ����� �� ��� ��������� ����� � ��� �� �� ���
)%4���� �������� ����� + �� ����������! � ���� � � � ��� ����� ��� ���������� ���� � � ��
� ���
2.1.3. Prijungti element� prie s�rašo pabaigos
�$%7��@�3,�2�%N��#$%&2�>$%�9�2�%��2�2-2�1%���6�+�$6�>$%���+$2�(1' ���#$%&' �($%78�' ���$�(%3%�0 ' ��$' 7>+�@�"��%0 %�3���' �2�2-2�1' �elem�$2�+&-@��2%(�3$@81%�A8$"��:*�(%9"C"�
��
�C 1-��1�2���&�+>$�-%���%�/%-�2�2-2�1����$�$2�+&-�D �($��+>$�-%�"��
�
�
�%�+%���� ��
new ( elem );
elem^.duom := 5;
elem^.kitas := nil;�
elem = (struct el *) malloc( sizeof(struct el));
elem->duom = 5;
elem->kitas = NULL;�
�
.C���2-2�1' �����2/�-%�����2�%-���#$%&�"�
�#$%&' �0 %�' ���' $' 7%���+$2�(�%-%�6�($�/��0 �%-#�2�2-2�1#"�T �9? ��(%�+�1�����2�2-2�1%��1%�(�(%1�1�$��$' 7>1��6�($�/��0 �%-#�2�2-2�1#"�
�
�%�+%���� ��
pabaiga^.kitas := elem;
pabaiga := elem;
pabaiga->kitas = elem;
pabaiga = elem;�
)%5���� ��6 � � � ������ ! �� � ���� ������� ����� � ����� ����
)%7���� ��8 �� �� �� � ����� � � � �������� � ��� ���
� ���
�
2.1.4. �terpti element� � s�rašo pradži�
�C��$%7��@�3,�2�%N��#$%&2�/%��1�$��3,1��32�1�9�2�%��2�2-2�1%�"��:���(%9"�(%9%�E7�' 1%���#$%&%�����1$�-���2�2-2�1%��"�
�
��8��0 ����"�1-��1�2���&�+>$�-%���%�/%-�2�2-2�1����$�$2�+&-@��($��+>$�-%��
�
�%�+%���� ��
new ( elem );
elem^.duom := 5;�
elem = (struct el *) malloc( sizeof(struct el));
elem->duom = 5;�
K�%-2�21%(2��&�+�$�%-2�9�21#��%�/%-��#$%&' �2�2-2�1��"��' �7�' -2�D ��%�+���($��+�$�%-2�$2�+&-? �A8$"��:���(%9"C"��
)%9���� �������� ������! � �� �� �� � � �� �� � ���� ���"� ������������� ������! ��
2 4 3
nil
pradzia pabaiga
?
elem
)%$: ���� ��0 ���� � � � � �" ���� � �"������� ����� + ������� � ����� �����
� ���
�
.�8��0 ����"���2-2�1%��($�/��0 �%-%��($�2��#$%&' "�
��%�+%���� ��
elem^.kitas := pradzia;
pradzia := elem;�
elem->kitas = pradzia;
pradzia = elem;�
K�%-2�+' 7' �G$%0 -2�12�%($%&' -%���1�%B�/%�0 $%G�&+%��(%9%�E7�' /%-%��:���(%9"�
� � �
�
�� �� � � � ���
�����
�� �
�
)%$$���� ��� ���� ! ��� � � � � � ���� ��� ������� �� �� �������� � ��� ���
)%$)���� ����� ��� � � � � ����� ��� �������������
� �.�
2.1.5. Elemento �terpimas s�rašo viduje, po k-ojo elemento
�$%7��@�3,�2�%N�6�+:#/6�2�2-2�1#�1�$��$' 7>1��(%(��7' -%�$' 7>+�@�elemk A8$" �:�.�(%9")"��%�(���+$2�(1��$' 7>+�? �6���-2$�����$' 7>1#�2�2-2�1#�3���%�&+��%-%���"�"=��+>$2�>/2"��
�
var elemk: rod;
��
�
��8��0 ����"��&�+�$��-2�%1-��16��%�/%-�2�2-2�1��"��
�
�%�+%���� ��
new ( elem );
elem^.duom := 7;�
elem = (struct el *) malloc (sizeof(struct el));
elem -> duom := 7;�
�
�' �92�+�-D ��%($%&>1D �&�%-2�+' 7' �G$%0 -2�12�>$%�0 %�1%���1�%B�/%��+�$�#������1$�' /%��:�4�(%9"�
4 3 5
nil
pabaigapradzia
2duom
kitas
elemk
?
elem
)%$,���� ��6 � � � �" ���� � ��� �� %� �� � � � � ����� � ����� ����
� �4�
�
�
.�8��0 ����"�����2/%-2��%�/#��$�+U ��O�/6�2�2-2�1#��$�+�:�#/6�����%�/��2�2-2�1�"�
�
�%�+%���� ��
elem^.kitas := elemk^.kitas;
elemk^.kitas := elem;�
elem -> kitas = elemk->kitas;
elemk -> kitas = elem;�
K�%��+' 7' �2���12�������1$�' /%��:� �(%9"�
�
�
)%$/���� ��; ����� � � � � � �� ��� ���
)%$2���� ������ ��� � � � � ��" ���� ����� �� %� �� � � � � � <������� ��� ������� ����� = $������� � � � � ����
� � �
�
2.1.6. Panaikinti element� iš s�rašo pradžios
�$%7��@�3,�2�%"���$�-2��#$%&#��+�$�%-2�>$%�32�1�9�2�%��2�2-2�1%�"��%�7' ��-2�(%0 %�3��6�2�2-2�1#�elem��$��1%1��6�+��1%-#/6�k���+�$1#��&�%�0 ' 1���%�+��%-' ��#$%&' �2�2-2�1' �$2�+&-? �A8$"��:�;�(%9"C"�
�
�
�
��8��0 ����"��&�%�0 ' /%-2��%�+��%-' �2�2-2�1' �7�' -2�6�(%0 %�3���%-2�+��1%-%/%-2�k"�5��&-21%-#�2�2-2�1#���+$2�(�%-2�(%0 %�3��? �$' 7>+�? �elem"��
�
�%�+%���� ��
k := pradzia^.duom;
elem := pradzia;�
k = pradzia->duom;
elem = pradzia;�
�
K�%��+' 7' �2���12�������1$�' /%��:�*�(%9"�
�
�
)%$4���� ��6 � � � � ��� � �� � ���������� ����� + �� ������ � ����� ����
)%$5���� ��6 � � � � ��� � �� � ���������� ����� + �� ������� ���� � ���� �� �� ���
� �;�
.�8��0 ����"��$%78�' ��$' 7>+�? �(2$+2��%-2�6�%�1$#/6�2�2-2�1#��(%�%�7' 7%-��(�$-' �2�2-2�1' ��%�+' �kitas�$2�+&-? "��' ��%��%1�%��9��%-2�(�$-' /' �2�2-2�1' ��8�-%-#�%1-��16"��
��%�+%���� ��
pradzia := elem^.kitas;
dispose ( elem );�
pradzia = elem->kitas;
free ( elem );�
1��+���&�%��+' 7' �2���12���$' 7>+�@�6��#$%&' �($%78�' ��$' 7>+�@�>$%���+$2�(1%�6��%�/#/#��#$%&' �($%78�#��' ��3�9���' �(�$-' /' ��#$%&' �2�2-2�1' ��8�-%-%�%1-��1���>$%�%1�%��9��1%"��%0 %�3��@�$' 7>+�@�elem�7%3%$�>$%��2%(�3$@81%"�K�%���1�%B�/#������1$�' /%��:�<�(%92�+��%�"�
�
�
)%$7���� ��6 � � � � ��� � �� ������������ ����� + �� ��
� �*�
2.1.7. Elemento panaikinimas s�rašo pabaigoje
�2��(%($%�F �%���%���&-2�1��(%�+�1��6�2�2-2�1#��6�+�$6�$' 7' �pabaiga��1%��(%-2��-2��#$%&' �9�2�1���-#"��' 7@���&�($%78�D �$2�+�%�$%�1��($�2&(%�+�1��6�2�2-2�1#��$�6�/6���+$2�(1��$' 7>+�? �elem�A+%�(�1%��(%7%$>1���%($%&>1%��"�"����+"C���
��2-2�1' ��%�+���-' ��#$%&' �($%78�' /2�($%7��@�(%7@1���(%9%�E7�' 1%��:�=�(%92�+��2"�
�
�
��8��0 ����"��%3%$�0 %��-%��%�+��1��(%�+�1��6�2�2-2�1#���&�%�0 ' /%�1��/2��$2�+�%��7�' -2�6�+��1%-%/%-2"��
�
�%�+%���� ��
k := pabaiga^.duom;
dispose ( pabaiga );�
k = pabaiga->duom;
free ( pabaiga );
K�' �2�+' 7' �2���1@�2��&�%�0 ' 1%��(%�+�1���' ��#$%&' �2�2-2�1' �7�' -�' ��$�%1�%��9��1%�/' ��8�-%-%�%1�-��1��N�
�
�
�
)%$9���� ��6 � � � � ��� � �� � ������� ������! � � ����� � ����� ����
)%): ���� ��* � � � �������� � �� ���� ��� � � � � � ��
� �<�
.�8��0 ����"��#$%&' �(%3%�0 ' ��$' 7>+�? �$2�+�%����1%1>1��6��%�/#��#$%&' �(%3%�0 #��1%��>$%�6�3�9��6�($�2&(%�+�1��6�2�2-2�1#��$����1%1>1��/%-�1�&F �#�%7$2�#��%�+���kitas"��
�%�+%���� ��
pabaiga := elem;
pabaiga^.kitas := nil;�
pabaiga = elem;
pabaiga->kitas = NULL;�
�
K�%��+' 7' �2���12�������1$�' /%��:���(%9"�
�
��
2.1.8. Panaikinti element� iš s�rašo vidurio �
�$%7��@�(%7@1��"��$�2&�2�2-2�1' ��%�+���-#�$2�+�%����1%1>1��$' 7>+�? �elemk�6�2�2-2�1#���1' 9��16���� ���%�+��%-#�2�2-2�1#�A+%�(�1#�%1��+1��%($%&>1%��"�"=��+"C"��
��
�
�
)%)$���� �������� ������! � ���� � � � ����� �� � ���� ���
)%))���� ��6 � � � � ��� � �� � ���������� �� �� ���� ����� � ����� ����
� �=�
��8��0 ����"��%(��7' -%���' $' 7%�elem����1%1' -%�6��%�+��%-#�2�2-2�1#��$��&�%�0 ' /%-%��%�+��%-' �2�2-2�1' �$2�+&-@"��
�
�%�+%���� ��
elem := elemk^.kitas;
k := elem^.duom;�
elem = elemk -> kitas;
k = elem -> duom;�
K�' �2�+' 7' �2���1@�2�%1��2+%-���92�+�-��������1$�' /%��:�.�(%92�+��%�"�
�
�
.�8��0 ����"��%�+��%-2�2�2-2�1#"�
�%�+%���� ��
elemk^.kitas = elem^.kitas;
dispose ( elem );�
elemk->kitas = elem->kitas;
free ( elem );�
K�%��+' 7' �2���12�������1$�' /%��:�4�(%9"�1�%��9������%�+��%-' �2�2-2�1' ��8�-%-#�%1-��16��$' 7>+�@�1%-(%��2%(�3$@81%"�
�
�
)%),���� ��� ����� � � � ���� � � � ����"� ��� � �� �� � � �� ���� � ���
)%)/���� ��6 � � � � ��� � �� ������������ �� �� ���� �
� ���
2.1.9. Nukreipti rodykl� � k-�j� s�rašo element�
�26-%�' -%�9�2���' (2$%1' $��-�����1%1>1��$' 7>+�? �6��:1#/6�2�2-2�1#��+%7%�0 ��1�$�-2�1�+�$' 7>+�2���$' 7%�F �%��6�(�$-#/6��$�(%�+�1��6�2�2-2�1��"��' 7@��$2�+�%�(%�+%�F ��' 1��+�2�2-2�1D ���' ��#$%&' �($%78�' �����' �2+��%��(2$+2��%�1�$' 7>+�? ���' �9�2�' �2�2-2�1' �($�2�+�1' "��
1$' 7>1D ��+%7�F �%�1�+1D �(%($%�F �%���%��B�+�%���1%F �%��/����2$2+' -2�7�' /%-%���%�7' 1�N�
�
�%�+%���� ��
elem := pradzia;
for i := 2 to k do
elem := elem^.kitas;�
elem = pradzia;
for ( i = 2; i <= k; i++ )
elem = elem->kitas;�
�
K�%-2�B�+�2��@$%�1�+$��%-%��%192/����+%���#$%&2�>$%�-%8�%���2��+�2�2-2�1D "��' 7@��32�7$��%192/���$2�+�%�1�+$��1���%$�7%$��2(%��2+1%��#$%&' �(%3%�0 %"��%�+%�>/2�&���B�+�%��0 %�@1D �%1$' 7>1��1%�(N�
elem := pradzia;
i = 2;
while ( i < k ) and ( elem <>nil ) do
begin
elem := elem^.kitas;
inc ( i );
end;
if i = k
then writeln(‘Rodykl� nukreipta �‘, k, ‘ -�j� element�.’)
else writeln(‘Sarase yra mažiau nei‘, k, ‚ elementu.’);
��%12�+�%-2�&6�+' 7' �G$%0 -2�1#���+%�3%N��
elem = pradzia;
i = 2;
while ( i < k && elem != NULL)
{
elem = elem->kitas;
i++;
}
if( i == k )
printf (“Rodykl� nukreipta � %d-�j� element�.\n”, k);
else printf(“S�raše yra mažiau nei %d element�.”, k);
��
� ���
2.1.10. Rodykl�s nukreipimas � priešpaskutin� element�
K���92�+�-%��$2�+%���0 %��(%�+�1���' ��#$%&' �2�2-2�1' �(%&%����-��"��%7%�0 ��$' 7>+�@��9�2�(���%-2��#$%&2�$' 7' �1�+�+�1#�2�2-2�1#��1%��%12�1��($�2�($�2&(%�+�1���' �2�2-2�1' �0 %��-%�1�+�2��%�1���' �($%78�' �"��%�(�2�1��(2$��#$%&#��/%��3�9' ��%0 $��@1%"� �+' �1�+�(%1�+����1��B�+�' ��#�>0 #"��%��(%7%$>1��0 %��-%�79�2-�3,7%��"�
��3,7%�"����%-' /' �2�2-2�1' ��%�+#�kitas�0 %��-%��>0 ��1�����$' 7>+�2�pabaiga��+�$��$' 7' �6�(%�+�1��6�2�2-2�1#N�
�
�%�+%���� ��
elem = pradzia;
while elem^.kitas <> pabaiga do
elem := elem^.kitas�
elem = pradzia;
while ( elem->kitas != pabaiga)
elem = elem -> kitas;�
K�' ���#�>0 ' ��1�+$���-#������1$�' /%��:� �(%9"�
�
�' �B�+�' �$' 7>+�@�elem�>$%���+$2�(1%�6�($�2&(%�+�1��6�2�2-2�1#"�
�
��3,7%�"� %��-2�1�+$��1���%$�+�1' �2�2-2�1' ��%�+%���@$%�1�&F �%��%7$2�%��nil�%$3%�NULL"�
� �
�%�+%���� ��
elem = pradzia;
while elem^.kitas^.kitas <> nil do
elem := elem^.kitas�
elem = pradzia;
while ( elem->kitas->kitas != NULL)
elem = elem->kitas;�
�K6�+' 7' �G$%0 -2�1#������1$�' /%��:�;�(%9"�
)%)2���� ��� �� ����� �� �� �� � � � � ���� �� �<��� �� �� ������ ! ������� ���� � � ��� �������� �� ���
� ���
�
�
K�%-2�9%$�%�12��%�7' /%-2�$' 7>+�? �el^.kitas^.kitas��+�$��0 %�%����+�%����($%�1�"�K���%192/���>$%����92$�%�2�����1%�($%�-2��+%7��@$%��%�7' /%-%�$' 7>+�@�pabaiga"�
2.1.11. Atspausdinti vienpusio s�rašo elementus nuo pradžios
K���92�+�-%��%1��2+%-%��%�%�' 0 �&+%��1�+�+#��%0 $��@1%-�%192/��"��2$2��%-%���#$%&%���$�%1�(%��7��%-%��+�2+9�2�' �2�2-2�1' �7�' -�' N�
�
�%�+%���� ��
elem = pradzia;
while elem <> nil do begin writeln ( elem^.duom ); elem := elem^.kitas
end;�
elem = pradzia;
while ( elem != NULL )
{
puts ( elem->duom );
elem = elem^.kitas; }�
2.1.12. Atspausdinti s�rašo elementus nuo pabaigos
�%���21$�9�%����%192/���9�2�(���%-��#$%&��"��($2�7�-%��0 %�@1D �3,1��$2+�$���@�($' B27,$%N�
�
�%�+%���� ��
procedure PrintList ( elem:rod );
begin
if elem <> nil then
begin
PrintList ( elem^.kitas );
writeln ( elem^.duom )
void PrintList( struct el *elem )
{
if (elem != NULL)
{
PrintList( elem->kitas );
printf( “%d\n”, elem->duom )
)%)4���� ��- �� �� �� ������ ! ������� �� � � � � ����� � �> � ���? �� �� �� ��� ���> ��? �
� �.�
end
end;
kvie�iame proced�r� taip:
PrintList ( pradzia);�
}
}
kvie�iame funkcij� taip:
PrintList ( pradzia);�
�
� �4�
2.2. Dvipusis (dvikryptis) s�rašas
2.2.1. Aprašas
�9�(������#$%&%��O�1%���1$�+1,$%��+�$�' /2�>$%�79��$' 7>+�@�N�
�%�+%����
type dvipSar = ^dvipElem;
dvipElem = record
priekin: dvipSar;
duom : integer;
atgal : dvipSar;
end;
��
struct dvipElem {
struct dvipElem *priekin;
int duom;
struct dvipElem *atgal
}
�
�
�%$3������79�(������#$%&���+�$1��&�2�+��1%-�2/�N�
� �' 7>+�@�6��#$%&' �($%78�#N�pradzia,�
� �' 7>+�@�6��#$%&' �(%3%�0 #N�pabaiga,
� �' 7>+�@��6�2�2-2�1�������+�$�%���>$%�%1��2+%-��92�+�-%�N�elem��$�elemk"
)%)5���� ��3 � ���������������
� � �
�%�+%����
var pradzia, pabaiga, elem, elemk: dvipSar;�
��
struct dvipElem *pradzia, pabaiga, *elem, *elemk;�
�
� (2$%B�/D �$��+��>��>$%�1' +��(%1��+%�(��$�9�2�(���' ��#$%&' �%192/�"��' ��>$%�$2%��E�' /%-' ��%�%�' 0 �&+%�"��%�%0 $��@��-2��%�+���-' ��$�612$(�-' �6��#$%&' �9�7D �' (2$%B�/%����2��/' �2�$2�+�%�19%$+>1��79����' $' 7%��9�21' /2�9�2�' ���+%�(�3�9' �9�2�(���' ��#$%&' �%192/�"��
2.2.2. �terpti element� dvipusio s�rašo viduje po k-ojo elemento
�$%7��@�3,�2�%N�6�+:#/6�2�2-2�1#�1�$��3,1����+$2�(1%�(%0 %�3��@�$' 7>+�@�elemk�A+%�(�1#�%1��+1��9�2�(���%-��#$%&���%($%&>1%��"�"=��+"C"��9�(���%-2��#$%&2�$' 7>+�? �+�1%��$2�+�%�(%+2��1��$' 7>+�2�priekin"�
K����1�%B�/%�>$%�(%9%�E7�' 1%��:�<�(%9"�
�
�
��8��0 ����"���+�$�%-2�2�2-2�1#�
�%�+%���� ��
new ( elem );
elem^.duom := 7;�
elem = (struct dvipElem *) malloc ( sizeof (
struct dvipElem ) );
elem -> duom = 7;�
�K�%��+' 7' �2���12�������1$�' /%��:�=�(%9"�
)%)7���� ��6 � � � �" ���� � �"������� �� �� ��"����� � ����� ����
� �;�
�
�
.�8��0 ����"�5�1%1' -2���+�$1#�2�2-2�1#�(' �+:' /' �2�2-2�1' ��$�����2/%-2����+U ��2�2-2�1�"�
�
�%�+%���� ��
elem^.priekin := elemk^.priekin;
elemk^.priekin^.atgal :=elem;�
elem->priekin = elemk->priekin;
elemk->priekin->atgal = elem;�
�
K���+' 7' �G$%0 -2�1%��>$%������1$�' /%-%���:.��(%9"�
�
� � � �� ��
� � �
�
�
����
��� �
�
��
)%)9���� ��6 � � � �" ���� � �"�� � ������ ������� �� �� ��"���� ! �� ��<�" ����� � � � � � �'� �� �� �� ���
)%,: ���� ��6 � � � ����� ��� ������� = $%�� ��� � � ��
� �*�
4�8��0 ����"�����2/%-2���+�$1#�2�2-2�1#����+:1�' /��2�2-2�1�"�
�
�%�+%���� ��
elem^.atgal:= elemk;
elemk^.priekin := elem;�
elem->atgal = elemk;
elemk->priekin = elem;
�
K���+' 7' �G$%0 -2�1%��>$%������1$�' /%-%���:.��(%9"�
�
�
2.2.3. Panaikinti k-�j� element� iš s�rašo vidurio
�$%7��@�(%7@1��"��%(��7' -%�$' 7>+�@�elem�1�$��3,1����+$2�(1%�6��%�+��%-#�+:1#/6�2�2-2�1#�A+%�(�1#�%1��+1��9�2�(���%-��#$%&���>$%�%($%&>1%��"�"=��+"��79�(���%-��#$%&���$2�+�%�(%+2��1��$' 7>+�? ��kitas�6�$' 7>+�? �priekinC"��
�
�
�
)%,$���� ��; ����� � � � � � ����� ��� ������� %�� ��������� � � � ��
)%,)���� ��6 � � � � ��� � �� � ���������� �� �� ���� ����� � ����� ����
� �<�
��8��0 ����"��2��1' ��%��($' 0 $%-' /2�3���$2�+%���0 %��%�+��%-' �2�2-2�1' �$2�+&-@���&�%�0 ' /%-2�+:' /' ��%�+��%-' �2�2-2�1' �7�' -2�6"�
��
�%�+%���� ��
var k : integer; … k := elem^.duom;�
int k; … k = elem->duom;
�
K6�+' 7' �G$%0 -2�1#�(%9%�E7�' /%�� # # 7 # A� , : , # , 9 ; , �� 7 � # ; , �9 7 % �: 7 � 9 ! ��
�
�
�
.�8��0 ����"���+$2�(�%-2�A+U �C:' /' �2�2-2�1' �$' 7>+�? �%10 %��6�+:��2�2-2�1#��' �+:��2�2-2�1' �$' 7>+�? �($�2+���6�A+U �C�:#/6�2�2-2�1#"�
�%�+%����
elem^.priekin^.atgal := elem^.atgal;
elem^.atgal^.priekin := elem^.priekin;�
��
elem->priekin->atgal = elem->atgal;
elem->atgal->priekin = elem->priekin;
�
�%�1%$#/6�+' 7' �G$%0 -2�1#������1$�' /%��:.4�(%9"�
)%,,���� ��0 ��� � �� � � � � � �� �� � �������! � ��� ���
� �=�
�
4�8��0 ����"�1�%��9��%-2��%�+��%-' �2�2-2�1' �%1-��16"�
�
�%�+%���� ��
dispose ( elem );� free ( elem );
�
K���92�+�-%��>$%������1$�' /%-%����:. �(%9"��' �&�' �92�+�-' �$' 7>+�@�elem�1%-(%��2%(�3$@81%"�
�
)%,/���� ��6 � � � � ��� � �� ������������ �� �� ���� �
)%,2���� �& ���� ��� � � � � ��� � �� � �� �� �� ��<��� � � �������� � �� ����
� .��
2.3. Stekas �12+%��>$%�7�' -2�D ��1$�+1,$%��+�$�' /2�2�2-2�1%��0 %���3,1��612$(�%-��%$3%��%�+��%-���1�+��12+' �
9�$&,�@/2�A%�0 �"�� �C"��%�0 �%��%(�2�&�#�7�' -2�D ��1$�+1,$%�$2+' -2�7�' /%-%�(%�+%�1>1��L�M�-21' 7��@/2�($�2-' �@/2"��' ��%��>$%��%0 $��@/%-%��12+' �$2%��E%B�/%"�
�%$3�������12+��>$%��%�7' /%-%�6��12+' �9�$&,�? �O�Top"�(7' $' 1��2��%-#/6�2�2-2�1#�$2�+%���0 %�$' 7>+�@�elem"�($%&%��(%12�+1���+�$����' �2��"�"����"�"�"�
2.3.1. Sukurti stek� su vienu elementu
%C�1�&F �%���12+%��
�
�%�+%���� ��
Top := nil;� Top = NULL;
�
3C��&�+�$��-2�%1-��16�(�$-%-�2�2-2�1����$�($��+�$�%-2�7�' -2�6"�
�
�:.*�(%9"�(%9%�E7�' /%���1�%B�/#����+�$1#�&��' �+' 7' �G$%0 -2�1�N��
�%�+%���� ��
new ( elem);
elem^.duom := 5;
elem^.kitas := nil;�
elem = (struct el *) malloc(sizeof(struct el));
elem->duom = 5;
elem->kitas = NULL; �
BC��12+' �9�$&,�? ���+$2�(�%-2�6���+�$1#�2�2-2�1#"�
�
K���+' 7' �G$%0 -2�1%�������1$�' /#�(%12�+1#������1$%B�/#�A8$"��:.<�(%9"C"�
)%,5���� ��0 ���� � � � � �"���� �� � �"�� � ������� ��� ���
)%,7���� ��� � � �� ��� ������� ��� ��������� ���������� � � � ��
nilTop
?elem
)%,4���� ��- ��. �� �� � � �� ��� ���
� .��
�%�+%���� ��
Top := elem;� Top = elem;
�
2.3.2. �d�ti element� � stek� (operacija push)
�$%7��@�(%7@1���A8$"��:.=�(%9"C"��12+2�>$%�/%��9�2�%��2�2-2�1%�"�57@��-2�6�/6�%�1$#�2�2-2�1#"�
�
�&�+�$�%-2�9�21#��%�/%-��#$%&' �2�2-2�1���
�
�%�+%���� ��
new ( elem);� elem = (struct el *) malloc ( sizeof ( struct el ) );
K���+' 7' �G$%0 -2�1%��>$%�(%9%�E7�' 1%���:4��(%9"�
�
BC��$��+�$�%-2�$2�+&-? ��$�����2/%-2�����12+�"�
�
�%�+%���� ��
elem.duom := 10;
elem^.kitas := Top;�
elem -> duom = 10;
elem -> kitas = Top;
K���+' 7' �G$%0 -2�1%��>$%������1$�' /%-%���:4��(%9"��
�
7C�(2$+2��%-2��12+' �9�$&,�? �
)%,9���� ��@ � ��A��� ����������� � ����� ����
)%/: ���� ��0 ���� � � � � ��" ����� � �"�� � ������ ��� ���
)%/$���� ��; ����� � � � � � ����� ��� ������ � �� ����� � � �� ��� �
� .��
�
��' $' 7' ��(2$+@��-#�%1��2+%�&���+' 7' �G$%0 -2�1%��
�%�+%���� ��
Top := elem;� Top = elem;
�
2.3.3. Panaikinti steko element� (operacija pop)
%C��$%7��@�(%7@1��N��12+2�>$%�+2���2�2-2�1%��A8$"��:4.�(%9"C"��
�
3C��-%-2�7�' -2�6��&��12+' �9�$&,�@��6�+��1%-#/6�+��$���+$2�(�%-2�(%0 %�3��6�2�2-2�1#�6��12+' �9�$&,�? "�
�
�%�+%���� ��
k := Top^.inf;
elem := Top;�
k = Top->inf;
elem = Top;
�
K6�+' 7' �G$%0 -2�1#������1$�' /%��:44�(%9"
)%/)���� ��� � � �� ��� ������� ��� ������ �������� ��� �
Top310 1
nil
?elem
k
Top3 1
nilelem
10k
10
)%/,���� ��� � �� ���� ��� � � ���
)%//���� ��0 �� �� � � �� �� � ���� ���"� ��� � �� ��� � � �� ��� #�
� ..�
BC��2$+2�1���12+' �9�$&,�@��$' 7>+�? �6�%�1$#/6�2�2-2�1#��$�%1�%��9��%-2�%1-��16"�
�
�%�+%���� ��
Top := elem^.kitas;
dispose ( elem );�
Top = elem->kitas;
free ( elem );
K6�+' 7' �G$%0 -2�1#������1$�' /%��:4 �(%9"�
2.4. Eil� ���@��%(7' $' /�-���-%8�%���%��$2�+�%�79�2/D �$' 7>+��D �A��' $' 7D CN�
� 6�2��2��($%78�#��e_pradzia�� 6�2��@��(%3%�0 %��e_pab�"�
2.4.1. Sukurti eil�
%C��$%7��@�(%7@1��N�2��@��($%78�' ���$�(%3%�0 ' ��$' 7>+�@-��>$%�($��+�$�%-%��1�&F �%����-3' ���"�
�
�
�%�+%���� ��
e_pradzia := nil;
e_pabaiga := nil;�
e_pradzia = NULL;
e_pabaiga = NULL;
�
3C���+�$�%-2�(�$-#�2��@��2�2-2�1#��$�($��+�$�%-2�/%-�7�' -2���"�
�
�%�+%���� ��
new ( elem );
elem^.duom := 3;
elem^.kitas :=nil;��
elem =(struct el *) malloc(sizeof(struct el));
elem->duom = 3;
elem->kitas = NULL;
Top3 1
nilelem
10k
10
nile_pradzia
nile_galas
)%/2���� ��0 ��� � �� � � � � � ��� � � �������� � �� ���
� .4�
nil
e_pradzia
3nil
nil
e_pabaiga elem
�
BC���+$2�(�%-2�($%78�' ���$�(%3%�0 ' ��$' 7>+�2��6���+�$1#�2�2-2�1#�
�
�%�+%���� ��
e_pradzia := elem;
e_pabaiga := elem;�
e_pradzia = elem;
e_pabaiga = elem;
K��' ��92�+�-��������1$�' /%��
�
2.4.2. �d�ti element� � eil�
%C��$%7��@�(%7@1��N�2��@/2�/%��>$%�32�1�9�2�%��2�2-2�1%��A8$"�� # # 7 # A� , : , # , 9 ; , �� 7 � # ; , �9 7 % �: 7 � 9 ! �C"�
�3C���+�$�%-2��%�/#�2�2-2�1#��$�/' ��%�+%-��($��+�$�%-2�$2�+&-2�"��
�%�+%���� ��
new ( elem );
elem^.duom := 5;
elem^kitas := nil;�
elem = (struct el*) malloc( sizeof(struct el) );
elem->duom = 5;
elem->kitas = NULL;
K�' �+' 7' �G$%0 -2�1' �92�+�-%��>$%�(%9%�E7�' 1���:4<�(%9"�
�
)%/4���� ��� ��� � � ����� � � � ���� ��� ���
)%/5���� ��6 �������� � �� � � ��
e_pradzia
3nil
e_pabaiga elem
5nil
)%/7���� ��0 ���� � � � � �������������� ��� ���
� . �
BC���+$2�(�%-2�(%�+�1���' �2�2-2�1' ���' $' 7#�6��%�/#�2�2-2�1#"�
�
�%�+%���� ��
e_pabaiga^.kitas := elem;
e_pabaiga := elem;�
e_pabaiga->kitas = elem;
e_pabaiga = elem;
�
2.4.3. Panaikinti eil�s element�
%C��$%7��@�(%7@1��N�2��@/2�>$%�+2���2�2-2�1%��A8$"��: ��(%9"CN��
�
�
3C��&�%�0 ' -2��&-21%-' �2�2-2�1' �7�' -2�6��$�(%0 %�3��? �$' 7>+�? ����1%1' -2�6��&-21%-#�2�2-2�1#"�
�
�%�+%���� ��
k := e_pradzia^.duom;
elem := e_pradzia;�
k = e_pradzia->duom;
elem = e_pradzia;
�
e_pradzia
3
e_pabaiga elem
5nil
4 3 5
nil
?
elem e_pabaigae_pradzia
2duom
kitas
)%/9���� ��6 � � � ������ ! �� ������ � �����
)%2: ���� ��6 �������� ������ � � ����
� .;�
BC��2$�1%1' -2�($%78�' ��$' 7>+�? �e_pradzia�6�2�2-2�1#��2��%�16�(' �2�2-2�1' ���%�7' /%�1��%�+#�kitas"��' �1' �%1�%��9��%-2�%1-��16���%�7' /%�1�2�2-2�1#�elem"����
�%�+%���� ��
e_pradzia := elem^.kitas;
dispose ( elem );�
e_pradzia = elem->kitas;
free( elem );
�
�$%78�' ��$' 7>+�@��(2$+@��-#������1$�' /%��: ��(%9"�
�
�
2.5. Pavyzdžiai
2.5.1. Vienpusio s�rašo suk�rimas ir spausdinimas
�2-�%�1���&�%���(%9>E78�%���$2+' -2�7�' /%-%�($%7@1��-' +>1���($' 0 $%-�' 1��7��%-�������#$%&��"��
2.5.1.1. Paskalio pavyzdys {*********************************************************}
{* Užduotis nr. XX *}
{* Sukurti vienpus� s�raš� ir j� atspausdinti. *}
{* *}
{* Atliko: Vardas PAVARD�, kursas, grup�, pogrupis *}
)%2)���� ��� ��� + �� ���� � � � ���� ���� � ���
4 3 5
nil
elem e_pabaigae_pradzia
2
k
2
��� ��)%2$0 ��� � �� � � ����� � � � �� �� �� ��������! � ��� ���
� .*�
{* *}
{*********************************************************}
program sukurti_sarasa;
type sar = ^el;
el = record
duom : integer;
kitas : sar;
end;
{ Kuria s�raš� ir gr�žina abi rodykles. }
procedure Sukurti_sar ( var pr, pab : sar );
var g : sar;
x : integer;
begin { Sukurti_sar }
pr := nil; { 1. Is pradži� sukuriame tuš�ia s�raš�. }
pab := nil;
writeln('Kuriame sarasa. Iveskite sveikus skaicius.');
writeln('Noredami baigti, iveskite 0.');
readln ( x ); { 2. Formuojame s�raš�}
while x <> 0 do
begin
if pr = nil
then { 2.1 Pirmasis elementas }
begin
new( g );
g^.duom := x;
g^.kitas := nil;
pr := g;
pab := g;
readln( x );
end
else { 2.2 Kiti elementai prijuniami � pabaig�. }
begin
new( g );
g^.duom := x;
g^.kitas := nil;
pab^.kitas := g;
pab := g;
readln( x );
end
end;
� .<�
writeln('Sarasas sekmingai sukurtas');
end; { Sukurti_sar }
procedure Spausdinti( pr : sar );
var s : sar;
begin { Spausdinti }
writeln('Spausdiname sarasa:' );
s := pr;
while s <> nil do
begin
write( s^.duom, ' ');
s := s^.kitas;
end;
writeln;
end; { Spausdinti }
procedure Naikinti_sar( var pr, pab : sar );
var s : sar;
begin { Naikinti_sar }
writeln('Naikiname sarasa nuo pabaigos.');
while pr <> nil do
begin
s := pr;
if pab <> pr
then
begin {Nukreipiame rodykl� i priešpaskutin� element�.}
while s^.kitas <> pab do
s := s^.kitas;
writeln(' Naikiname ', s^.kitas^.duom);
pab := s;
dispose( s^.kitas );
end
else
begin
writeln(' Naikiname pirma: ', s^.duom);
dispose( s );
pr := nil;
pab := nil;
end;
end;
� .=�
end; { Naikinti }
var pradzia, pabaiga : sar;
begin
Sukurti_sar ( pradzia, pabaiga );
Spausdinti ( pradzia );
Naikinti_sar ( pradzia, pabaiga);
end.
� 4��
2.5.1.2. C kalba: /*********************************************************/ /* Uzduotis nr. XX */ /* Sukurti vienpusi sarasa ir ji atspausdinti. */ /* */ /* Atliko: Jonas Jonaitis */ /* */ /*********************************************************/ �#include <stdio.h> #include <stdlib.h> struct el { int duom; struct el *kitas; }; /* Kadangi reikia gr�žinti dvi rodykles, b�tent pradzi� ir pabaig�, naudosime parametrus-kintamuosius. Pradžia ir pabaiga yra rodykl�s � s�rašo element�, o � funkcija tuomet nueina j� adresai, tai yra elemento rodykl�s rodykl� arba adreso adresas. */
void Sukurti_sar ( struct el ** , struct el** );
void Spausdinti_sar ( struct el * );
void Naikinti_sar ( struct el ** , struct el** );
int main()
{
struct el *pradzia, *pabaiga, *elem;
Sukurti_sar ( &pradzia, &pabaiga );
Spausdinti_sar ( pradzia );
Naikinti_sar ( &pradzia, &pabaiga );
return 0; /* tik Windows */
}
/* Iterpti elementa i saraso pradzia. */
void Sukurti_sar ( struct el * *pr, struct el * *pab )
{
struct el *g;
int reiksme;
puts ("Iveskite saraso elementus. Noredami baigti, iveskite 0:" );
*pr = NULL;
*pab = NULL;
scanf("%d", &reiksme);
� 4��
while( reiksme != 0 )
{
if ( *pr == NULL)
{
g = (struct el *) malloc(sizeof(struct el));
g->duom = reiksme;
g->kitas = NULL;
*pab = g;
*pr = g;
}
else
{
g = (struct el *) malloc(sizeof(struct el));
g->duom = reiksme;
g->kitas = NULL;
(*pab)->kitas = g;
*pab = g;
}
scanf( "%d", &reiksme );
}
puts("Sarasas sekmingai sukurtas");
}
/* Spausdinti nuo pradzios */
void Spausdinti_sar (struct el *elem)
{
int i=1;
puts("*****************************************");
puts("Spausdiname sarasa:");
while ( elem != NULL )
{
printf( "%d elementas yra %d\n", i, elem->duom );
elem = elem->kitas;
i++;
}
}
/*Naikinti sarasa */
void Naikinti_sar ( struct el * *pr, struct el * *pab )
� 4��
{
struct el *einam;
puts("*****************************************");
puts("Naikiname sarasa nuo pabaigos:");
while (*pr != NULL)
{
einam = *pr;
if ( *pab != *pr )
{
while ( einam->kitas != *pab )
einam = einam->kitas;
*pab = einam;
printf(" %d ", einam->kitas->duom );
free ( einam->kitas );
}
else
{
printf( " %d. \n ", einam->duom );
free ( einam );
*pr = NULL;
*pab = NULL;
}
} /* while */
} /* Naikinti_sar */
�
� 4.�
3 . MODULIAI
�' 7�����$2%��E�' /%�%3�1$%+1%���7�' -2�D �1�(' ��#9' +#"�(�2�&�#��#9' +#�$2+' -2�7�' /��(%�+%�1>1��1$�-(%���$�%�&+�%���&7@�1>1#�-278�%0 #�L�M"�
3.1. �vadas �' 7�����>$%��%9%$%�+�&+%�($' 0 $%-' ��7%�����+�$��>$%�%1�+�$%��+' -(����' /%-%"��' 7���%��>$%�
�+�$1��7�72�? �($' 0 $%-#��+%�7>1��7%��-��"��
3.2. Paskalyje �' 7���%��>$%�/��0 �%-��6�($' 0 $%-#��/' ��($%78�' /2��%�7' /%�1��%+��6��
�
Uses
�
�' 7���������727%��&�
� -' 7���' �%�1$%&1@���
� %(�3$@8�-D �7%��2��O���12$G2��' ��
� 92�+�-D �7%��2��O�$2%��E%B�/' ���
� ���B�%��E%9�-' �7%��2�"�
�' 7���' �12+�1' ��+�$�1>-%��6�7%������&�+�$�D �9�2�%�>$%�-%1' -%�9%$1' 1' /������7%$' �0 %��->3? ��%�7' 1��-' 7�����' �($' 0 $%-%9�-' ��$�%3�1$%+F �D /D �7�' -2�D �1�(D ��7@/%�"�
�
3.2.1. Antrašt�
unit modulio_vardas;
3.2.2. Apibr�žim� dalis
(�3$@8�-' �7%�>/2�>$%�1%�(��%-' ��1�+�G��+B�/D ��$�($' B27,$D �%�1$%&1@�"��$' 0 $%-%�0 %����%�7' 1���1�+�1' -���G��+B�/' -����$�($' B27,$' -����+�$�' ��>$%�(%�+2�31' ��%(�3$@8�-D �7%�>/2"��
�
Interface
uses moduli�_s�rašas; { naudojam� moduli� s�rašas }
const konstant�_s�rašas; { naudojam� konstant� s�rašas }
type tip�_s�rašas; { naudojam� naudotojo tip� s�rašas }
var kintam�j�_s�rašas; { naudojam� modulio kintam�j� s�rašas} procedure Proc1(parameterai); {proced�r� ir funkcij� antraš�i� skyrius}
function Func(): tipas;
� 44�
3.2.3. Veiksm� dalis implementation {naudojami moduliai} funkcij� ir proced�r� aprašai;
�2�+�-D �-' 7���' �7%�6���7%$' �G��+B�/D ��$�($' B27,$D �%($%&%�"��$' 0 $%-' ��/D ��2-%1' ��1�+�/%����%�7' /%��"��2�+�-D �7%�>/2�%�1$%&12��0 %��-%�($%�2��1���/%��0 %��-%���1$�-(��1���+��(%9%7���-' ���2��(%$%-21$D ��#$%&%��3�9' ���$' 7>1%��%(�3$@8�-D �7%�>/2"��2��%�1$%&1@��@$%�1$�-(��%-%��/���1�$����1%(1�����(%12�+1%�%(�3$@8�-' ��+>$��/2"�
�2�+�-D �7%�>/2�0 %���3,1��%($%&>1' ���$�1' +�' ��($' B27,$' ���$�G��+B�/' ���+�$�D �%�1$%&F �D ��@$%�%(�3$@8�-D �7%�>/2"���' -21�/' ��0 %���3,1���%�7' /%-' ��1�+�-' 7���' �9�7�/2"��&' $��@/2�($' 0 $%-' /2�/' ���20 %���3,1���%�7' /%-' �"��
3.2.4. Inicializavimo dalis
���B�%��E%9�-' �7%����>$%�(%�%&��6�($' 0 $%-' ���%+���D �7%�6"����%1��2+%-%�($�2&�9>+7%�1�($' 0 $%-' ���+�$�' /2�>$%��%�7' /%-%��-' 7�������%+�����"��2�0 ��($' 0 $%-' /2�>$%�+2���-' 7���%������B�%��E%9�-' �7%�>��>$%�69>+7' -' ��1' +�%�19%$+%��+' +�%�-' 7���%��>$%��&9%$7��1��uses��%+��>/2"��
begin sakiniai end.
3.2.5. Transliavimas
�$%�����' 7%-��-' 7��������$3' ��%�+%����$2�+�%����1%1>1��destination disk"�1��$%�7%�G%��%������&(�@1�-��.tpu"��' �1' �1$%�����' /%-%��(%0 $��7�����G%��%�"��
3.3. C
3.3.1. Antraš�i� fail� k�rimas
�1$%&F �D �G%���' �2�>$%�1%�(��%-��+��1%-D /D ��$�G��+B�/D �%($%&%�"���2�1�$���&(�@1�-#�.h���1$%&F �D �G%��D �(%9>E78����/%��8��' -2��3,12�1�stdio.h��stdlib.h��$�+�1��"��%7%�0 ��%�1$%&F �D �G%��2�>$%�1�+�G��+B�/D �($' 1' 1�(%��A(�$-%9%�E78�%�C��' �/D �%(�3$@81>��>$%�+�1�$��1%��/D �9%$7%��1�$��3,1��(%8>-@1��+%�(�extern"�
! ��+B�/' ��>$%�1%�(��%-' ��G%��2�����&(�@1�-��.c"�K�%-2�G%��2��20 %���3,1��G��+B�/' ��main()V�
�%0 $��7��@/2�($' 0 $%-' /2�&�' ��G��+B�/' ��>$%��%�7' /%-' ���+%��($�/��0 �%-%��%�1$%&F �D �G%��%���(%�%�7' /%�1�($2+' -(���%1' $�%���+' -%�7#N�
#include "pvz.h"
�1%�7%$1���%��%�1$%&F �D �G%��%��>$%�%(�+��%�78�%-��<stdio.h>��' ��%�7' 1' /' �"example.h""�(�+��%�7�-' �3,7%��(%�%+' ��+�$�>$%�G%��%����1%�7%$1����' �2�+%1%�' 0 �' �2�%$�7%$3���%-2��%�7' 1' /' �+%1%�' 0 2"��
�' -(���%1' $����92$F �%�($' 0 $%-#��&�($' 0 $%-%9�-' �+%�3' ��6�-%&����? "��%�(�1$%�����' /%-' ��($' 0 $%-' ���&�+2��D �G%��D W ��>&�D �$27%+1' $����A%�0 �"��� � �C�O�1%��($' 0 $%-%��+�$��>$%�(%�2�78�%-%�(' �+' -(���%B�/' �"������/��0 �%�9��%��($' 0 $%-' ��7%����6�9�2�#��$�(%0 %-��%�9>+7' -#/6�-' 7��6"��
� 4 �
3.3.2. Keli� fail� transliavimas, naudojant gcc
�$�2&�+' -(����' /%�1�(%0 $��7��? �($' 0 $%-#��$2�+�%���1$%�����' 1��9��%����727%-#��%��7%����6�' 3/2+1������-' 7�����"���' -21�/�2�1�$���&(�@1�-#�.o"�
gcc –c example.c –o example.o
gcc –c main.c –o main.o
���' -21���1$%�����' 1' ��7%�>��>$%���/��0 �%-' ���$���+�$�%-%��9>+7' -%��-' 7�����exampleN��
gcc example.o main.o –o example
�
�2��+%8+�$���G%��%��3�9' �(%+2��1%���$2�+�%�/6�(2$1$%�����' 1���$���/��0 1�����+�1' -���7%��-����&��%�/' N�
gcc -c main.c -o main.o
gcc main.o example.o -o example
3.3.3. Transliavimas kitur
�%�7' 1' /%��1�$����+�$�%�($' /2+1#�A%�0 �"�� �� � AC��$�61$%�+1���%�7' /%-���G%����"���' ��$2�+�%�%1�+�$%����1$%�����' 1��A1%��0 %���3,1��%1��2+%-%�%�1' -%1�&+%�C��(' �1' ���$�&1��A���+C��$�69>+7>1�"�
3.4. Pavyzdys �%12�+��-2�(%($%�1#�($' 0 $%-@�? ������727%�F �#��&�79�2/D �G%��D N�
3.4.1. Pascal ��%0 $��7��@�($' 0 $%-%N��
program programa_su_moduliu;
uses funkc;
var x:integer;
begin
x:=5;
writeln(x,' kvadratu yra ', square(x));
writeln(x,' pakeltas 7 laipsniu yra ', power(x,7):7:0);
writeln(x,' faktorialas yra ', factorial(x));
end.
� 4;�
��' 7����N�
unit funkc;
interface
function square(x:integer):integer;
function power(x,y:integer):real;
function factorial(x:integer):longint;
implementation
function square(x:integer):integer;
begin
square:=x*x
end;
function power(x,y:integer):real;
var ans:real;
temp,p:integer;
begin
temp:=x;
ans:=x;
for p:=y-1 downto 1 do
ans:=ans*temp;
power:=ans;
end;
function factorial (x:integer):longint;
var temp:integer;
begin
for temp:=x-1 downto 1 do
x:=x*temp;
factorial:=x
end;
end.
� 4*�
3.4.2. C
�%0 $��7��@�($' 0 $%-%N�
�
#include <stdio.h>
#include "funkc.h"
int main() {
int x = 5;
printf("%d kvadratu yra %d.\n", x, square(x));
printf("%d pakeltas 7 laipsniu yra %.0f.\n", x, power(x,7));
printf("%d faktorialas yra %.0f.\n\n", x, factorial(x));
/* %f yra naudojama isvesti float ir double tipo elementus.
power() ir factorial() funkcijos grazina sveikus skaicius,
todel naudojame %.0f */
return 0;
}
�
! %��%��funkc.h��+�$�%-2�>$%�G��+B�/D �%�1$%&1@��A($' 1' 1�(%�CN�
�
#ifndef FUNK_H
#define FUNK_H
extern int square(int x);
extern double power(int x, int y);
extern double factorial(int x);
#endif
�
! %��%��funkc.c��+�$�%-2�>$%�G��+B�/D �%($%&%�N�
�
#include <stdio.h>
// Kadangi tipas yra standartinis, prijungti funkc.h nereikia. Jei modulis
// ir tip�, tuomet b�tina prijunti antraš�i� byl� #include “funkc.h“
int square(int x) {
� 4<�
return (x * x);
}
double power(int x, int y) {
double ans = x;
int temp = x;
int p;
for(p=y-1 ; p!=0 ; p--) {
ans*=temp;
}
return ans;
}
double factorial(int x) {
int temp;
for(temp=x-1 ; temp!=0 ; temp--) {
x*=temp;
}
return x;
}
� 4=�
4. Darbas su konsole
4.1. DOS modulis (Paskalyje) K6�-' 7��6���7%$' �($�2-' �@����2�78�%�F �' �����($' 0 $%-�' �2��%�7' 1���' (2$%B��@�����12-' ��0 %��->3@-��"��%��69%�$�' ��92�+�-D ����7��+%����G%��%����(2$1$%�+�-D �%(7' $' /�-' �' (2$%B�/' ���$�(%�"�
4.1.1. Veiksmai su data ir laiku
�%12�+�%����12-��? �7%1#"��%9%�1@��7�2�%�>$%���$' 7' -%��+%�F �%�����' ����+��;N�
GetDate (var Metai, Menuo, Diena, sav_diena :word);
�%12�+�%����12-' ���%�+#N�
GetTime(var Val, Min, Sek, Sek100: word);
4.1.2. Veiksmai su failais
4.1.2.1. Paieška
�%$1%���$2�+�%�(%1�+$��1���%$�7��+2�>$%��2&+' -��G%��%���+�2+�/%-2�>$%��%��9' ��9�21' ���$�(%�%&�%�"��$' B27,$%�! ��7! �$�1�$%�7%�(�$-#/6�G%��#�+%1%�' 0 2��%1�1��+%�16���$' 7>1%���%9>32�N�
Procedure FindFirst( Kelias:string; Savybes: word; var Results: SearchRec);
�%$%-21$%��� �������$' 7' �(%�2&+' ��+%1%�' 0 ' �+2��#��$��2&+' -' �G%��' �(%9%7���-' �&%3�' �#��+�$�%-2�0 %��-%��%�7' 1����-3' ����X ��$�W ��(%9>E78�����Y\*.*Z�
�%$%-21$%����� � � ����$' 7' ��2&+' -D /D �G%��D ��%9>32�"��D �$2�+&-@��>$%�%($%&>1' ��-' 7���' ��� ��+' ��1%�1' -��N�
const ReadOnly=$01; Directory=$10; {Katalogai.} Hidden=$02; Archive=$20; {Supakuotos bylos.} SysFiles=$04; AnyFile=$3F; VolumeID=$08;
Jei reikia keli� savybi�, tuomet jos yra sumuojamos, kaip antai Hidden+Sysfiles
���%77�1�' ��1' �($' 7�B��0 �$2(' $1���1H ���12-(�%12�B%��32���27�1' �B$2%12�($' (' �%���%�7�R ' $+:3' ' +�"��' �BH %�0 2�1H 2�12[ 1�' $�0 $%(H �B���1H 2�G' ��' R ��0 ���0 0 2�1�' ���%$2�($' 9�727"�
�%�2&+' ��$2E��1%1%��>$%�(%12�+�%-%���2%$BH �2B�1�(' �+��1%-' /' �Results��%�+�' �2"��%�1%$' /' �1�(' ��1$�+1,$%�>$%�%($%&' -%�1%�(N�
Type SearchRec=record file : array [1..21] of byte; {OS duomenys.} attr : byte; {Požymi� kod� sumos.} time : longint; {Suk�rimo data ir laikas.} size : longint; {Failo dydis bitais.}
� ��
name : string[12]; {Failo vardas ir prievardis.}
�%$1' 1��(%�2&+#����1%���(%F �%���(%$%-21$%��N�
Procedure FindNext(var Results: SearchRec);
$�(%�2&+%�>$%��@+-��0 %��9>+7' -%�$' 7' �+��1%-' /' �DosError�$2�+&-@"���' �$2-�%�1���0 %��-%���8��' 1��+�%�7' ��($�28%�1��"��2��(%�2&+%�>$%��@+��0 %��1%��Doserror�$2�+&-@�>$%��>0 ��0.
program katalogo_turinys;
uses Dos;
var info: SearchRec;
i : integer;
e : string;
begin
e := '*.*'; `\*.*` DOSe Pagrindinis disko katalogas.}
Findfirst(e, anyfile, info); {Pirmojo failo paieska.}
writeln('Katalogas: ':30, e );
i := 0;
while DosError = 0 do
begin
inc(i);
if i=24 then
begin
write('Kita lenteles dalis',
'--- po Enter paspaudimo.');
Readln;
i := 0;
end;
writeln(info.name:12, info.attr:3, info.size:8);
FindNext(info);
end;
end.
K�' ��($' 0 $%-' ���&92�1��� ���[ ��>$%�1' +�%N�
Katalogas: *.* . 16 0 .. 16 0 DIR_MANO.C 32 966 a.out 32 4976 dir_mano.rez 32 45 SYSTEM.C 32 448 system.rez 32 289 DIR.PAS 32 737 stat.c 32 2489 dir 32 123520 dir.rez 32 518 PARAMSTR.PAS 32 438 dir_stand.c 32 852
� ��
TIME_KML.C 32 1254 DOSDEMO.PAS 32 1042 dir_stand.rez 32 157 dir.o 32 2304 Time_kml.rez 32 86 direk.rez 32 467
�%1%�' 0 #��+�$�%-2�>$%�1%-�1�+$%��G%��%���$%�7%�G��+B�/%�
Function Fexpand(<Failas>:Pathstr): PathStr;
K��G��+B�/%�7%���6�3>�' ��+2��#��&(�@F �%��+��(���' �+2��' "�
����' �+2��' �(%9%7���-%��7%��-����+%�7' �($' B27,$%N�
Procedure Fsplit (pilnas_failo_pavadinimas : PathStr; var kelias : DirStr; var vardas : Namestr; var prievardis : Extstr; );
�$' B27,$%�(���#�G%��' �9%$7#�A���+%1%�' 0 %��C����+%�7' �6�7%�����+�$�%��0 $#8��%�(%$%-21$%��kelias��vardas��$�prievardis"��
4.1.2.2. Fail� savybes ir j� keitimas Procedure GetFAttr (var failo_kintamasis; var savybes: word); Procedure SetAttr (var failo_kintamasis; var savybes: word);
! %��D ��%9>3@��>$%�+' 7�' /%-' ��1%�(�(%1��+%�(��$�! ��7�2[ 1�%192/�"�! %��%���20 %���3,1��%192$1%�"�
! %��' �(%�2&+%�1%-�1�+$%-2�+%1%�' 0 D �$��+��>/2N�
function FSearch(Failo_vardas: PathStr; katalogu_rinkinys ; string):PathStr;
! %��D �19%$+>-' �G��+B�/' �2���$�($' B27,$' �2�>$%��%�7' /%-��&�2�1�(%�N�
Type Pathstr = string[79]; {pilnas failo vardas} DirStr = string[67]; {katalogas} Namestr = string[8]; {failo vardas} ExtStr = string[4]; {prievardis}
4.1.2.3. Duomenys apie disko talp� function DiskFree(diskas : byte):longint;
K��G��+B�/%�0 $#8��%��%��9' ��%1-��1�2��+�2+6�3%�1%��"����+' �N���-2$������T N�O�����N�O����$�1"1"��
function Disksize (diskas : byte): longint;
! ��+B�/%�0 $#8��%�7��+' �1%�(#�3%�1%��"�
function ParamStr(indeksas : word);
K���G��+B�/%�0 $#8��%�92�+�%-' ��' ��($' 0 $%-' ��9%$7%�"�
program failo_vardas; uses Dos; var pilnas_vardas : string; katalogas : DirStr; vardas : NameStr; prievardis : extStr; begin pilnas_vardas := ParamStr(0);
� ��
Fsplit(pilnas_vardas, katalogas, vardas, prievardis); writeln('Veikiamasis katalogas yra: ', katalogas); writeln('Programos failo vardas : ', vardas); writeln('Failo prievardis yra : ', prievardis); end.
K�' ��G��+B�/' ���&92�1��N�
Veikiamasis katalogas yra: Informatika/konsole/ Programos failo vardas : paramstr Failo prievardis yra :
4.1.2.4. Daugiau Dos modulio galimybi� demonstruojantis pavyzdys
program DosDemo; { modulio DOS galimybiu demonstracija } uses Crt,Dos; var ch : char; procedure Dir; { parodo veikiamojo katalogo turini } var katalogas : DirStr; { Modulio Dos tipas } failoSav : SearchRec; { Modulio Dos tipas } begin GetDir(0,katalogas); {Koks yra veikiamasis katalogas?} writeln('Veikiamasis katalogas: ',katalogas); writeln; FindFirst('*.*',Archive,failoSav); { randa pirma faila } while DosError = 0 do begin writeln(failoSav.Name); FindNext(failoSav) { iesko kitu failu} end; writeln; writeln(DiskFree(0),' laisvu baitu is ',DiskSize(0), ' galimu.') end; procedure Parodyk_laika; { rodo sistemini laika } var val,min,sek,simt : word; begin writeln; write('Siuo metu yra: '); repeat GetTime(val,min,sek,simt); write(val:2,':',min:2,':',sek:2,'.',simt:2); GotoXY(25,WhereY) until KeyPressed end; begin { programa } ClrScr; Dir; ch:=ReadKey; Parodyk_laika end. { programa DOSDemo }
� .�
�$' 0 $%-' ���&92�1���-%�' �+' -(��12$>/2�AT ' $�%�7��%�B%��%(���+' /2��292�+�%VVC�
Veikiamasis katalogas: /users/moroz/Informatika/konsole DIR_MANO.C a.out dir_mano.rez SYSTEM.C system.rez DIR.PAS dir dir.o dir.rez PARAMSTR.PAS paramstr paramstr.o DOSDEMO.PAS dosdemo.rez dosdemo.o dosdemo 1306564608 laisvu baitu is 10569627648 galimu. Siuo metu yra: 11:31: 7.52
4.2. Standartin�s C funkcijos darbui su laiku ir data ������G��+B�/D �%�32��($�+�%��' �+2�21%��G��+B�/D �����%�+���+�$�D �%($%&%��>$%�(%1%�(��1��1�-2"H �
%�1$%&F �D �G%��2"�
time_t�7�' -2�D �1�(%���+�$1%��+��1%-�2��2-���+�$��' ���%�7' /%��%�+' �G��+B�/' �"�
Sistemin� laik� �2+��7@-���0 $#8��%�G��+B�/%� time_t time (time_t *time);
Lokalus ir Grinvi�o��%�+%��>$%�0 %��%-%����%�7' /%�1�G��+B�/%���
struct tm *localtime (const time_t * timer); struct tm * gmtime (const time_t *timer);
��' -21��%�+%��>$%�92$F �%-%��6�6($%�1#�(%9�7%�#�G��+B�/' -����
char * asctime (const struct tm *tblock); char * ctime (const time_t *time);
Ctime�92$F �%��%�+#�6��;���-3' ��D �2���1? ��+�$�' ��(%3%�0 ' /2�>$%��%�/' ��2���1@����-3' ����Y\�Z��$�2���1@��(%3%�0 ' ����-3' ����Y\�Z"��' ��G' $-%1%��>$%�(%12�+�%-%��1' ��%��(%9>E7>/2"�
! ��+B�/%�strftime�G' $-%1�' /%��%�+' ��&92�16"�
�%9>E7>��������1$�' /%�1����%�+' �G��+B�/%�N�
/******************************************************************** * Tikslas: demonstruoti time.h funkcijas. * Failas: time_kml.c *******************************************************************/ #include <stdio.h> #include <time.h> int main() { time_t now; /* naudojame time_t tipa time modulio */ /* Kalendorinis laikas yra sekundziu skaicius nuo 1/1/1970 */
� 4�
now = time((time_t *)NULL); /* gauna sistemini laika ir * patalpina ji kintamajame 'now' */ printf("\n%s", ctime(&now)); /* Vercia 'now' i simb. eilute su '\n' */ /********************************************************/ /* dar vienas budas suzinoti laiko ir datos informacija */ time(&now); printf("%s", ctime(&now)); /* Format data in 'now' */ /**********************************************************/ /* trecias budas: */ time(&now); printf("%s", asctime(localtime( &now ))); /*************************************************************/ { struct tm *l_time; char string[20]; time(&now); l_time = localtime(&now); strftime(string, sizeof string, "%d-%b-%y\n", l_time); printf("%s", string); } return 0; }
�$' 0 $%-' ���&92�1���-%�' �+' -(��12$>/2�>$%�1' +�%N�
Mon Mar 29 12:57:24 2004 Mon Mar 29 12:57:24 2004 Mon Mar 29 12:57:24 2004 29-Mar-04
4.3. Operacin�s sistemos komand� vykdymas C programoje ! ��+B�/%��+9�2F �%�1��' (2$%B��@�����12-' ��+' -%�7#N�
int system (const char *komanda);
�2��+$2�(��>��>$%��@+-��0 %���1�' -21�G��+B�/%�0 $#8��%��"��2��69>+' �+�%�7%��1�' -21�>$%�0 $#8��%-%�$2�+&-@�:���' �+�%�7' ��+' 7%��>$%�($��+�$�%-��+��1%-�2��2-����� �������� �������T � ����� �] ��"�
! ��+B�/' ��92�+�-' �(%9>E7>�N�
/*************************************************************** * * Tikslas: Isbandyti kreipinio i sistema funkcija. * ***************************************************************/ #include <stdlib.h> main() { system("ls -l"); {return 0; DOS versijoje} }
K�' ��($' 0 $%-@�@���&92�1���-%�' �+' -(��12$>/2N�
total 12 -rw-rw-r-- 1 moroz moroz 966 Kov 26 08:47 DIR_MANO.C -rw-rw-r-- 1 moroz moroz 448 Kov 26 08:53 SYSTEM.C -rwxrwxr-x 1 moroz moroz 4304 Kov 26 08:54 a.out -rw-rw-r-- 1 moroz moroz 45 Kov 26 08:48 dir_mano.rez -rw-rw-r-- 1 moroz moroz 0 Kov 26 08:54 system.rez
� �
5 . REKURSIJA
5.1. Apibr�žtis �$' B27,$%�%$3%�G��+B�/%��+�$��+$2�(�%���6��%92�1�2��' 0 �%��A�&��%9' �(%F �' ��3�' +' C�%$3%��21�2��' 0 �%��
A(2$�+�1%��($' B27,$' ���$�G��+B�/' �C��9%7��%-%�$2+�$���2"��
5.2. Savyb�s �2+�$����%��%�0 ' $�1-%��1�$��32�7$D ��%9>3�D "��2+�$���@�G��+B�/%�(%12�+�%�(%($%�F �%���' �%$3%�
��! �� � � �� ��� �� ��($2�7�-#"��2��G��+B�/%�>$%�+9�2F �%-%�(%0 $��7�����%192/���/��1�2��' 0 �0 $#8��%�$2E��1%1#"��2��G��+B�/%�>$%�+9�2F �%-%���7@1��0 2���%-�%192/����G��+B�/%��87�' 1�2���($2�7�-#�7%���%�6�79��7%���N�6�+�$�#�1�$���($2�7��6�32��6���7@1��0 2��? ��87�' 16��+%��>$%�+9�2F �%-%��%�/%�G��+B�/' ��+' (�/%����(%($%�12�����9%$�%�1�"��
K���($' B2�%��>$%�9%7��%-%��� � ������ ��+ � ! � ��"���2+9�2�%-�$2+�$��/' ��8��0 �������+' ��%�0 ' $�1-%��7%���%��87�' 16�6�(%($%�12��2���($�2&�3�9? ��&+9�21�-%��>$%�%192$1���$��%�+�%��+' ��$2+�$��/%�(%��2+��(%0 $��7��6�%192/6"��%��>$%�(%��2+�%-%��(%0 $��7�����%192/����1�' -21�0 $#8��%-%��$2E��1%1%���&+9�21���%��$2+�$��/' ��+' (�/%�"��' ��%��>$%�0 $#8���-D ��2+%��+' ��6�(%0 $��7��? �G��+B�/#�>$%�0 $#8��%-%��$2E��1%1%�"�K�#�-21' 7�+#������1$�' ��-2�(%9>E78�%��"�
5.3. Rekursini� proced�r� formos �2+�$����D �($' B27,$D ��1$�+1,$%�0 %���3,1��.�$,&�D N�
�" �2�+�-%��%1��2+%-��($�2&�$2+�$���6��&+9�21�-#N�
procedure Rec;
begin
sakiniai;
if s�lyga then Rec;
end;
�" �2�+�-%���%1��2+%-��(' �$2+�$����' ��&+9�21�-' "���' -21�92�+�-%��>$%�%1��2+%-���0 $681%�1��&�$2+�$����' �0 $68�-' N�
procedure Rec;
begin
if s�lyga then Rec;
sakiniai;
end;
." �2�+�-%��%1��2+%-��1�2+�($�2&��1�2+�(' �$2+�$����' ��&+9�21�-' �
procedure Rec;
begin sakiniai1
if s�lyga then Rec;
sakiniai2;
procedure Rec;
begin
if s�lyga then begin sakiniai1;
� ;�
end; Rec;
Sakiniai2; end
end;
Rekursija ir iteracija ��2+�$2+�$��/%��1�2+��12$%B�/%�$2�&+�%�92�+�-D �+%$1' /�-#N�
� �12$%B�/%�+%$1' /�-' ��B2�%$�/D ��%�7' /%��&$2�+&1�����3,7���
� $2+�$��/%�O��2�&$2�+&1�����3,7���(%+%$1' 1��%���&+9�2�7%-%�G��+B�/' �+' (�/%�"��
��2+�$2+�$��/%��1�2+��12$%B�/%�%1��2+%�(%3%�0 ' ��1�+$���-#N�
� �12$%B�/%�3%�0 �%����+%��B�+�' �+%$1' /�-' ��#�>0 %�>$%�(%12�+��%-%"�
� $2+�$��/%�>$%�3%�0 �%-%��>$%�(%��2+�%-%��(%0 $��7�����%192/��"�
3�2-�%192/%���$2E��1%1%��>$%�(%��2+�%-%��(%8��0 �����N�
� �12$%B�/%�+2�F �%�B�+�' ��+%�1���+#��
� $2+�$��/%�0 %-��%�9���(%($%�12��6�%192/6"�
3�2-�%192/%���+%$1' /�-%��0 %���3,1��%-8���N�
� �12$%B�/%�0 %���(%12+1��6�%-8��#�B�+�#���2��B�+�' ��+%�1���+%���2(%��2+�%�$�3���D �$2�+&-�D �
� $2+�$��/%�0 %���1? �1���%-8��%���/2��8��0 ������2��($%�1��%��87�' 1�2���+��(%0 $��7���' �%192/' "�
�2+�$��/' ��1$,+�-%�N�
� /���7%�0 �+%$1D ����B�/�' /%�G��+B�/' ���&+9�21�-' �-2BH %��E-#��$�2�+9' /%-��1%-��+�$1��$2��$�%���3,12�1�($' B2�' $�%����%�+%���$�%1-��1��^�
� +�2+9�2�%-��&+9�21�-���+��1%-�2��2-��>$%��+�$�%-%�%1-��1����$�1%��0 %���$2�+%�%�1��7%�0 �%1-��1�2���&12+��D ^�
�12$%B�/%�(%($%�1%��>$%�%1��2+%-%�9�2�' ��G��+B�/' ��$�3' �2��1' 7@��&�D �$2��$�D �/���2$2�+%�%�/%"��%�(�$��+1���+%$1' /�-' �%($%&>-' �3,7#W �
� �2+�$����%��%�0 ' $�1-%��>$%�0 2$2����1�' -21��+%��/�2��%1,$%��%��%($%&' ��87�' 1�2���($2�7�-' �2�0 #"��%��+%7%��12$%B�/' ���($2�7��>��0 %���3,1���2%+�9%�E7����1�' -21�0 2$�%��>$%�$��+1���$2+�$���6�%�0 ' $�1-#"�
� �2��>$%�$2�+%�%�/%-%��+%7��87�' 1�2���($2�7�-%��3,1D �2G2+1>9����1�' -21�>$%�$2�+%-%����12$%B�/#"�
Pavyzdžiai
5.3.1. Faktorialo skai�iavimas
�2+�$��/#�8-' ��/%�(%86�1%���' ��2�' "��
�
�%�%0 $��@��-2�G��+B�/#� nn *...*2*1!� �
�
� *�
�' +�#�G' $-��? �0 %��-%�%($%&>1��(%($%�F �%�����B�+����(%9>E78������
program Faktorial;
var fact : Longint;
n, i : integer;
begin
write('Iveskite sveika skaiciu:');
readln (n);
fact := 1;
for i := 2 to n do
fact := fact * i;
writeln(n,'! = ', fact)
end.
�
! %+1' $�%�' ��#9' +#�0 %��-%�%(�3$@81���$�+�1%�(N� 1!0 � ��� 0��n � )!1(*! �� nnn �
�2-�%�1���&�%�%(�3$@81�-���(2$$%&>��-2�$2+�$��&+%��&�#�G' $-��? "��$%78�' /2�(%12�+�%-%��+' 7%���%�+%��' �+%�3%N�
program rekursinis_faktorialas;
var n : integer;
function Fact( i:integer ) : longint;
begin
if i = 1 then Fact := 1
else Fact := i * Fact(i-1);
end;
begin
write('Iveskite sveika skaiciu: ');
readln(n);
writeln(n,'! =', Fact(n))
end.
�2+�$������G%+1' $�%�' ��+%�F �%9�-' �%�0 ' $�1-%���%($%&>1%����+%�3%�
#include <stdio.h>
long Fact(long);
int main()
{
int n;
printf("\n Iveskite sveika skaciu:");
scanf("%d", &n);
printf ("%d! = %d\n", n, Fact(n));
return 0;
� <�
}
long Fact(long skaicius) {
if ( skaicius <=1 ) return 1;
else return (skaicius*Fact(skaicius-1));
}
5.3.2. Vienkryp�io s�rašo spausdinimas atvirkš�ia tvarka
K���(%9>E7>��3�9' �(%12�+1%��7�' -2�D ��1$�+1,$D ��"�"����+�$��>/2"�
5.3.3. Medžio ap�jimo rekursiniai algoritmai
�%9>E7>/2�>$%�(%12�+�%-%��-278�' �+,$�-%���$�%(@/�-%������19%$+%"��
5.3.3.1. Paskalio pavyzdys Medžio ap�jimo rekursini� algoritm� pavyzdžiai:
Program sukurti_medi;
type tree = ^treeNode;
treeNode = record
leftPtr : tree;
data : integer;
rightPtr : tree;
end;
procedure InsertNode( var treePtr : tree; value : integer);
begin
if treePtr = nil then
begin
new ( treePtr );
if treePtr <> nil then
begin
treePtr^.data := value;
treePtr^.leftPtr := nil;
treePtr^.rightPtr := nil;
end
else
writeln(value, 'Neitrauktas, nes truksta atminties.');
end
else
if value < treePtr^.data then
insertNode (treePtr^.leftPtr , value)
else
� =�
if value > treePtr^.data then
insertNode ( treePtr^.rightPtr, value )
else write('Kartojasi. ');
end;
Procedure inOrder( var treePtr : tree ); /* apeisime KVD tvarka */
begin
if treePtr <> nil then
begin
inOrder( treePtr^.leftPtr );
write ( treePtr^.data, ' ');
inOrder( treePtr^.rightPtr );
end
end;
var i, item : integer;
rootPtr : tree;
begin
rootPtr := nil;
writeln('===========================');
writeln( 'Skaiciai, saugomi medyje:' );
randomize;
for i:=1 to 10 do
begin
item := random(15);
write ( item, ' ' );
insertNode ( rootPtr, item )
end;
writeln;
writeln( 'Apeiname medi:' );
inOrder( rootPtr );
writeln;
end.
�
5.3.3.2. C kalba: #include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
� ;��
struct treeNode {
struct treeNode *leftPtr;
int data;
struct treeNode *rightPtr;
};
typedef struct treeNode TreeNode;
typedef TreeNode *TreeNodePtr;
void insertNode ( TreeNodePtr *, int );
void inOrder ( TreeNodePtr );
int main()
{
int i, item;
TreeNodePtr rootPtr = NULL;
srand( time(NULL) );
puts("---------------------");
printf("\nSkaiciai saugomi medyje: ");
for ( i = 1; i <= 10; i++ ) {
item = rand() %15;
printf ( "%3d ", item );
insertNode ( &rootPtr, item );
}
printf ( "\n\n Apeiname medi:" );
inOrder( rootPtr );
return 0;
}
void insertNode ( TreeNodePtr *treePtr, int value )
{
if ( *treePtr == NULL ) {
*treePtr = ( TreeNodePtr ) malloc ( sizeof ( TreeNode ));
if ( *treePtr != NULL) {
( *treePtr )->data = value;
( *treePtr )->leftPtr = NULL;
( *treePtr )->rightPtr = NULL;
}
else
� ;��
printf("%d neitrauktas i medi, nes truksta atminties.\n", value );
}
else
if ( value < ( *treePtr )->data )
insertNode (&((*treePtr)->leftPtr), value);
else if ( value > ( *treePtr )->data )
insertNode (&((*treePtr)->rightPtr), value);
else printf("Duplicated");
}
void inOrder(TreeNodePtr treePtr)
{
if (treePtr != NULL) {
inOrder (treePtr->leftPtr);
printf("%3d",treePtr->data );
inOrder (treePtr->rightPtr);
}
}
5.3.4. Naujos reiškm�s �traukimas � dvejetain� paieškos med�
5.3.4.1. Paskalio kalba Program sukurti_medi;
type medis=^virsune;
virsune = record
kaire : medis;
duom : integer;
desine : medis;
end;
procedure Iterpti_virsune(var virs : medis; reiksme : integer);
begin
if virs = nil then
begin
new( virs);
if virs <> nil then
begin
virs^.duom := reiksme;
virs^.kaire := nil;
virs^.desine := nil;
� ;��
end
else
writeln(reiksme, ' neitraukta, nes truksta atminties.');
end
else
if reiksme < virs^.duom then
Iterpti_virsune (virs^.kaire, reiksme)
else
if reiksme > virs^.duom then
Iterpti_virsune (virs^.desine, reiksme)
else write('dubliuojasi ');
end;
Procedure Infix_KVD(var virs : medis);
begin
if virs <> nil then
begin
Infix_KVD ( virs^.kaire);
write ( virs^.duom , ' ' );
Infix_KVD ( virs^.desine);
end
end;
var i, skaic:integer;
saknis:medis;
begin
saknis := nil;
writeln('==============================');
writeln('Skaiciai, saugomi medyje:');
randomize;
for i:=1 to 10 do
begin
skaic := random(15);
write(skaic,' ');
Iterpti_virsune( saknis, skaic)
end;
writeln;
writeln('Apeiname medi KVD tvarka:');
Infix_KVD(saknis);
� ;.�
writeln;
end.
��$' 0 $%-' ��9>+7>-' �$2E��1%1%�N��============================== Skaiciai, saugomi medyje: 2 13 4 12 8 3 13 dubliuojasi 12 dubliuojasi 2 dubliuojasi 12 dubliuojasi Apeiname medi KVD tvarka: 2 3 4 8 12 13 �
5.3.4.2. C kalba �
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
struct virsune {
struct virsune *kaire;
int duom;
struct virsune *desine;
};
typedef struct virsune MedzioVirsune;
typedef struct virsune * MedzioVirsRod;
void Iterpti_virsune(MedzioVirsRod *, int);
void Infix_KVD (MedzioVirsRod);
int main()
{
int i, skaic;
MedzioVirsRod saknis = NULL;
srand(time(NULL));
puts("----------------------------------------------");
printf("\n Skaiciai saugomi medyje: ");
for ( i = 1; i <= 10; i++ ) {
skaic = rand() %15;
� ;4�
printf("%3d ", skaic);
Iterpti_virsune(&saknis, skaic);
}
printf("\n\n Apeiname medi KVD tvarka:");
Infix_KVD(saknis);
printf("\n");
return 0;
}
void Iterpti_virsune(MedzioVirsRod *virs, int reiksme)
{
if ((*virs) == NULL) {
(*virs) = (MedzioVirsRod) malloc(sizeof(struct virsune));
if ((*virs) != NULL) {
(*virs)->duom = reiksme;
(*virs)->kaire = NULL;
(*virs)->desine= NULL;
}
else
printf("%d neitrauktas i medi, nes truksta atminties.\n", reiksme);
}
else
if ( reiksme < ( *virs )->duom )
Iterpti_virsune (&((*virs)->kaire), reiksme);
else if ( reiksme > ( *virs )->duom )
Iterpti_virsune (&((*virs)->desine), reiksme);
else printf("Dubliuojasi");
}
void Infix_KVD(MedzioVirsRod virs)
{
if (virs != NULL) {
Infix_KVD (virs->kaire);
printf("%3d",virs->duom );
Infix_KVD (virs->desine);
}
}
�
� ; �
6. R�šiavimo suliejimu (angl. mergesort) algoritmas �' (���%$�%����$�+�%9�-' �%�0 ' $�1-%��>$%��&�%-�%���&7@�1>1%�7' B"�7$"��%���%����%0 %�&�' �-21' 7��@/2�
-278�%0 ' /2N��H 11(NQ Q R R R "-�G"9�"�1Q S $%0 %����Q ��G�9%7%�Q �%�2����"H 1-��
K�%-2��+>$��/2�(%12�+�%-%��%�0 ' $�1-' �%($%&%���+�$�' ��@$%�-��@1' /2�-21' 7��@/2�($�2-' �@/2"�
�,&�%9�-' �����2/�-��%�0 ' $�1-%����7%$' ���$,&��' 1#��2+#��$,&��' 7%-%�79��(��2���$�/%������27%-%"��%�%&�%���+%�(�0 $2�1' �$,&�%9�-' �%�0 ' $�1-%���$,&�%9�-' �����2/�-��%�0 ' $�1-%��>$%�(%$2-1%��($��B�(��I�+%�7>+��$�9%�7>+J "�
6.1. Algoritmo aprašas 6 .& 2 "& .�.�
$� B �� C )������� � � � ��������� ���� ������� ���������! ��� ����� � �� �� ! ���� ���
�� 8 ���� ��� ��������� ��� � � ����#���� 8 ���� ��� �� ������ ��� � � ����#��A� ���� ��� ���#����� �� #���� ���
� �7 3 �8 .& 2 "& 9��: ��-% �"# '.( 0.�% ���'2 % �.���";�����< .& �"�"= '> 2 % "�
! �$�1�� %�1����77�2�A+%�$�' ��' ��7%��2��(%�+�1���' �2�2-2�1' ���72+�%�C���2>�L! �$�1"" %�1M��+�$�%-2�+%$�' /���$�72&���' /��7%�>��/%����$,&��' 1' ���1%��>$%�>$%�12�+��%-' ���#�>0 ' �N���2>L! �$�1M�_��2>L! �$�1U �M�_` �_��2>L��77�2M��$��2>L��77�2M�_��2>L��77�2U �M�_` �_��2>L %�1M"�
? �'.& �"�"= '> 2 % "�
������%��-%�>9%����$,&��' 1%�N��2>L! �$�1M�_��2>L! �$�1U �M�_` �_��2>L %�1M��
6 .& 2 "& .�.�
�" ��+' (�/�' 1���2>L! �$�1"�"� %�1M�6�(%0 %�3��6�-%�>9#��%0 %�3L! �$�1"" %�1M�
�" ��72+�%-������$�+�($��+�$1��$2�+&-? �! �$�1����72+����/�($��+�$1��$2�+&-? ���77�2U �"�
." �' �����_���77�2��$�/�_� %�1�
�2���%0 %�3L�M�>$%�-%82������8��%0 %�3L/M���
1%��+' (�/�' 1���%0 %�3L�M�6��2>L+M�����$�+�(%7�7��1��9�2�21�^�
($�2&��0 ��%192/���+' (�/�' 1���%0 %�3L/M�6��2>L+M��/��$�+�(%7�7��1��9�2�21�^�
4" �2��1$2F �%-2�8��0 ��>/2���+' �+%�$�' ��' ��(��@���2��+' (�/�' 1%�7%�����1�' -21���+' (�/�' 1��/#�6�-%�>9' �(%3%�0 #��2>L+"" %�1M�A/2��1$2F �%-2�8��0 ��>/2���+' �72&���' ��' ��7%��2��2�2-2�1%���/�2�/%��%1@/���%-2�-%�>92��1' 9@/' ��%9' �9�21' �2��$�/D ��2$2�+�%�/�7��1�C"�
�
6.2. Algoritmo sud�tingumo vertinimas �2$1��%�1�$,&�%9�-' ��%�+#��6($%�1%��92$1��%-2�$%+1' ��>0 ���-' �' (2$%B�/D ��+%�F �D "��%8>-@+�-2�/6�
�A�C"��%0 $��7�����$2+�$��/' ��%192/����
� � �A�C�a ����+%���b �"���1%���%192/%���������A�C�a ��A�Q �C�U ��A�Q �C�U �����c �"�
� ;;�
��$-%��7@-�' �$2�&+�%�+%�$@��(��@��$%+1D ��>0 ���-' �' (2$%B�/D ��+%�F �����%�1$%��O�72&��@��(��@��$,&�%9�-' �$%+1' ��>0 ���-' �' (2$%B�/D ��+%�F �����1$2F �%��O�' (2$%B�/' ���$2�+%���0 ' ��79�2/D �-%�>9D �����2/�-��"�
�%�+%�F ��' +�-2��;�2�2-2�1D �-%�>9' �$%+1' ��>0 ���-' �' (2$%B�/D ��+%�F �����A�;CN�
�A�;C�a ���A<CU ��;��A<C�a ���A4CU �<��A4C�a ���A�CU �4��A�C�a ���A�CU ����A�C�a ���
�' ��%��0 $681%-2��$�6�1%1' -2�$2�+&-2��
�A�C�a ����A�C�a ���A�C�U ����a ���U ����a ����A4C�a ���A�C�U �4��a ��X ��U �4��a �<��A<C�a ���A4C�U �<��a ��X <�U �<��a �4��A�;C�a ���A<C�U ��;��a ��X �4�U ��;��a �;4��
T 2�7$��%192/���
nn
Tnnn
Tnn
TnT *2)4
(*4)2
)4
((*2)2
(*2)( ������� �
�%8>-@+�-2�+�a ��' 0 ���O�1�2+��>0 F �D �1�$�-2��+��(%0 $��7���' �%192/' ��A�CN�
)1(log*log*log*)1(*)( ������ nnnnnnnTnnT ��
�%�0 ���92$1��%�1�%(>1�+$�%��0 %��%-2��%�+' ���7@1��0 �-#� )log*( nn� �O�9�2�%��' (1�-%��%���D ��&�9��D ��%0 $��@1D �%�0 ' $�1-D "�
�K6�%�0 ' $�1-#�0 %��-%�$2%��E�' 1��1�2+�$2+�$��&+%���1�2+��12$%B�&+%�"��
��
��
� ;*�
7. Simboli� eilut�s ��-3' ��D �2���F �D �%(7' $' /�-%���%�+%�>/2�>$%��&7@�1>1%��7' B"�7$"��%���%����%0 %�&�' �-21' 7��@/2�
-278�%0 ' /2N�H 11(NQ Q R R R "-�G"9�"�1Q S $%0 %����Q ��G�9%7%�Q ��-3����12�"H 1-��+�$�%�$2+' -2�7�' /���%�7' 1��"�
��+%�3%���-3' ��D �2���F �D �%(7' $' /�-%��>$%�%1��2+%-%���$2-�%�1���$' 7>+�@-��"��' 7@��&����+>$����>$%�(%12�+�%-%�����7%�>/2���&�%0 $��@/���$' 7>+�@��1�(#"�
7.1. Simboliai ir eilut�s
��-3' ����O�1%��int�1�(' �$2�+&-@��%(�+��%��1%�%(' �1$' G%����(%9>E78�����‘a’�>$%���-3' ��' �%�+' 7%���' �‘\n’�>$%��%�/' ��2���1@����-3' ��' �+' 7%�"�
��-3' ��D �2���1@�O���-3' ��D ��2+%��+�$��>$%�%(7' $' /%-%�+%�(�9�2�1��%��' 3/2+1%�"���-3' ��D �2���1@/2�0 %���3,1��$%�7@����+%�1-2�>����(2B�%�,����-3' ��%���+%�(�%�1%��U ��:��X ��Q ��d ��$�+�1�"�
7.2. Simboli� eilu�i� aprašymas ��-3' ���@��2���1@��>$%�9�2�-%F �' �-%�>9' �(' %�3��"���-3' ��D �2���1@���+�$�%�����' �6($%�1' �
��-3' ��D �-%�>9' �1�' ��+%7�/��3%�0 �%�������' ���-3' ����Y\�Z"��2����-3' ��D �2���1@�>$%�+�$�%-%���%�7' /%�1���1%-��+�$1' -���G��+B�/' -����&�����-3' ����>$%�6$%&' -%��%�1' -%1�&+%�"��2���%�7' 1' /%��(%1��G' $-�' /%�2���1? ��1�' -21�/%-�(%F �%-�12+��(%��$,(��1��6$%&>1��(%3%�0 ' ����-3' �6"��
��-3' ��D �2���1? �0 %��-%�%($%&>1��+2��%���3,7%��N�
� ��-3' ���@�+' ��1%�1%��� ��-3' ��D �ABH %$C�-%�>9���� ��' $' 7%�6���-3' �6��� ��-3' ��D �2���F �D �-%�>9�"�
7.2.1. Simboli� konstanta
��-3' ���@�+' ��1%�1%�>$%�$%&' -%�79�0 �3' �2�+%3�1@�2"�����1@����-3' ��%���$�(%3%�0 ' ����-3' ����>$%�$%&' -%����' �2+��%��%1-��1�2���#�12�@�2��(%9>E78�����
�%$7%�� �� �� �� �� � �� \��
�' -(���%1' $�������+%�F ��' /%��+�2+�%1-��1�2��$2�+�%��+�$1��1' +�%��+' ��1%�1%���$�%1�1��+%-%���&�+�$�%�/%��9�21' �"��2����-3' ��D �2��@/2�$2�+�%�(%�%�7' 1��79�0 �3' ��+%3�1@����-3' �6��1�' -21�($�2&�/6�>$%�$%&' -%��(%�9�$? ��3$,+&�>��\J "�
�%$7%��O�1%����' $' 7%��+�$��$' 7' �6���-3' ���@��+' ��1%�1' ��(�$-#/6���-3' �6"��
7.2.2. Simboli� eilut�
����1@�0 %���3,1��($��+�$�%-%�1�2+���-3' ��D �-%�>9����1�2+���' $' 7%��6���-3' �6��
char spalva[]="balta";
K���%($%&%����+�$�%�-%�>9#��(%�9%��+�$�%-2�>$%�(2�+��2�2-2�1%�N�Y3Z��Y%Z��Y�Z��Y1Z��Y%Z��Y\�Z"�
� ;<�
��1%��%($%&%�N�
const char * rod_spalva="balta";
��+�$�%�+��1%-#/6�rod_spalva��+�$���$' 7' �6�2���1? �"balta""��
�2$�2&%-�-' �(%�1%3%"��2��2���1@�>$%����B�%��E�' /%-%�BH %$�X �%($%&2��1%��1%�(����B�%��E�' 1%�2���1@�+%��+�$�' �2����12-' �2�0 %���3,1��1%�(��%-%�(%�1' 9�' /2�%1-��1�2��7%�>/2"��2��2���1? �3���+2�F �%-%�($' 0 $%-' /2��1%����2+�%�1�(2$�2&%-�-' �����B�%��E�' 1��2���1? �$2�+1D ���-3' ��D �-%�>92N�
char spalva[]={‘b’, ‘a’, ‘l’, ‘t’, ‘a’, ‘\0’};
K��' �%192/��-%�>9' ���0 ���>$%����1%1' -%��%�1' -%1�&+%�"��' -(���%1' $����(%�+%�F ��' /%���-3' ��D �+�2+6��$��&�+�$�%�%1�1��+%-#�9�21#"��2��>$%���$' 7' -%��-%�>9' �2�2-2�1D ��+%�F ����%($%&2��1�' -21�$2�+�%��2(%-�$&1���$�9�21#�NULL���-3' ����"��
�%8�' ��+�%�7' �N�
� �%-�$&1%-%��&�+�$1��9�21' ����-3' �����NULL"�� T %�7' -%��(%��7��1��2���1? ��+�$�' ��(%3%�0 ' /2��2��G' $-�' 1%��NULL���-3' ���"�
� ����� ����B ��� ��������� � ������ �� ��� �� ��� � ����� �� ������� ������� �� � �� � � ���� � � ��� ������ �� � �� �� ��� ��������! �� � ��� �����NULL���� �� ������� �� �����"��� ��� �� ���� ���! �� � ��� ��� B �� ����� � ��� ��! � �� �� ������ ��� � ��� � � � ��! ���� ��� ��� � ����� �� ����� � ����� �� � �� � � ��� �� � ���+ � � ��� � � � ���� � ��� ��� ! ��� � �� � �� �� ��� ���� ��� ! � (�� ��� ����
#include <stdio.h>
int main()
{
char eil1[30]="Juodas katinas"; /* konstanta */
char eil2[]="Baltas katinas"; /* konstanta */
char *eil3="Pilkas katinas"; /* kintamasis */
printf("eil1=%s\n", eil1);
printf("eil2=%s\n", eil2);
printf("eil3=%s\n", eil3);
return 0;
}
K�' ��($' 0 $%-' ��$2E��1%1%��>$%�1' +�2N�
eil1=Juodas katinas eil2=Baltas katinas eil3=Pilkas katinas
��$-�2/��7��%($%&>-' �3,7%��%�%�' 0 �&+��-%�>9%-�"��$2F �%��%($%&%��0 %��-%��1�+���-3' ��D �-%�>9%-�"�K��' �%192/��eil3�>$%�+��1%-%�������' $' 7%�6�2���1@"����%���%192/%���2���1@��9%$7%��>$%�
4-1 pavyzdys. Eilu�i� inicializavimo b�dai.
� ;=�
��' $' 7%�6�(�$-#/6�2���1@����-3' �6"��%7%�0 ��eil1��$�eil2�>$%�+' ��1%�1' ���1%��($��+>$�-%��eil1 = eil2�>$%��20 %��-%����2��+' ��1%�1D �$2�+&-�D ��20 %��-%�+2��1�"��%F �%��+�1%��($��+>$�-%��eil3 = eil2�>$%�12����0 %����2��eil3 >$%�+��1%-%���"�
�%�' 0 �&+%��79�-%F �%-�-%�>9���>$%��%�7' /%-%��2���F �D �-%�>9%�"�
char *spalvos[5]=”raudona spalva”, “melyna spalva”, “zalia spalva”, “oranzine spalva”, “juoda spalva”;
K��' �%192/���&6���-3' ��D �-%�>9#���7%$' �(2�+�' ����' $' 7' ��6���-3' ��D �2���12�"���$-' /�����' $' 7%�>$%�spalvos[0]���$�/��$' 7' �6�(�$-#�2���1? ��%�1$' /��O�spalvos[1]��$�$' 7' �6�%�1$#�2���1? ��$�(%�%&�%�"��2����-3' ��D �2���1@��>$%�%($%&' -' ��1%�(N�char [5][20]��1�' -21�9��' ��2���1@��3���9�2�' 7' ���0 �' "�1-��1���1' +���%192/��>$%��%�7' /%-%��22G2+1>9�%����2��3�����$' 7' -%��7>7���(%0 %����0 �%���#�2���1? "�
7.2.3. Eilut�s �vedimas (standartin�s funkcijos iš stdio.h)
����1@��6927�-%��%(�-%�%1-��1�2���&�+>$�-#��$�$2�+&-2��($��+>$�-#"���21%�%1-��1>/2�>$%��&�+�$�%-%��1%1�&+%���
char vardas[20]:
%$3%�7��%-�&+%���
char * vardas;
�%�1%$�' /��%192/���9�21%�>$%��&�+�$�%-%�7��%-�&+%����%�7' /%�1�G��+B�/%��malloc�%$3%�calloc���
vardas = malloc(20);
����1@��>$%�6927%-' ����%�7' /%�1�G��+B�/%��scanf()��$�gets()"�
! ��+B�/%�scanf()�6927%���-3' ��D �2���12�����$' 7%�1�/' -��G' $-%1#�%s"��%7%�0 ��2���1@��9%$7%��>$%�/' ��($%78�' ��%7$2�%���1' 7@���2�%�7' /%-2�e �($�2&�6927%-#�9%$7#N�
scanf( “%s”, word);
! ��+B�/%�gets()��+%�1' ���-3' �����1' ���+' ���2%(1��+%��%�/' ��2���1@��(' 8>-�' �‘\n’"�K�����-3' ����%1��$%�7%��(%�(%�7���������+�%9�&#"�K��G��+B�/%�($�2�692�1D ���-3' ��D �($�727%�����' ���-3' �6"��
#include<stdio.h>
int main()
{
char name[81];
printf("Kuo Jus vardu? ");
gets(name);
printf("Sveiki, %s \n", name);
return 0;
}
4-2 pavyzdys. Funkcijos gets() naudojimo paprastas pavyzd�lis.
� *��
�$' 0 $%-' ��$2E��1%1%�N�
Kuo Jus vardu? Ona Sveiki, Ona
! ��+B�/%�gets()�1�$��7%�0 �%��0 %��->3�D "��2��G��+B�/%�gets()�%(1��+%�G%��' �(%3%�0 ' ��(' 8>-6�EOF��1%��/��(2$�9%$7#�0 $#8��%�NULL�$2�+&-? "�NULL�$2�+&-@�%(�3$@81%�G%��2�<stdio.hc ��$��>0 ���"��' 7@��G��+B�/%�7%8�%���%�7' /%-%�1' +�' �2�+' ��1$�+B�/' �2N�
while(gets(name)!= NULL)
�' 7@��G��+B�/%�7%8�%���%�7' /%-%�1' +�' �2�+' ��1$�+B�/' �2N�
! ��+B�/%�sscanf(char *s, const char *format, …)�2+9�9%�2�1���B%�G���&�+>$���1%���+%7�6927%��&�-%�>9' ����' ��2��&�+�%9�%1,$' ���(%9>E7>�N�
7.2.4. Eilu�i� išvedimas
����1@-���&92�1��>$%��+�$1' ��79���1%�7%$1��@��G��+B�/' ��puts()��$�printf()"�Printf()�/%��3�9' ��%�7' /%-%��1' 7@��%(1%$��-2�puts()"����1�$��1�+�9�2�#�%$0 �-2�1#��3,12�1���' $' 7#�6��&927%-#�2���1? "��%9>E7>�������1$�' /%�puts()��%�7' /�-' �0 %��->32�"�
#include<stdio.h> /* isvestis.c */
#define DEF "Eilute #define."
int main()
{
static char eil1[]="Inicializuota eilute.";
char *eil2="Inicializuota rodykle.";
puts("Funkcijos puts() argumentas ");
puts(DEF);
puts(eil1);
puts(eil2);
puts(&eil1[3]); /* nuo ketvirto elemento */
puts(eil2+6);
}
K�' ��($' 0 $%-' ��92�+�' ��$2E��1%1%��>$%�1' +�N�
Funkcijos puts() argumentas Eilute #define. Inicializuota eilute. Inicializuota rodykle. cializuota eilute. lizuota rodykle.
K���(%9>E7>�������1$�' /%��+%7�1�2+�12+�1%��1%$(�+%3�F �D ��1�2+���-3' ��D �2���F �D �9%$7%���>$%���' $' 7' �"��1$' /2�2���1@/2���' �(%3%�0 ' ��>$%��(%��7��%-%��($%727%�1�+219�$1�' /����-3' �����$��+��2���1@��(%3%�0 ' ������' ���-3' ��' "��%�1%$%������-3' ����>$%�+2�F �%-%���%�/' ��2���1@����-3' ���"��' 7@���+�2+9�2�%��puts()��&927%-%��12+�1%��>$%��(%��7��%-%���&��%�/' ��2���1@�"��
4-3 pavyzdys. Puts() naudojimo ilistracija.
� *��
�%�0 ���G��+B�/%�puts()��(%��7��%��+������' ���-3' ��' �‘\0’"��' 7@����-3' ��D �-%�>9%-��&��G��+B�/%��21��+%��+%7%�0 ��/%-2��@$%�2���1@��(%3%�0 ' ��(' 8>-�' "��
�&927%�1�2���12����%�7' /%�1�G��+B�/#�printf()����$' 7' -%��%s�G' $-%1%�"��2��$2�+�%�(2$+2�1��8>-2+�6�6��%�/#�2���1? ��$2�+�%���$' 7>1���%�/' ��2���1@����-3' �6�‘\n’N�
printf(“%s\n”, SimbEilut�); = puts(SimbEilut�)
��%�����1$�' ��-2�sscanf��$�sprintf�G��+B�/%�"�
#include<stdio.h>
int main()
{
char str[]="31351 74.545",
eil[80]; int x;
double y;
puts("Demonstruojame eiluciu ivedimo ir isvedimo operacijas.");
sscanf(str, "%d%lf", &x, &y);
printf("%s\n%s%6d\n%s%8.3f\n",
"Reiksmes, kurios buvo issaugotos masyve:",
"sveika:",x, "ilga reali:",y);
sprintf(eil, "integer:%6d\ndouble:%8.2f", x, y);
printf("%s\n%s\n", "Formatuota isvestis, issaugota masyve yra:", eil);
return 0;
}
�$' 0 $%-' ��$2E��1%1%�N�
Demonstruojame eiluciu ivedimo ir isvedimo operacijas. Reiksmes, kurios buvo issaugotos masyve: sveika: 31351 ilga reali: 74.545 Formatuota isvestis, issaugota masyve yra: integer: 31351 double: 74.55
�' �9�2�#���-3' �6�6927%�G��+B�/#�getchar()��' ��&927%�putchar()"�
7.2.5. Kitos String.h funkcijos
��12$�212�0 %��-%�(%���+%�1>1��
H 11(NQ Q B2$-�B�"2�(B"G$Q S 1�Q �Q ! � ����� ��Q G��B1�' �"$2G"H 1-��
4-4 pavyzdys. Funkcij� sscanf ir sprintf naudojimo pavyzd�lis
� *��
7.2.6. Eilu�i� apdorojimo operacijos �BH %$�X ��1$B(>�A�BH %$�X $2E��BH %$�X ($%7�C� �' (�/�' /%�2���1@�prad�6�2���1? �rez"�
BH %$�X ��1$�B(>�A�BH %$�X $2E��BH %$�X ($%7������0 �27�+�2+�C� �' (�/�' /%�2���1@��prad�+�2+���-3' ��D �6�2���1? �rez"�
BH %$�X ��1$B%1�A�BH %$�X $2E��BH %$�X ($%7�C� ��/��0 �%�79��2���12��
BH %$�X ��1$�B%1�A�BH %$�X $2E��BH %$�X ($%7������0 �27�-%[ �2�C�
�$�/��0 �%�2���1@��prad�maxlen���-3' ��D �($�2�2���1@��rez�
��1��1$�2��A�BH %$�X 2���C� �%�+%�F ��' /%�2���1@����-3' ��D ��+%�F �D �32�����' ���-3' ��' "�
#include<stdio.h>
#include<string.h>
int main()
{
char x1[]="Laimingu ",
x2[]="Naujuju metu",
*x3="Viskas";
char x[25], y[25], z[17];
/* char x[25], *y, z[17]; luzimas */
unsigned ilgis;
strcpy(x,x1);
x3=strcpy(x1, x2);
printf("x1=%s\nx2=%s\nx3=%s\n",x1,x2, x3);
strcpy(y,x);
printf("\n%s%s\n%s%s\n",
"x simboliu eilute:", strcat(x,x2 ),
"y simboliu eilute:", y);
strncpy(z,x,16);
z[16]='\0';
printf("z simboliu eilute: %s\n", z);
ilgis=strlen(x);
printf("x eilutes ilgis: %d\n",ilgis );
printf("y eilutes ilgis: %d\n",strlen(y) );
printf("z eilutes ilgis: %d\n",strlen(z) );
return 0; }
4-5 pavyzdys. Keleto lentel�je pateikt� funkcij� naudojimas.
� *.�
K�' ��($' 0 $%-' ��$2E��1%1%��>$%�1' +�2N�
x1=Naujuju metu x2=Naujuju metu x3=Naujuju metu x simboliu eilute:Laimingu Naujuju metu y simboliu eilute:Laimingu z simboliu eilute: Laimingu Naujuju x eilutes ilgis: 21 y eilutes ilgis: 9 z eilutes ilgis: 16 �
7.2.7. Eilu�i� palyginimas
��1��1$B-(�A�BH %$�X ����BH %$�X ���C� �2E��1%1%�����/2����a a ��^����������������b ���/2����b ��^����������������c ���/2����c ��"�
��1��1$�B-(��A�BH %$�X ����BH %$�X ������1�-%[ �2��C� �2E��1%1%�����/2����a a ��^����������������b ���/2����b ��^����������������c ���/2����c ��"� >0 ��%-��1�+�(�$-��-%[ �2����-3' ��%��
#include<stdio.h> /* palyg.c */
#include<string.h>
int main()
{
char x1[]="Laimingu ",
x2[]="Naujuju metu";
/* char x[25], y[25], z[17];*/
char x[25], *y, z[17];
unsigned ilgis;
strcpy(x,x1);
strcpy(y,x);
printf("%s%s\n%s%s\n",
"x simboliu eilute:", strcat(x,x2 ),
"y simboliu eilute:", y);
strncpy(z,x,16);
z[16]='\0';
printf("z simboliu eilute: %s\n", z);
printf("\nLyginame x ir y: %d\n", strcmp(x,y) );
4-6 pavyzdys. Keleto lentel�je pateikt� funkcij� naudojimas.
� *4�
printf("Lyginame z ir x: %d\n", strcmp(z,x) );
printf("Lyginame y ir z pirmus 5 simbolius: %d\n", strncmp(y,z,5) );
return 0;
}
K�' ��($' 0 $%-' ��$2E��1%1%�N�
x simboliu eilute:Laimingu Naujuju metu y simboliu eilute:Laimingu z simboliu eilute: Laimingu Naujuju Lyginame x ir y: 78 Lyginame z ir x: -32 Lyginame y ir z pirmus 5 simbolius: 0 ��
7.2.8. Paieška eilut�se BH %$�X �1$BH $�A�BH %$�X ($%7��BH %$���C� ����1@/2�prad��2&+' �(�$-' /' ���-3' ��' ��>0 %����"��2��
�2$%�7%��0 $#8��%�NULL"�
BH %$�X �1$$BH $ABH %$�X 2����BH %$�BC� �2$8�,$��2���1? �eil��+' ��(%��$' 7' �(%�+�1�������-3' ����c"��2���2$%�7%��0 $#8��%�NULL"�
��E2)1��1$B�(�ABH %$�X 2�����BH %$�X 2���C� $#8��%���0 6�eil1�7%��2����' �2���1@��($%78�' ���+�$�' /2��@$%���-3' ��D ��&�eil2"�
��E2)1��1$�(�ABH %$�X 2�����BH %$�X 2���C� $#8��%���0 6�eil1�7%��2����' �2���1@��($%78�' ���+�$�' /2�>$%���-3' ��D ��&�eil2"�
BH %$�X �1$(3$+ABH %$�X 2�����BH %$�X 2���C� �2$8�,$��2���1? �eil1�1' ���+' ��%(1��+%�(�$-#/6���-3' �6��2�%�16�eil2"��2��$%�7%��1%��G��+B�/%�0 $#8��%���' $' 7#��6�$%�1#���-3' �6�2���1@/2�eil1"��2���2$%�7%��0 $#8��%�NULL"�
BH %$�X �1$�1$ABH %$�X ����BH %$�X ��C^� �2&+' �2���1@��s2�2���1@/2�s1"��2��$%7' ��0 $#8��%���' $' 7#�6�$%�1#�2���1? �2���1@/2�s1"��2���2$%�7%��0 $#8��%�NULL"�
#include<stdio.h>
#include<string.h>
int main()
{
char *eilute="Cia yra tekstas",
*kita="et";
char simbolis='a';
if (strchr(eilute, simbolis)!=NULL)
printf("Simbolis \'%c\' rastas eiluteje \"%s\"\n", simbolis, eilute);
4-7 pavyzdys. Keleto lentel�je pateikt� funkcij� naudojimas.
� * �
else
printf("Simbolis \'%c\'nerastas eiluteje \"%s\"\n", simbolis, eilute);
printf("Eilutes \"%s\" segmento ilgis, kuriame nera eilutes \"%s\" simboliu ilgis yra %d\n",
eilute, kita, strcspn(eilute, kita));
return 0;
}
Simbolis 'a' rastas eiluteje "Cia yra tekstas" Eilutes "Cia yra tekstas" segmento ilgis, kuriame nera eilutes "et" simboliu ilgis yra 8 ��
7.2.9. Kai kurios simboli� apdorojimo funkcijos, iš ctype.h ���1���7�0 �1�A��1�BC� �$�2�O�/2��c��+%�1-�' ��($�2&��0 ��%192/��O�G%��2"�
��1���%�(H %�A��1�BC� �$�2�O�/2��c�$%�7@��($�2&��0 ��%192/��O�G%��2"�
��1���%���-�A��1�BC� �$�2�O�/2��c�$%�7@�%$3%��+%�1-�' ��($�2&��0 ��%192/��O�G%��2"�
��1����' R 2$�A��1�BC� �$�2�O�/2��c�-%8' /��$%�7@��($�2&��0 ��%192/��O�G%��2"�
��1����((2$�A��1�BC� �$�2�O�/2��c�7�78�' /��$%�7@��($�2&��0 ��%192/��O�G%��2"�
��1�1' �' R 2$�A��1�BC� �2��c�7�78�' /��$%�7@��1%��G��+B�/%�0 $#8��%�%1�1��+%-%��-%8#/#�$%�7? "��2��-%8' /���1%��0 $#8��%�1#�(%F �#�$2�+&-? "�
��1�1' �((2$�A��1�BC� �2��c�-%8' /��$%�7@��1%��G��+B�/%�0 $#8��%�%1�1��+%-%��7�78�#/#�$%�7? "��2��7�78�' /���1%��0 $#8��%�1#�(%F �#�$2�+&-? "�
��1����(%B2�A��1�BC� �$�2�O�/2��c�1%$(%���($�2&��0 %��O�G%��2"�
��1���B�1$��A��1�BC� �$�2�O�/2��c�9%�7%�1�����-3' �����($�2&��0 %��O�G%��2"�
�%9>E78�����
a='2';
printf("%s \n", isdigit(a)? "a yra skaitmuo":"a n�ra skaitmuo");
! $%0 -2�1' �9>+7>-' �$2E��1%1%�N�
a yra skaitmuo
7.2.10. Kitos funkcijos ��1��1$�B-(ABH %$�X ����BH %$�X ��C� �2E��1%1%�����/2����a a ��^�
���������������b ���/2����b ��^����������������c ���/2����c ��"��21�+$��%-%��$%�78�D �$20 ��1$%��
��1��1$��B-(ABH %$�X ����BH %$�X ������1�-%[ �2�C� �2E��1%1%�����/2����a a ��^����������������b ���/2����b ��^����������������c ���/2����c ��"� >0 ��%-��1�+�(�$-��maxlen�
� *;�
��-3' ��%�"��21�+$��%-%��$%�78�D �$20 ��1$%�"�
BH %$�X �1$�R $ABH %$�X 2��C�� �2$927%�9�����eil���-3' �����6�%(%1��6�$20 ��1$#�A-%8#��%��$%�72�C��
BH %$�X �1$�($ABH %$�X 2��C� �2$927%�9�����eil���-3' �����6�9�$&�1��6�$20 ��1$#�A7�78�#��%��$%�72�C��
BH %$�X �1$7�(ABH %$�X 2��C� �%�7' /%�1�G��+B�/%�malloc�2���1@��eil�+' (�/%��>$%��+�$�%-%�9�21%"�
BH %$�X �1$�21ABH %$�X 2����BH %$�BH C� � 8(��7' �2���1? �eil���-3' ��%���ch"�
BH %$�X �1$��21ABH %$�X 2����BH %$�BH ������0 �27�+�2+C� � 8(��7' �+�2+�2���1@��eil���-3' ��D ���-3' ��%���ch"�
Pavyzdžiai
program eiluciu_apdorojimas;
var x1,x2,y:string;
x : string[25];
z : string[17];
ilgis:byte;
begin
x1:='Laimingu ';
x2:='Naujuju metu!';
x:=Copy(x1,1,length(x1));
y:=Copy(x,1,length(x));
x:=Concat (x,x2);
writeln('x simboliu eilute: ',x);
writeln('y simboliu eilute: ',y);
z:=Copy(x,1,16);
writeln('z simboliu eilute: ',z);
writeln('X simboliu eilutes ilgis: ',length(x));
writeln('Y simboliu eilutes ilgis: ',length(y));
writeln('Z simboliu eilutes ilgis: ',length(z));
end.
#include<stdio.h>
#include<string.h>
int main()
{
4-8 pavyzdys. Eilu�i� kopijavimas ir spausdinimas
4-9 pavyzdys. Eilu�i� ilgio nustatymas ir spausdinimas
� **�
char x1[]="Laimingu ",
x2[]="Naujuju metu",
*x3="Viskas";
char x[25], y[25], z[17];
/* char x[25], *y, z[17]; luzimas */
unsigned ilgis;
strcpy(x,x1);
x3=strcpy(x1, x2);
printf("x1=%s\nx2=%s\nx3=%s\n",x1,x2, x3);
strcpy(y,x);
printf("\n%s%s\n%s%s\n",
"x simboliu eilute:", strcat(x,x2 ),
"y simboliu eilute:", y);
strncpy(z,x,16);
z[16]='\0';
printf("z simboliu eilute: %s\n", z);
printf("x eilutes ilgis: %d\n",strlen(x) );
printf("y eilutes ilgis: %d\n",strlen(y) );
printf("z eilutes ilgis: %d\n",strlen(z) );
return 0;
}
�
K�%-2��+>$��/2�(%12�+�%-' ��7%8��%���%�7' /%-' ��' (2$%B�/' �������-3' ��D �2���1@-��"��%$3������2���1@-�����+%�3' /2�>$%���+�$1��(�@1���%���+�$��' ���%�7' 1��(%1' 0 �%����2��(%12�+�%-%��3,7%�"��%F �%��&���3,7%��>$%�(2$�2&%-%��69%�$��' �2���+%�3' ��92$��/' �2"��
� *<�
Literat�ra �"���%7%����-%�' ���"�� ��� ��������- ���� �� ��� �����5�: "�f +%�������������==."�
�"��%�������%0 %�&��"���G' $-%1�+' ��69%7%�N�-21' 7��@�($�2-' �@"�����"�H 11(NQ Q R R R "-�G"9�"�1Q S $%0 %����Q ��G�9%7%�Q ��72[ "H 1-���
."��' �%��T �' ��+�����>1%�1%��T �+&�%�1�����' �%���-' ����+%����1%�%����78�,�%�"�� �� ! ��� �� �� � ����� �� �� ��<���� ! ��� �� �� ������- ���� �� ��� ����"�I�-%�1�/' �J ��2�7>+�%���%��%�������"�
4"�g "��"��2�12����"��"��2�12�"�� <��� D �� ���� ! ��� ����H �$7�27�1�' ����$2�1�B2�g %��������"�
"�h "�i "�i j k l m n o ��p "p "�p q r s t u v n o l ��w "�x "�y l z { | } u q l ��~ "�� "�h r v � q "�� ltl�u �zn �zkn�klmm uknolqu� "�x l { � l ��~ n | � u l ���=<<*�
�