Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ элСктричСской схСмы

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Ѐункция int **memory (int k) выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ. Π§Ρ‚Π΅Π½ΠΈΠ΅ списка ΠΏΠΎ Ρ†Π΅ΠΏΡΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ тСкстового Ρ„Π°ΠΉΠ»Π°. РисованиС Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Ρ†Π΅ΠΏΡŒ-Π΄Π΅Ρ€Π΅Π²ΠΎ) Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°. Ѐункция int kol_elem (CepCont *st) подсчитываСт количСство элСмСнтов. По Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌΡƒ описанию схСмы сформируСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ связности. Else MessageBox (hwnd, «ΠΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ исходныС Π΄Π°Π½Π½Ρ‹Π΅», «ΠžΡˆΠΈΠ±ΠΊΠ°!», 0); Else… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ элСктричСской схСмы (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Аннотация Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ запискС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ описаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ формирования Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ элСктричСской схСмы. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ схСмы Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ ΡΡ€Π΅Π΄Π΅ Microsoft Visual Studio 2005 (C++) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΈ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ прСдставлСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. Π’Π°ΠΊΠΆΠ΅ прСдставлСны Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

графовая модСль ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

1.ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1.1ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния

1.2Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

1.3ОписаниС логичСской структуры

1.4Cтруктурная схСма основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1.5Алгоритм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ vvod ()

1.6 Алгоритм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ int **matr ()

2.ОписаниС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

1. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1.1 ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° формирования Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ элСктричСской схСмы написана Π² ΡΡ€Π΅Π΄Π΅ Microsoft Visual Studio 2005.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ имя «PraktikaDasha».

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСтся Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Visual Studio 2005 C++, Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΆΠ΅ присутствия исполняСмого Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ произвСсти запуск ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows.

1.2 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для формирования Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ элСктричСской схСмы.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

1. Π§Ρ‚Π΅Π½ΠΈΠ΅ списка ΠΏΠΎ Ρ†Π΅ΠΏΡΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ тСкстового Ρ„Π°ΠΉΠ»Π°.

2. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ списка ΠΏΠΎ Ρ†Π΅ΠΏΡΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° (с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ динамичСской структуры — Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ списка)

3. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ свяхности.

4. РисованиС Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Ρ†Π΅ΠΏΡŒ-Π΄Π΅Ρ€Π΅Π²ΠΎ) Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°.

1.3 ОписаниС логичСской структуры ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ части — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ уровням ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. КаТдая ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свою Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс написания ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ†Π΅Π»ΠΎΠΌ. Π”Π°Π»Π΅Π΅ приводится описания назначСния всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Ѐункция CepCont *vvod_file (char file_name [ ]) позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ динамичСский список.

Ѐункция void vivod_spis (CepCont *st, HWND hwndEdit) Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ список ΠΏΠΎ Ρ†Π΅ΠΏΡΠΌ Π½Π° ΡΠΊΡ€Π°Π½.

Ѐункция int kol_elem (CepCont *st) подсчитываСт количСство элСмСнтов.

Ѐункция void del_matr (int **matr, int k) удаляСт Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

Ѐункция int **memory (int k) выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

Ѐункция int **form_matr (CepCont *st, int k) ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ список Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

Ѐункция void vivod_matr (int **matr, int k, HWND hwndEdit) Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ связности Π½Π° ΡΠΊΡ€Π°Π½.

Ѐункция void save_matr (char file_name [ ], int **matr, int k) сохраняСт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Ρ„Π°ΠΉΠ».

Ѐункция void del_spis (CepConrt *BegSpis) удаляСт динамичСский список.

