Загрузка данных
<mxfile host="app.diagrams.net" modified="2026-10-16T07:45:00.000Z" agent="Mozilla/5.0" version="21.0.0" type="device">
<diagram id="lab15_task2" name="Задача 2">
<mxGraphModel dx="1000" dy="1000" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- 1. Начало -->
<mxCell id="node_start" value="Начало" style="rounded=1;whiteSpace=wrap;html=1;arcSize=50;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="340" y="40" width="120" height="40" as="geometry" />
</mxCell>
<!-- 2. Ввод st -->
<mxCell id="node_input" value="Ввод строки st" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="320" y="110" width="160" height="45" as="geometry" />
</mxCell>
<!-- 3. Инициализация внешнего цикла -->
<mxCell id="node_init" value="k = 0, i = 0" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="340" y="185" width="120" height="40" as="geometry" />
</mxCell>
<!-- 4. Внешний цикл: st[i] != '\0' -->
<mxCell id="node_loop_i" value="st[i] ≠ '\0'" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="330" y="255" width="140" height="70" as="geometry" />
</mxCell>
<!-- 5. Инициализация флага f = 0 и j = 0 -->
<mxCell id="node_init_f" value="f = 0, j = 0" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="340" y="355" width="120" height="35" as="geometry" />
</mxCell>
<!-- 6. Внутренний цикл: j < k -->
<mxCell id="node_loop_j" value="j < k" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="335" y="415" width="130" height="65" as="geometry" />
</mxCell>
<!-- 7. Проверка совпадения символа st[i] = st1[j] -->
<mxCell id="node_check_match" value="st[i] = st1[j]" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="330" y="505" width="140" height="65" as="geometry" />
</mxCell>
<mxCell id="node_set_f" value="f = 1" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="345" y="595" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="node_step_j" value="j = j + 1" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="345" y="650" width="110" height="30" as="geometry" />
</mxCell>
<!-- 8. Проверка флага f = 0 -->
<mxCell id="node_check_f" value="f = 0" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="335" y="725" width="130" height="65" as="geometry" />
</mxCell>
<mxCell id="node_add_char" value="st1[k] = st[i]
k = k + 1" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="335" y="815" width="130" height="40" as="geometry" />
</mxCell>
<!-- 9. Шаг внешнего цикла i = i + 1 -->
<mxCell id="node_step_i" value="i = i + 1" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="345" y="885" width="110" height="35" as="geometry" />
</mxCell>
<!-- 10. Завершение строки st1[k] = '\0' -->
<mxCell id="node_term_st1" value="st1[k] = '\0'" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="545" y="815" width="130" height="35" as="geometry" />
</mxCell>
<!-- 11. Вывод результатов -->
<mxCell id="node_out" value="Вывод k, st1" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="535" y="880" width="150" height="45" as="geometry" />
</mxCell>
<!-- 12. Конец -->
<mxCell id="node_end" value="Конец" style="rounded=1;whiteSpace=wrap;html=1;arcSize=50;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="550" y="955" width="120" height="40" as="geometry" />
</mxCell>
<!-- Связи (Стрелки) -->
<mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_start" target="node_input">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_input" target="node_init">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_init" target="node_loop_i">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Внешний цикл: Да -> f = 0, j = 0 -->
<mxCell id="e_loop_i_yes" value="Да" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;labelBackgroundColor=none;" edge="1" parent="1" source="node_loop_i" target="node_init_f">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Внешний цикл: Нет -> завершение строки st1[k] = '\0' -->
<mxCell id="e_loop_i_no" value="Нет" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=0.5;entryY=0;labelBackgroundColor=none;" edge="1" parent="1" source="node_loop_i" target="node_term_st1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="610" y="290" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="e4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_init_f" target="node_loop_j">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Внутренний цикл: Да -> проверка st[i] = st1[j] -->
<mxCell id="e_loop_j_yes" value="Да" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;labelBackgroundColor=none;" edge="1" parent="1" source="node_loop_j" target="node_check_match">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Проверка совпадения: Да -> f = 1 -->
<mxCell id="e_match_yes" value="Да" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;labelBackgroundColor=none;" edge="1" parent="1" source="node_check_match" target="node_set_f">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Проверка совпадения: Нет -> обход к j = j + 1 -->
<mxCell id="e_match_no" value="Нет" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=1;entryY=0.5;labelBackgroundColor=none;" edge="1" parent="1" source="node_check_match" target="node_step_j">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="490" y="538" />
<mxPoint x="490" y="665" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="e5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_set_f" target="node_step_j">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Возврат внутреннего цикла (слева): от j = j + 1 к ромбу j < k -->
<mxCell id="e_loop_j_back" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="node_step_j" target="node_loop_j">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="310" y="665" />
<mxPoint x="310" y="448" />
</Array>
</mxGeometry>
</mxCell>
<!-- Внутренний цикл: Нет (завершение поиска дублей) -> проверка флага f = 0 -->
<mxCell id="e_loop_j_no" value="Нет" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=0.5;entryY=0;labelBackgroundColor=none;" edge="1" parent="1" source="node_loop_j" target="node_check_f">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="515" y="448" />
<mxPoint x="515" y="705" />
<mxPoint x="400" y="705" />
</Array>
</mxGeometry>
</mxCell>
<!-- Проверка f = 0: Да -> запись в st1 -->
<mxCell id="e_check_f_yes" value="Да" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;labelBackgroundColor=none;" edge="1" parent="1" source="node_check_f" target="node_add_char">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Проверка f = 0: Нет -> обход записи к шагу i = i + 1 -->
<mxCell id="e_check_f_no" value="Нет" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=1;entryY=0.5;labelBackgroundColor=none;" edge="1" parent="1" source="node_check_f" target="node_step_i">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="490" y="758" />
<mxPoint x="490" y="903" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="e6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_add_char" target="node_step_i">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Возврат внешнего цикла (слева): от i = i + 1 к ромбу st[i] != '\0' -->
<mxCell id="e_loop_i_back" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0;entryY=0.5;" edge="1" parent="1" source="node_step_i" target="node_loop_i">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="400" y="940" />
<mxPoint x="250" y="940" />
<mxPoint x="250" y="290" />
</Array>
</mxGeometry>
</mxCell>
<!-- Выход: st1[k]='\0' -> Вывод -> Конец -->
<mxCell id="e7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_term_st1" target="node_out">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="node_out" target="node_end">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>