Ѐункция MyDlgProc (HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний Π΄ΠΈΠ°Π»ΠΎΠ³Π°.

1.4 Cтруктурная схСма основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1.5 Алгоритм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ vvod ():

1.6 Алгоритм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ int **matr ()

2. ОписаниС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π”Π°Π½Π° схСма Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° № 12:

Боставим Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ описаниС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ схСмы Π² Π²ΠΈΠ΄Π΅ списка ΠΏΠΎ Ρ†Π΅ΠΏΡΠΌ:

1 3

1 1

7 1

7 3

2 2

2 1

7 2

3 2

1 2

3 1

4 4

1 3

2 2

3 2

4 1

5 2

3 3

5 1

6 3

4 2

6 1

7 5

7 2

4 3

6 2

8 3

5 2

6 3

7 4

По Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌΡƒ описанию схСмы сформируСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ связности

0 1 1 0 0 0 1

1 0 1 0 0 0 1

1 1 0 1 1 0 0

0 0 1 0 0 2 0

0 0 1 0 0 1 0

0 0 0 2 1 0 2

1 1 0 0 0 2 0

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ Π³Ρ€Π°Ρ„:

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

#include

#include

#include «resource.h»

#include

#include

char file_name[MAX_PATH+1], customfilter[100];

int **matr, k, flag;

OPENFILENAME of, sf;

struct CepCont

{

int ce, kk;

CepCont *adres;

};

CepCont *BegSpis=NULL;

CepCont *vvod_file (char file_name[])

{

int ce, kk;

FILE*f_in;

f_in=fopen (file_name," r");

if (f_in≠NULL)

{

CepCont *st=NULL;

CepCont *sp=NULL;

while (fscanf (f_in," %d%d" ,&ce,&kk)==2)

{

st=new CepCont;

if (BegSpis==NULL) BegSpis=st;

else sp->adres=st;

sp=st;

st->ce=ce;

st->kk=kk;

}

if (sp≠NULL) sp->adres=NULL;

fclose (f_in);

return BegSpis;

}

else

{

return NULL;

}

}

void vivod_spis (CepCont *st, HWND hwndEdit)

{

int n, i;

char buf[25];

while (st≠NULL)

{

sprintf (buf, «Π¦Π΅ΠΏΡŒ%dtΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²%d», st->ce, st->kk);

SendMessage (hwndEdit, EM_REPLACESEL, 0,(LPARAM)buf);

SendMessage (hwndEdit, EM_REPLACESEL, 0,(LPARAM)" rn");

n=st->kk;

st=st->adres;

for (i=0; i

{

sprintf (buf, «Π­Π»Π΅ΠΌΠ΅Π½Ρ‚%d ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚%d», st->ce, st->kk);

SendMessage (hwndEdit, EM_REPLACESEL, 0,(LPARAM)buf);

SendMessage (hwndEdit, EM_REPLACESEL, 0,(LPARAM)" rn");

st=st->adres;

}

SendMessage (hwndEdit, EM_REPLACESEL, 0,(LPARAM)" rn");

}

}

int kol_elem (CepCont *st)

{

int max=0, i, n;

while (st≠NULL)

{

n=st->kk;

st=st->adres;

for (i=0; i

{

if (st->ce>max) max=st->ce;

st=st->adres;

}

}

return max;

}

void del_matr (int **matr, int k)

{

for (int i=0; i

delete []matr[i];

delete []matr;

}

int **memory (int k)

{

int **matr=new int *[k];

if (matr==NULL) return NULL;

for (int i=0; i

{

matr[i]=new int [k];

if (matr[i]==NULL)

{

del_matr (matr, i);

return NULL;

}

}

return matr;

}

int **form_matr (CepCont *st, int k)

{

int i, j, n;

int **matr=memory (k);

CepCont *sp;

if (matr==NULL) return NULL;

for (i=0; i

for (j=0; j

matr[i][j]=0;

while (st≠NULL)

{

n=st->kk;

st=st->adres;

if (n≠0)

{

for (i=0; i

{

sp=st;

st=st->adres;

if (sp->ce≠st->ce)

{

matr[sp->ce-1][st->ce-1]++;

matr[st->ce-1][sp->ce-1]++;

}

}

st=st->adres;

}

}

return matr;

}

void vivod_matr (int **matr, int k, HWND hwndEdit)

{

char buf[256];

for (int i=0;i

{

for (int j=0;j

{

sprintf (buf," %d «, matr[i][j]);

SendMessage (hwndEdit, EM_REPLACESEL, 0,(LPARAM)buf);

}

SendMessage (hwndEdit, EM_REPLACESEL, 0,(LPARAM)" rn");

}

}

void save_matr (char file_name[], int **matr, int k)

{

FILE*f_out;

f_out=fopen (file_name," w");

if (f_out≠NULL)

{

fprintf (f_out," ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° связностиn");

for (int i=0;i

{

for (int j=0;j

fprintf (f_out," %d «, matr[i][j]);

fprintf (f_out, «n»);

}

fclose (f_out);

}

}

void del_spis (CepCont *BegSpis)

{

CepCont *sp=NULL;

while (BegSpis≠NULL)

{

sp=BegSpis->adres;

delete BegSpis;

BegSpis=sp;

}

}

int CALLBACK MyDlgProc (HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)

{

const double pi=3.14 159;

switch (msg)

{

case WM_INITDIALOG:break;

case WM_COMMAND:

switch (LOWORD (wp))

{

case IDCANCEL:

{

del_spis;

del_matr;

return EndDialog (hwnd, IDCANCEL);

}

case IDOPEN:

{

char initialdir[MAX_PATH+1];

getcwd (initialdir, MAX_PATH+1);

memset (&of, 0, sizeof (of));

of.lStructSize=sizeof (of);

of.lpstrFilter="ВСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ (*.txt)*.txt" «Π’сС Ρ„Π°ΠΉΠ»Ρ‹ (*.*)*.*» ;

of.nFilterIndex=1;

of.lpstrCustomFilter=customfilter;

of.nMaxCustFilter=100;

file_name[0]='';

of.lpstrFile=file_name;

of.nMaxFile=MAX_PATH+1;

of.lpstrInitialDir=initialdir;

of.lpstrTitle="Π”ΠΈΠ°Π»ΠΎΠ³ открытия Ρ„Π°ΠΉΠ»Π°" ;

if (GetOpenFileName (&of)≠0)

{

SetWindowText (GetDlgItem (hwnd, IDC_EDIT1), 0);

SetWindowText (GetDlgItem (hwnd, IDC_EDIT2), 0);

InvalidateRect (hwnd, 0, 0);

if (BegSpis≠NULL)

{

del_spis (BegSpis);

BegSpis=NULL;

}

if (matr≠NULL)

{

del_matr (matr, k);

matr=NULL;

}

if ((BegSpis=vvod_file (file_name))==NULL)

{

MessageBox (hwnd, «Π€Π°ΠΉΠ» Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚, ΠΈΠ»ΠΈ содСрТит Π½Π΅ Π²Π΅Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅», «ΠžΡˆΠΈΠ±ΠΊΠ°!», 0);

break;

}

}

break;

}

case IDSPIS:

{

if (BegSpis≠NULL)

{

SetWindowText (GetDlgItem (hwnd, IDC_EDIT1), 0);

vivod_spis (BegSpis, GetDlgItem (hwnd, IDC_EDIT1));

}

else MessageBox (hwnd, «ΠΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ исходныС Π΄Π°Π½Π½Ρ‹Π΅», «ΠžΡˆΠΈΠ±ΠΊΠ°!», 0);

break;

}

case IDMATRIX:

{

if (BegSpis≠NULL)

{

if (matr==NULL)

{

k=kol_elem (BegSpis);

matr=form_matr (BegSpis, k);

vivod_matr (matr, k, GetDlgItem (hwnd, IDC_EDIT2));

}

}

else MessageBox (hwnd, «ΠΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ исходныС Π΄Π°Π½Π½Ρ‹Π΅», «ΠžΡˆΠΈΠ±ΠΊΠ°!», 0);

break;

}

case IDGRAF:

{

if (matr≠NULL)

{

flag=1;

RECT rect;

rect.left=150;

rect.top=50;

rect.right=550;

rect.bottom=400;

InvalidateRect (hwnd,&rect, 1);

}

else MessageBox (hwnd, «ΠΠ΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°», «ΠžΡˆΠΈΠ±ΠΊΠ°!», 0);

break;

}

case IDSAVE:

{

char initialdir[MAX_PATH+1];

getcwd (initialdir, MAX_PATH+1);

memset (&of, 0, sizeof (of));

sf.lStructSize=sizeof (of);

sf.lpstrFilter="ВСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ (*.txt)*.txt" «Π’сС Ρ„Π°ΠΉΠ»Ρ‹ (*.*)*.*» ;

sf.nFilterIndex=1;

sf.lpstrCustomFilter=customfilter;

sf.nMaxCustFilter=100;

file_name[0]='';

sf.lpstrFile=file_name;

sf.nMaxFile=MAX_PATH+1;

sf.lpstrInitialDir=initialdir;

sf.lpstrTitle="Π”ΠΈΠ°Π»ΠΎΠ³ сохранСния Ρ„Π°ΠΉΠ»Π°" ;

if (GetSaveFileName (&sf)≠0) save_matr (file_name, matr, k);

else MessageBox (hwnd, «ΠΠ΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°», «ΠžΡˆΠΈΠ±ΠΊΠ°!», 0);

}

default: return 0;

}

case WM_PAINT:

int *xe, *ye, xc, yc, i, j;

char str[10];

float f;

HDC hdc;

HPEN hpen, old_pen;

HBRUSH hbrush, old_brush;

PAINTSTRUCT ps;

hdc=BeginPaint (hwnd,&ps);

if ((matr≠NULL)&&(flag==1))

{

xe=new int [k];

ye=new int [k];

SetBkMode (hdc, TRANSPARENT);

hpen=CreatePen (PS_SOLID, 1, RGB (0,0,255));

hbrush=CreateSolidBrush (RGB (255,0,0));

f=2*pi/k;

for (i=0;i

{

xe[i]=150*cos (f*i)+360;

ye[i]=150*sin (f*i)+230;

}

old_pen=(HPEN)SelectObject (hdc, hpen);

old_brush=(HBRUSH)SelectObject (hdc, hbrush);

for (i=0; i

for (j=0; j

{

if (matr[i][j]>0)

{

MoveToEx (hdc, xe[i], ye[i], 0);

LineTo (hdc, xe[j], ye[j]);

sprintf (str, «%d», matr[i][j]);

xc=(xe[i]+xe[j]-10)/2;

yc=(ye[i]+ye[j]-10)/2;

TextOut (hdc, xc, yc, str, 1);

}

}

for (i=0;i

{

sprintf (str," %d", i+1);

Ellipse (hdc, xe[i]-20,ye[i]-20,xe[i]+20,ye[i]+20);

TextOut (hdc, xe[i]-5,ye[i]-5,str, 1);

}

EndPaint (hwnd,&ps);

DeleteObject (hpen);

DeleteObject (hbrush);

delete[] xe, ye;

}

else EndPaint (hwnd,&ps);

default: return 0;

}

return 1;

}

int WINAPI WinMain

(

HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

DialogBox (0,MAKEINTRESOURCE (IDD_DIALOG), 0, MyDlgProc);

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