home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-06 | 50.3 KB | 1,681 lines |
- âïÇéÇ 10 -- 1 --
- --------
-
- æÄçäÇìêà èÄîîàÉùàæèêò äêÇâÉÇîî
- -----------------------------------------------------------------
-
- é ñá¡¡«⌐ ú½áóÑ ¼δ αáºαáí«ΓáѼ ¿ «»¿ΦѼ »α«úαá¼¼δ, ¬«Γ«αδÑ
- ¼«úπΓ íδΓ∞ ¿ß»«½∞º«óá¡δ ñ½∩ ß«ºñá¡¿∩ ¡á¿í«½ÑÑ πñ«í¡«ú« ó¿ñá
- »αÑñßΓáó½Ñ¡¿∩ ¬«¼¼ÑατÑ߬¿σ ñá¡¡δσ - ñ¿áúαá¼¼. 髺¼«ª¡«ßΓ∞
- »«½πτ¿Γ∞ τ¿ß½«óπε ¿¡Σ«α¼áµ¿ε ó ó¿ºπá½∞¡«⌐ Σ«α¼Ñ τáßΓ« «¬áºδóáÑΓß∩
- «τÑ¡∞ »«½Ñº¡«⌐. èᬠóδ ó߬«αÑ πíÑñ¿ΓÑß∞, ß«ºñá¡¿Ñ ñ¿áúαá¼¼ ¡Ñ
- »αÑñßΓáó½∩ÑΓ Γᬿσ Γαπñ¡«ßΓÑ⌐, ¬á¬ φΓ« »Ñαó«¡áτá½∞¡« ¬áªÑΓß∩.
-
- â½áóá X ¡áτ¿¡áÑΓß∩ «»¿ß᡿Ѽ »α«ßΓ«ú« ¿¡ßΓαπ¼Ñ¡Γáα¿∩,
- »«ºó«½∩εΘÑú« ßΓα«¿Γ∞ ñ¿áúαá¼¼δ. éΓ«αá∩ τáßΓ∞ ú½áóδ ß«ñÑনΓ
- «»¿ßá¡¿∩, ¬á¬ φëà ¿¡ßΓπ¼Ñ¡Γáα¿⌐ ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡ ñ½∩
- »«ßΓα«Ñ¡¿∩ »α«ßΓδσ, ¡« »«½Ñº¡δσ »α«úαá¼¼, ¬«Γ«αδÑ »«ºó«½∩εΓ
- óδó«ñ¿Γ∞ ¡Ñ߬«½∞¬« ñ¿áúαá¼¼ «ñ¡«óαѼѡ¡«.
-
- Åα¿¼Ñαδ ó ú½áóÑ ¡á»¿ßá¡δ ñ½∩ ¬«¼»∞εΓÑα«ó ßѼÑ⌐ßΓóá Éæ ß
- µóÑΓ¡δ¼ úαáΣ¿τÑ߬¿¼ áñá»ΓÑα«¼. êß»«½∞ºπÑΓß∩ τÑΓóÑαΓδ⌐ ó¿ñÑ«αѪ¿¼,
- Γᬠ¬á¬ «¡ »«ññÑনóáÑΓ óßÑ ó¿ñδ µóÑΓ¡δσ áñá»ΓÑα«ó. Äñ¡á¬«, óδ
- ¼«ªÑΓÑ ½Ñú¬« ¿º¼Ñ¡¿Γ∞ »αÑñ½«ªÑ¡¡δÑ Σπ¡¬µ¿¿ ñ½∩ Γ«ú«, τΓ«íδ
- αáí«ΓáΓ∞ ß ñαπú¿¼¿ Γ¿»á¼¿ áñá»ΓÑα«ó.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 2 --
-
-
- ìÄÉîÇïêçÇûêƒ äÇìì¢ò
- -----------------------------------------------------------------
-
- ÅÑαÑñ αáºαáí«Γ¬«⌐ »α«úαá¼¼δ «Γ«íαáªÑ¡¿∩ ñá¡¡δσ ¡á φ¬αá¡Ñ óá¼
- ß½ÑñπÑΓ π∩ß¡¿Γ∞, ¬á¬ τ¿ß½Ñ¡¡δÑ º¡áτÑ¡¿∩ »ÑαÑó«ñ∩Γß∩ ó
- ß««ΓóÑΓßΓóπεΘ¿Ñ ¬««αñ¿¡áΓδ φ¬αá¡á. èᬠóδ »«¼¡¿ΓÑ, αẼÑα¡«ßΓ∞
- φ¬αá¡á ó τÑΓóÑαΓ«¼ ó¿ñÑ«αѪ¿¼Ñ 320*200, »α¿τѼ 320 -
- ú«α¿º«¡Γá½∞¡á∩ αẼÑα¡«ßΓ∞ ¿ 200 - óÑαΓ¿¬á½∞¡á∩. ôτ¿Γδóá∩, τΓ«
- ñ¿áúαá¼¼δ ¿º«íαáªáεΓß∩ óÑαΓ¿¬á½∞¡δ¼¿ »«½«ßἿ, ñá¡¡δÑ ñ«½ª¡δ íδΓ∞
- »αÑ«íαẫóá¡δ Γᬿ¼ «íαẫ¼, τΓ«íδ «¡¿ »α¿¡¿¼á½¿ º¡áτÑ¡¿∩ ó
- ñ¿á»áº«¡Ñ «Γ 0 ñ« 199. äá¡¡δ⌐ »α«µÑßß »αÑ«íαẫóá¡¿∩ ¡áºδóáÑΓß∩
- ¡«α¼á½¿ºáµ¿Ñ⌐.
-
- ùΓ«íδ ¡«α¼á½¿º«óáΓ∞ º¡áτÑ¡¿Ñ, ¡Ñ«íσ«ñ¿¼« π¼¡«ª¿Γ∞ Ñú« ¡á
- ¡Ñ¬«Γ«αδ⌐ ¬«φΣΣ¿µ¿Ñ¡Γ, úáαá¡Γ¿απεΘ¿⌐ »«½πτÑ¡¿Ñ αѺπ½∞ΓáΓá ó
- ñ¿á»áº«¡Ñ αẼÑαá φ¬αá¡á. ä½∩ «»αÑñѽѡ¿∩ ¬«φΣΣ¿µ¿Ñ¡Γá,
- ¡Ñ«íσ«ñ¿¼« º¡áΓ∞ ¼á¬ß¿¼á½∞¡«Ñ ¿ ¼¿¡¿¼á½∞¡«Ñ º¡áτÑ¡¿∩ τ¿ßѽ,
- óδó«ñ¿¼δσ ó ó¿ñÑ ñ¿áúαá¼¼δ. ä½∩ «»αÑñѽѡ¿∩ »«ñσ«ñ∩ΘÑú«
- ¬«φΣΣ¿µ¿Ñ¡Γá, ¡Ñ«íσ«ñ¿¼« óδτÑßΓ∞ ¼¿¡¿¼á½∞¡«Ñ º¡áτÑ¡¿Ñ ¿º
- ¼á¬ß¿¼á½∞¡«ú« ¿ »«ñѽ¿Γ∞ óÑαΓ¿¬á½∞¡πε αẼÑα¡«ßΓ∞ φ¬αá¡á ¡á
- »«½πτÑ¡¡πε αạ«ßΓ∞. ê¡δ¼¿ ß½«óἿ, ñ½∩ 4-ú« ó¿ñÑ«αѪ¿¼á
- ¡«α¼¿απεΘ¿⌐ ¼¡«ª¿Γѽ∞ «»αÑñѽ∩ÑΓß∩ »« Σ«α¼π½Ñ:
-
- ¡«α¼¿απεΘ¿⌐_¼¡«ª¿Γѽ∞ = 200 / (¼áσ - min)
-
- Æá¬¿¼ «íαẫ¼, ¬áªñδ⌐ φ½Ñ¼Ñ¡Γ ñá¡¡δσ ¡«α¼á½¿ºπÑΓß∩ »«
- Σ«α¼π½Ñ:
-
- ¡«α¼á½¿º«óá¡¡«Ñ_ñá¡¡«Ñ = ¡Ñ«íαáí«Γá¡¡«Ñ_ñá¡¡«Ñ * ¡«α¼_¼¡«ª¿Γѽ∞
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 3 --
-
-
- ÉÇçÉÇüÄÆèÇ öôìèûêë ÅÄæÆÉÄàìêƒ äêÇâÉÇîî
- -----------------------------------------------------------------
-
- ÅαѪñÑ, τѼ αáºαáíáΓδóáΓ∞ Σπ¡¬µ¿ε, α¿ßπεΘπε ñ¿áúαá¼¼δ,
- ¡Ñ«íσ«ñ¿¼« Γ«τ¡« «»αÑñѽ¿Γ∞, τΓ« «¡á íπñÑΓ ñѽáΓ∞. é«-»Ñαóδσ, «¡á
- ñ«½ª¡á óδ»«½¡∩Γ∞ ßó«ε ú½áó¡πε ºáñáτπ - óδó«ñ¿Γ∞ ñá¡¡δÑ ó ó¿ñÑ
- ñ¿áúαá¼¼. öπ¡¬µ¿∩ ñ«½ª¡á ñ«»π߬áΓ∞ ¿ß»«½∞º«óá¡¿Ñ ó ¬áτÑßΓóÑ
- óσ«ñ¡«ú« »áαá¼ÑΓαá ¼áßß¿óá τ¿ßѽ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ¿
- »αÑ«íαẫóδóáΓ∞ ¿σ ó ¡«α¼á½¿º«óá¡¡δÑ µÑ½δÑ φ¬ó¿óá½Ñ¡Γδ. Åα«úαá¼¼á
- ñ«½ª¡á íδΓ∞ αÑÑ¡ΓÑαáíѽ∞¡«⌐ ¿ »«ºó«½∩Γ∞ α¿ß«óáΓ∞ ¡Ñ߬«½∞¬«
- ñ¿áúαá¼¼ «ñ¡«óαѼѡ¡«. öπ¡¬µ¿∩ ñ«½ª¡á Γá¬ªÑ ß«ñÑαªáΓ∞ áαúπ¼Ñ¡Γ,
- «»αÑñѽ∩εΘ¿⌐ αáßßΓ«∩¡¿Ñ ¼Ñªñπ ñ¿áúαἼἿ, ß««ΓóÑΓßΓóπεΘ¿¼¿
- αáº¡δ¼ »«ß½Ññ«óáΓѽ∞¡«ßΓ∩¼ ñá¡¡δσ, ¿, ¡á¬«¡Ñµ, «¡á ñ«½ª¡á
- »«ºó«½∩Γ∞ «»αÑñѽ∩Γ∞ Γ«½Θ¿¡π ½¿¡¿⌐ ñ¿áúαá¼¼δ.
-
- Åα«úαá¼¼á Σπ¡¬µ¿¿ bargraph(), »α¿óÑñÑ¡¡á∩ ¡¿ªÑ,
- πñ«ó½ÑΓó«α∩ÑΓ φΓ¿¼ ΓαÑí«óá¡¿∩¼.
-
-
- /* éδó«ñ ñ¿áúαá¼¼δ */
- void bargraph(data,num,offset,min,max,width)
- double *data; /* ¼áßß¿ó ñá¡¡δσ */
- int num; /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ó ¼áßß¿óÑ */
- int offset; /* αáßßΓ«∩¡¿Ñ ¼Ñªñπ ñ¿áúαἼἿ */
- int min,max; /* ¼¿¡. ¿ ¼á¬. óδó«ñ¿¼δÑ º¡áτÑ¡¿∩ */
- int width; /* Γ«½Θ¿¡á ½¿¡¿⌐ */
- {
- int y,t,incr;
- double norm_data,norm_ratio,spread;
- char s[80];
- static int color = 0;
- int tempwidth;
-
- /* óßÑúñá ¿ß»«½∞ºπ⌐ΓÑ αẽ¿τ¡δÑ µóÑΓá */
- color++;
- if ( color > 3 ) color = 1;
-
- /* «»αÑñѽѡ¿Ñ ¡«α¼¿απεΘÑú« ¼¡«ª¿Γѽ∩ */
- spread = (double)max-min;
- norm_ratio = 180/spread;
-
- incr = 280/num;/* «»αÑñѽѡ¿Ñ »α«¼ÑªπΓ¬á ¼Ñªñπ º¡áτÑ¡¿∩¼¿ */
- tempwidth = width;
- for (t=0;t<num;++t) {
- norm_data = data[t];
-
- /* »«ñú«¡¬á «Γα¿µáΓѽ∞¡δσ º¡áτÑ¡¿⌐ */
- norm_data = norm_data-(double)min;
- norm_data *= norm_ratio; /* ¡«α¼¿α«óá¡¿Ñ */
- y = (int)norm_data; /* »αÑ«íαẫóá¡¿Ñ Γ¿»á */
- do {
- Line(179,((t*incr)+20+offset+width),179-y,
- ((t*incr)+20+offset+width),color);
- width--;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 4 --
-
-
- } while(width);
- width = tempwidth;
- }
- }
-
- äáóá⌐ΓÑ ΓΘáΓѽ∞¡« αáºíÑαѼ ñá¡¡πε »α«úαá¼¼π. öπ¡¬µ¿∩
- bargraph() »«½πτáÑΓ τÑαѺ óσ«ñ¡δÑ »áαá¼ÑΓαδ: ¼áßß¿ó ñá¡¡δσ, τ¿ß½«
- φ½Ñ¼Ñ¡Γ«ó ó ¼áßß¿óÑ, αáßßΓ«∩¡¿Ñ ¼Ñªñπ ñ¿áúαἼἿ (ñ½∩ ß½πτá∩
- «ñ¡«óαѼѡ¡«ú« óδó«ñá ¡Ñ߬«½∞¬¿σ ñ¿áúαá¼¼), ¼¿¡¿¼á½∞¡«Ñ ¿
- ¼á¬ß¿¼á½∞¡«Ñ º¡áτÑ¡¿∩ ñá¡¡δσ ¿ Φ¿α¿¡π ½¿¡¿⌐ ñ¿áúαá¼¼ (Φ¿α¿¡á
- ½¿¡¿¿ ºáñáÑΓß∩ ó Ññ¿¡¿µáσ αáßΓαá). æΓáΓ¿τÑ߬á∩ »ÑαѼѡ¡á∩ color
- «»αÑñѽ∩ÑΓ ¡«óδ⌐ µóÑΓ »α¿ »«óΓ«α¡δσ «íαáΘÑ¡¿∩σ ¬ bargraph().
- Æá¬¿¼ «íαẫ¼, αẽ¿τ¡δÑ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ ñá¡¡δσ »α¿ ¿σ
- «ñ¡«óαѼѡ¡«¼ óδó«ñÑ íπñπΓ ¿º«íαáªÑ¡δ ñ¿áúαἼἿ αẽ¿τ¡«ú«
- µóÑΓá. Åα¿ óδτ¿ß½Ñ¡¿¿ ¡«α¼¿απεΘÑú« ¼¡«ª¿Γѽ∩ ó¼ÑßΓ« ¼á¬ß¿¼á½∞¡«⌐
- óδß«Γδ φ¬αá¡á (200 ñ½∩ 4-ú« ó¿ñÑ«αѪ¿¼á) ¿ß»«½∞º«óá¡« ¼Ñ¡∞ΦÑÑ
- τ¿ß½« - 180, τΓ« ó »«ß½ÑñπεΘѼ »«ºó«½¿Γ ¿ß»«½∞º«óáΓ∞ ñóÑ ßΓ᫬¿
- φ¬αá¡á ñ½∩ óδó«ñá »«∩ß¡∩εΘÑ⌐ ¿¡Σ«α¼áµ¿¿. Äíδτ¡« πñ«í¡ÑÑ, Ñß½¿
- ñ¿áúαá¼¼á »«½¡«ßΓ∞ε ºá¡¿¼áÑΓ φ¬αá¡ ¡Ñºáó¿ß¿¼« «Γ ¬«½¿τÑßΓóá
- óδó«ñ¿¼δσ τ¿ßѽ. ìá»α¿¼Ñα, ñ¿áúαá¼¼á, «ΓαáªáεΘá∩ ¼á½δÑ ¡áí«αδ
- ñá¡¡δσ, óδú½∩ñ¿Γ í«½ÑÑ »α¿ó½Ñ¬áΓѽ∞¡«⌐, Ñß½¿ «¡á ºá¡¿¼áÑΓ óÑß∞
- φ¬αá¡, á ¡Ñ ß«ó«¬π»¡«ßΓ∞ ßí¿óΦ¿σß∩ ó ¬πτπ óÑαΓ¿¬á½∞¡δσ »«½«ß ó
- «ñ¡«¼ ¿º πú½«ó φ¬αá¡á. ä½∩ αẼÑΘÑ¡¿∩ ñ¿áúαá¼¼δ «Γ¡«ß¿Γѽ∞¡«
- Φ¿α¿¡δ φ¬αá¡á »«ß½Ññ¡∩∩ (ºñÑß∞ Γá¬ªÑ µÑ½Ñß««íαạÑÑ ¿ß»«½∞º«óáΓ∞
- ¼Ñ¡∞ΦÑÑ τ¿ß½« 280 ó¼ÑßΓ« 300) ñѽ¿Γß∩ ¡á ¬«½¿τÑßΓó« óδó«ñ¿¼δσ
- φ½Ñ¼Ñ¡Γ«ó, »«½πτÑ¡¡δ⌐ αѺπ½∞ΓáΓ ºáΓѼ ¿ß»«½∞ºπεΓ »α¿ «»αÑñѽѡ¿¿
- ú«α¿º«¡Γá½∞¡δσ ¬««αñ¿¡áΓ ßΓÑভÑ⌐ ñ¿áúαá¼¼δ. é ¬«¡µÑ »α«úαá¼¼δ
- óδ»«½¡∩ÑΓß∩ µ¿¬½¿τÑ߬á∩ ¡«α¼á½¿ºáµ¿∩ ñá¡¡δσ ¿ óδτÑατ¿óá¡¿Ñ ½¿¡¿⌐
- ºáñá¡¡«⌐ Γ«½Θ¿¡δ ß π¬áºá¡¡δ¼ ß¼ÑΘÑ¡¿Ñ¼.
-
- öπ¡¬µ¿∩ bargraph() - ¬½ετÑóá∩ Σπ¡¬µ¿∩, ¡« φΓ« Γ«½∞¬« «ñ¡« ¿º
- ¼¡«ú¿σ ßαÑñßΓó, »«ºó«½∩εΘ¿σ óá¼ α¿ß«óáΓ∞ ñ¿áúαá¼¼δ »«τΓ¿ ½εí«ú«
- ó¿ñá. Äß¡«ó¡δÑ ¿º φΓ¿σ ßαÑñßΓó óδ πº¡áÑΓÑ ó »α«µÑßßÑ ñá½∞¡Ñ⌐ΦÑú«
- ¿º½«ªÑ¡¿∩ ¼áΓÑα¿á½á.
-
-
- éδτÑατ¿óá¡¿Ñ ½¿¡¿¿ ¡π½Ñó«ú« πα«ó¡∩.
- -----------------------------------
-
- ä¿áúαá¼¼á íπñÑΓ óδú½∩ñÑΓ∞ í«½ÑÑ »α¿ó½Ñ¬áΓѽ∞¡«⌐ ¿ ¡áú½∩ñ¡«⌐,
- Ñß½¿ óñ«½∞ ¡¿ª¡Ñú« ¬αá∩ óδτÑαΓ¿Γ∞ ½¿¡¿ε ¡π½Ñó«ú« πα«ó¡∩.
- Åα«úαá¼¼á Σπ¡¬µ¿¿ grid(), »αÑñßΓáó½Ñ¡¡á∩ ó ñá¡¡«¼ αáºñѽÑ, ß½πª¿Γ
- ¿¼Ñ¡¡« ñ½∩ φΓ¿σ µÑ½Ñ⌐.
-
- /* éδó«ñ ½¿¡¿¿ ¡π½Ñó«ú« πα«ó¡∩ */
- void grid(min,max)
- int min,max;
- {
- register int t;
-
- goto_xy(22,0); printf("%d",min);
- goto_xy(0,0); printf("%d",max);
- line(180,10,180,300,1);
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 5 --
-
-
-
- éδ ó¿ñ¿ΓÑ, τΓ« Σπ¡¬µ¿∩ grid() ΓᬠªÑ, ¬á¬ ¿ bargraph()
- «ßΓáó½∩ÑΓ ó¡¿ºπ ñóÑ ßΓ᫬¿ ñ½∩ óδó«ñá »«∩ß¡∩εΘ¿σ ¼ÑΓ«¬ ¿ ñαπú«⌐
- ß»αáó«τ¡«⌐ ¿¡Σ«α¼áµ¿¿.
-
-
- éδó«ñ ¼ÑΓ«¬ φ½Ñ¼Ñ¡Γ«ó ñ¿áúαá¼¼.
- -------------------------------
-
- ùáßΓ« »«½∞º«óáΓÑ½ε ¡Ñ«íσ«ñ¿¼« »«¼ÑτáΓ∞ º¡áτÑ¡¿∩, óδó«ñ¿¼δÑ
- ñ¿áúαá¼¼«⌐. ìá»α¿¼Ñα, ¡á ñ¿áúαá¼¼Ñ, »«¬áºδóáεΘÑ⌐ ¿º¼Ñ¡Ñ¡¿Ñ
- »α¿í뫨 ¬«α»«αᵿ¿ ºá »∩Γ∞ ½ÑΓ, µÑ½Ñß««íαạ« ¬áªñδ⌐ ßΓÑαªÑ¡∞
- ñ¿áúαá¼¼δ »«¼ÑΓ¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿¼ ú«ñ«¼. è«¡Ñτ¡«, óδ óßÑúñá
- ¼«ªÑΓÑ φΓ« ßñѽáΓ∞ óαπτ¡πε, ¿ß»«½∞ºπ∩ Σπ¡¬µ¿¿ goto_xy() ¿
- printf(); Σπ¡¬µ¿∩ label(), »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, «ßó«í«ñ¿Γ óáß «Γ
- φΓ«⌐ απΓ¿¡¡«⌐ αáí«Γδ, «¡á áóΓ«¼áΓ¿τÑ߬¿ óδó«ñ¿Γ ¡Ñ«íσ«ñ¿¼δÑ ¼ÑΓ¬¿
- ó ¡πª¡«¼ ¼ÑßΓÑ φ¬αá¡á. éσ«ñ¡δ¼¿ »áαá¼ÑΓαἿ Σπ¡¬µ¿¿ label()
- ∩ó½∩εΓß∩: ¼áßß¿ó ¼ÑΓ«¬ ¿ ¿σ ¬«½¿τÑßΓó«. 使¡á ¬áªñ«⌐ ¼ÑΓ¬¿
- «úαá¡¿τÑ¡á 20 ß¿¼ó«½á¼¿ ( ó¬½ετá∩ π¬áºáΓѽ∞ ¬«¡µá ), ¡« φΓ« ¡Ñ
- ∩ó½∩ÑΓß∩ ªÑßΓ¬¿¼ «úαá¡¿τÑ¡¿Ñ¼ ¿ »α¿ ¡Ñíσ«ñ¿¼«ßΓ¿ óδ ¼«ªÑΓÑ ½Ñú¬«
- ¿º¼Ñ¡¿Γ∞ ¼á¬ß¿¼á½∞¡πε ñ½¿¡π ¼ÑΓ«¬.
-
-
- /* éδó«ñ ¼ÑΓ«¬ ¡á φ¬αá¡ */
- void label(str,num)
- char str[][20]; /* ¼áßß¿ó ¼ÑΓ«¬ */
- int num; /* ¬«½¿τÑßΓó« ¼ÑΓ«¬ */
- {
- int i,j,inc;
-
- inc = 38/num;
- i = 2; /* «»αÑñѽѡ¿Ñ ¡áτá½∞¡«⌐ Γ«τ¬¿ */
- for (j=0;j<num;j++) {
- goto_xy(23,i);
- printf(str[j]);
- i += inc;
- }
- }
-
-
-
-
-
- éδτÑατ¿óá¡¿Ñ óß»«¼«úáΓѽ∞¡δσ ½¿¡¿⌐.
- -----------------------------------
-
- é ¡Ñ¬«Γ«αδσ ß½πτá∩σ »«½Ñº¡« óδó«ñ¿Γ∞ ú«α¿º«¡Γá½∞¡δÑ »«½«ßδ
- ñ½∩ ßαáó¡Ñ¡¿∩ óδß«Γ ßΓÑভÑ⌐ ñ¿áúαá¼¼δ. Æá¬ ¬á¬ ß»½«Φ¡δÑ ½¿¡¿¿
- ¼«úπΓ «Γó½Ñ¬áΓ∞ »«½∞º«óáΓѽ∩, Γ« ñ½∩ φΓ«⌐ µÑ½¿ ½πτΦÑ ¿ß»«½∞º«óáΓ∞
- »π¡¬Γ¿α¡δÑ ½¿¡¿¿. öπ¡¬µ¿∩ hashlines(), »α¿óÑñÑ¡¡á∩ ¡¿ªÑ, α¿ßπÑΓ
- ΓαÑíπѼδÑ »π¡¬Γ¿α¡δÑ ½¿¡¿¿.
-
- /* éδó«ñ »π¡¬Γ¿α¡δσ ½¿¡¿⌐ */
- void hashlines()
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 6 --
-
-
- {
- int i,j;
- for (i=10;1<180;i+=10) {
- for (j=10;j<300;j+=5)
- mempoint(i,j,3); /* «ñ¡á Γ«τ¬á ¡á ¬áªñδÑ 5 Ññ¿¡¿µ
- αáßΓαá */
- }
- }
-
- éδó«ñ ¡áñ»¿ßÑ⌐.
- ---------------
-
- Åα¿ «ñ¡«óαѼѡ¡«¼ óδó«ñÑ ¡Ñ߬«½∞¬¿σ ¡áí«α«ó ó ó¿ñÑ ñ¿áúαá¼¼
- »«½Ñº¡« «»αÑñѽ¿Γ∞ µóÑΓ ñ¿áúαá¼¼δ, ß««ΓóÑΓßΓóπεΘ¿⌐ ¬áªñ«¼π
- ¡áí«απ. ¥Γ« ¼«ª¡« ßñѽáΓ∞, ¡á»α¿¼Ñα, óδñáó ¡áñ»¿ß∞, ß«ñÑαªáΘπε
- ¡á¿¼Ñ¡«óá¡¿Ñ ¡áí«αá ¿ ¿ß»«½∞ºπѼδ⌐ ñ½∩ ¡Ñú« µóÑΓ ñ¿áúαá¼¼δ.
- öπ¡¬µ¿∩ legend(), »α¿óÑñÑ¡¡á∩ ºñÑß∞, óδó«ñ¿Γ ¡á¿¼Ñ¡«óá¡¿∩ ¡áí«α«ó
- ¿ »α∩¼«πú«½∞¡¿¬ ß««ΓóÑΓßΓóπεΘÑú« µóÑΓá, ó ¬áτÑßΓóÑ óσ«ñ¡δσ
- »áαá¼ÑΓα«ó «¡á ¿ß»«½∞ºπÑΓ ß»¿ß«¬ ¡á¿¼Ñ¡«óá¡¿⌐ ¿ ¿σ ¬«½¿τÑßΓó«.
- öπ¡¬µ¿∩ legend() ¿ß»«½∞ºπÑΓ Σπ¡¬µ¿ε fill_box(), «»¿ßá¡¡πε αá¡ÑÑ,
- ñ½∩ óδó«ñá µóÑΓ¡«ú« »α∩¼«πú«½∞¡¿¬á.
-
- /* éδó«ñ ¡áñ»¿ß¿ */
- void legend(names,num)
- char names[][20];
- int num; /* ¬«½¿τÑßΓó« ¡á¿¼Ñ¡«óá¡¿⌐ */
- {
- int color = 1,i,j;
-
- goto_xy(24,0); /* ¡áñ»¿ß∞ »α«¿ºó«ñ¿Γß∩ ó »«ß½Ññ¡Ñ⌐ ßΓα«¬Ñ */
- j = 0;
- for (i=0;i<num;i++) {
- /* óδó«ñ ¡á¿¼Ñ¡«óá¡¿∩ */
- printf("%s ",names[i]);
- /* «»αÑñѽѡ¿Ñ ¬««αñ¿¡áΓδ µóÑΓ¡«ú« »α∩¼«πú«½∞¡¿¬á. é 4
- αѪ¿¼Ñ ¬áªñ«¼π ½¿ΓÑα¡«¼π ß¿¼ó«½π «Γó«ñ¿Γß∩ 8 Ññ¿¡¿µ
- αáßΓαá (ó Φ¿α¿¡π) */
- j += strlen(names[i]) * 8 + 4;
- fill_box(192,j,198,j+12,color);
- j += 28; /* »α«ñó¿ªÑ¡¿Ñ ¬ ß½ÑñπεΘÑ¼π »«½ε óδó«ñá */
- color ++;
- if ( color>3 ) color = 1;
- }
- }
-
- _________________________________________________________________
-
- âαáΣ¿τÑ߬¿⌐ α¿ßπ¡«¬ ¡á ßΓα 355 ¡Ñ ¼«ªÑΓ íδΓ∞ ó«¿ß»α«¿ºóÑñÑ¡
- ¿¼ÑεΘ¿¼¿ß∩ ßαÑñßΓóἿ. (ÉÑñ. »ÑαÑó«ñá ê.üδτ¬«ó߬¿⌐.)
- _________________________________________________________________
-
- É¿ß.10-1. ÉѺπ½∞ΓáΓ αáí«Γδ »α«úαá¼¼δ »«ßΓα«Ñ¡¿∩ ñ¿áúαá¼¼
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 7 --
-
-
-
- Åα«ßΓÑ⌐Φá∩ »α«úαá¼¼á óδó«ñá ñ¿áúαá¼¼.
- ------------------------------------
-
- æ½ÑñπεΘá∩ »α«úαá¼¼á »«¬áºδóáÑΓ óßÑ «»¿ßá¡¡δÑ Σπ¡¬µ¿¿ ó
- ñÑ⌐ßΓó¿¿. ÉѺπ½∞ΓáΓ ÑÑ αáí«Γδ »αÑñßΓáó½Ñ¡ ¡á α¿ß.10-1. Åα«úαá¼¼á
- óδó«ñ¿Γ ßαÑñ¡εε ßΓ«¿¼«ßΓ∞ ᬵ¿⌐ ΓαÑσ ¼¡¿¼δσ ¬«α»«αᵿ⌐ ºá »∩Γ∞
- ½ÑΓ.
-
- /* Åα«úαá¼¼¡á∩ ñѼ«¡ßΓαᵿ∩ »«ßΓα«Ñ¡¿∩ ñ¿áúαá¼¼ */
- #include "dos.h"
-
- void bargraph(),mode(),mempoint();
- void line(),goto_xy(),grid(),label();
- void hashlines(),legend(),read_cursor_xy();
- void palette(),color_puts(),fill_box();
-
- main()
- {
- double widget[] = {
- 10.1,20,30,35.34,50
- };
- double global[] = {
- 19,20,8.8,30,40
- };
- double tower[] = {
- 25.25,19,17.4,33,29
- };
- int min,max;
-
- char n[][20] = {
- "widget",
- "global",
- "tower"
- };
- char lab[][20] = {
- "1983",
- "1984",
- "1985",
- "1986",
- "1987"
- };
- mode(4); /* óδí«α αѪ¿¼á 320*200 */
- palette(0);
- grid(0,50); /* »«ßΓα«Ñ¡¿Ñ ½¿¡¿¿ ¡π½Ñó«ú« πα«ó¡∩ */
- hashlines(); /* óδó«ñ »π¡¬Γ¿α¡δσ ½¿¡¿⌐ */
- label(lab,5); /* óδó«ñ τ¿ßѽ */
- legend(n,3); /* óδó«ñ ¡áñ»¿ßÑ⌐ */
-
- /* óδó«ñ ¬παßá ᬵ¿⌐ ΓαÑσ ¬á¼»á¡¿⌐ */
- bargraph(widget,5,0,0,50,4);
- bargraph(global,5,10,0,50,4);
- bargraph(tower,5,20,0,50,4);
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 8 --
-
-
- getch();
- mode(3);
- }
-
- /* éδó«ñ ½¿¡¿¿ ¡π½Ñó«ú« πα«ó¡∩ ñ¿áúαá¼¼δ */
- void grid(min,max)
- int min,max;
- {
- register int t;
-
- goto_xy(22,0); printf("%d",min);
- goto_xy(0,0); printf("%d",max);
- line(180,10,180,300,1);
- }
-
- /* óδó«ñ ¼ÑΓ«¬ ¡á φ¬αá¡ */
- void label(str,num)
- char str[][20]; /* ¼áßß¿ó ¼ÑΓ«¬ */
- int num; /* ¬«½¿τÑßΓó« ¼ÑΓ«¬ */
- {
- int i,j,inc;
-
- inc = 38/num;
- i = 2; /* «»αÑñѽѡ¿Ñ ¡áτá½∞¡«⌐ Γ«τ¬¿ */
- for (j=0;j<num;j++) {
- goto_xy(23,i);
- printf(str[j]);
- i += inc;
- }
- }
-
- /* éδó«ñ »π¡¬Γ¿α¡δσ ½¿¡¿⌐ ¡á φ¬αá¡ */
- void hashlines()
- {
- int i,j;
-
- for (i=10;1<180;i+=10) {
- for (j=10;j<300;j+=5)
- mempoint(i,j,3); /* «ñ¡á Γ«τ¬á ¡á ¬áªñδÑ 5 Ññ¿¡¿µ
- αáßΓαá */
- }
- }
-
- /* óδó«ñ ¡áñ»¿ß¿ */
- void legend(names,num)
- char names[][20];
- int num; /* ¬«½¿τÑßΓó« ¡á¿¼Ñ¡«óá¡¿⌐ */
- {
- int color = 1,i,j;
-
- goto_xy(24,0); /* ¡áñ»¿ß∞ »α«¿ºó«ñ¿Γß∩ ó »«ß½Ññ¡Ñ⌐ ßΓα«¬Ñ */
- j = 0;
- for (i=0;i<num;i++) {
- /* óδó«ñ ¡á¿¼Ñ¡«óá¡¿∩ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 9 --
-
-
- printf("%s ",names[i]);
- /* «»αÑñѽѡ¿Ñ ¬««αñ¿¡áΓδ µóÑΓ¡«ú« »α∩¼«πú«½∞¡¿¬á. é 4
- αѪ¿¼Ñ ¬áªñ«¼π ½¿ΓÑα¡«¼π ß¿¼ó«½π «Γó«ñ¿Γß∩ 8 Ññ¿¡¿µ
- αáßΓαá ( ó Φ¿α¿¡π ) */
- j++ = strlen(names[i]*8+4);
- fill_box(192,j,198,j+12,color);
- j++ = 28; /* »α«ñó¿ªÑ¡¿Ñ ¬ ß½ÑñπεΘÑ¼π »«½ε óδó«ñá */
- color ++;
- if ( color>3 ) color = 1;
- }
- }
-
- /* éδτÑατ¿óá¡¿Ñ ñ¿áúαá¼¼δ */
-
- void bargraph(data,num,offset,min,max,width)
- double *data; /* ¼áßß¿ó ñá¡¡δσ */
- int num; /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ó ¼áßß¿óÑ */
- int offset; /* αáßßΓ«∩¡¿Ñ ¼Ñªñπ ñ¿áúαἼἿ */
- int min,max; /* ¼¿¡¿¼á½∞¡«Ñ ¿ ¼á¬ß¿¼á½∞¡«Ñ óδó«ñ¿¼δÑ º¡áτÑ¡¿∩ */
- int width; /* Γ«½Θ¿¡á ½¿¡¿⌐ */
- {
- int y,t,incr;
- double norm_data,norm_ratio,spread;
- char s[80];
- static int color = 0;
- int tempwidth;
-
- /* óßÑúñá ¿ß»«½∞ºπ⌐ΓÑ αẽ¿τ¡δÑ µóÑΓá */
- color++;
- if ( color > 3 ) color = 1;
-
- /* «»αÑñѽѡ¿Ñ ¡«α¼¿απεΘÑú« ¼¡«ª¿Γѽ∩ */
- spread = (double)max-min;
- norm_ratio = 180/spread;
-
- incr = 280/num; /* «»αÑñѽѡ¿Ñ »α«¼ÑªπΓ¬á ¼Ñªñπ º¡áτÑ¡¿∩¼¿*/
- tempwidth = width;
- for (t=0;t<num;++t) {
- norm_data = data[t];
-
- /* »«ñú«¡¬á «Γα¿µáΓѽ∞¡δσ º¡áτÑ¡¿⌐ */
- norm_data = norm_data-(double)min;
- norm_data *= norm_ratio; /* ¡«α¼¿α«óá¡¿Ñ */
- y = (int)norm_data; /* »αÑ«íαẫóá¡¿Ñ Γ¿»á */
- do {
- line(179,((t*incr)+20+offset+width),179-y,
- ((t*incr)+20+offset+width),color);
- width--;
- } while(width);
- width = tempwidth;
- }
- }
-
- /* éδó«ñ ½¿¡¿¿ ºáñá¡¡«ú« µóÑΓá, ¿ß»«½∞ºπ∩ íẫóδ⌐ á½ú«α¿Γ¼
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 10 --
-
-
- üαѺѡσá¼á */
- void line(startx,starty,endx,endy,color)
- int startx,starty,endx,endy,color;
- {
- register int t,distance;
- int x=0,y=0,delta_x,delta_y;
- int incx,incy;
-
- /* óδτ¿ß½Ñ¡¿Ñ αáßßΓ«∩¡¿⌐ »« «í«¿¼ ¡á»αáó½Ñ¡¿∩¼ */
- delta_x = endx - startx;
- delta_y = endy - starty;
- /* «»αÑñѽѡ¿Ñ ¡á»αáó½Ñ¡¿⌐ πóѽ¿τÑ¡¿∩ ¬««αñ¿¡áΓ, ¡π½Ñó«Ñ
- πóѽ¿τÑ¡¿Ñ ß««ΓóÑΓßΓóπÑΓ ½¿í« óÑαΓ¿¬á½∞¡«⌐, ½¿í«
- ú«α¿º«¡Γá½∞¡«⌐ ½¿¡¿¿ */
- if ( delta_x > 0 ) incx = 1 ;
- else if (delta_x == 0 ) incx = 0;
- else incx = -1;
- if ( delta_y > 0 ) incy = 1 ;
- else if (delta_y == 0 ) incy = 0;
- else incy = -1;
- /* «»αÑñѽѡ¿Ñ ¼á¬ß¿¼π¼á ¿º¼Ñ¡Ñ¡¿∩ ¬««αñ¿¡áΓ */
- delta_x = abs(delta_x);
- delta_y = abs(delta_y);
- if ( delta_x > delta_y ) distance = delta_x;
- else distance = delta_y;
- /* óδτÑατ¿óá¡¿Ñ ½¿¡¿¿ */
- for (t=0;t<=distance+1;t++) {
- mempoint(startx,starty,color);
- x+= delta_x;
- y+= delta_y;
- if (x>distance) {
- x-=distance;
- startx+=incx;
- }
- if (y>distance) {
- y-=distance;
- starty+=incy;
- }
- }
- }
- /* ¡á»«½¡Ñ¡¿Ñ »α∩¼«πú«½∞¡¿¬á ºáñá¡¡δ¼ µóÑΓ«¼ */
- void fill_box(startx,starty,endx,endy,color_code)
- int startx, starty, endx, endy, color_code;
- {
- register int i,begin,end;
-
- begin = startx < endx ? startx : endx;
- end = startx > endx ? startx : endx;
-
- for (i=begin;i<=end;i++)
- line(i,starty,i,endy,color_code);
- }
- /* ºá»¿ß∞ Γ«τ¬¿ ó CGA/EGA »á¼∩Γ∞ */
- void mempoint(x,y,color_code)
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 11 --
-
-
- int x,y,color_code;
- {
- union mask {
- char c[2];
- int i;
- } bit_mask;
- int i,index,bit_position;
- unsigned char t;
- char xor; /* xor - µóÑΓ ¿½¿ ¡á½«ªÑ¡¿Ñ */
- char far *ptr = (char far *) 0xB8000000; /* π¬áºáΓѽ∞ ¡á
- CGA */
- bit_mask.i = 0xFF3F; /* 11111111 00111111 ó ñó«¿τ¡«¼ ¬«ñÑ */
- /* ¬«¡Γα«½∞ ¬««αñ¿¡áΓ ñ½∩ 4 αѪ¿¼á */
- if (x<0 || x>199 || y<0 || y>319) return;
-
- xor = color_code & 128; /* »α«óÑα¬á πßΓá¡«ó¬¿ αѪ¿¼á xor */
- color_code = color_code & 127; /* ¼á߬á 7 ßΓáαΦ¿σ í¿Γ */
-
- /* πßΓá¡«ó¬á bit_mask ¿ color_code ó »αáó¿½∞¡«Ñ »«½«ªÑ¡¿Ñ */
- bit_position = y%4;
- color_code <<= 2*(3-bit_position);
- bit_mask.i >>= 2*bit_position;
-
- /* »«¿ß¬ ß««ΓóÑΓßΓóπεΘÑú« íá⌐Γá ó »á¼∩Γ¿ φ¬αá¡á */
- index = x*40 + (y>>2);
- if (x%2) index+=8152; /* Ñß½¿ ¡ÑτÑΓ¡δ⌐, ¿ß»«½∞º«óáΓ∞ óΓ«α«⌐
- íá⌐Γ */
- /* ºá»¿ß∞ µóÑΓá */
- if (!xor) { /* αѪ¿¼ ¡á½«ªÑ¡¿∩ */
- t = *(ptr + index) & bit_mask.c[0];
- *(ptr + index) = t | color_code;
- }
- else { /* αѪ¿¼ xor */
- t = *(ptr + index) | (char)0;
- *(ptr + index) = t | color_code;
- }
- }
-
- /* πßΓá¡«ó¬á ó¿ñÑ«αѪ¿¼á */
- void mode(mode_code)
- int mode_code;
- {
- union REGS r;
-
- r.h.al = mode_code;
- r.h.ah = 0;
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á ¬παß«αá ó ¬««αñ¿¡áΓδ x,y */
- void goto_xy(x,y)
- int x,y;
- {
- union REGS r;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 12 --
-
-
-
- r.h.ah = 2; /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá */
- r.h.dl = y; /* ú«α¿º«¡Γá½∞¡á∩ ¬««αñ¿¡áΓá */
- r.h.dh = x; /* óÑαΓ¿¬á½∞¡á∩ ¬««αñ¿¡áΓá */
- r.h.bh = 0; /* ó¿ñÑ«ßΓαá¡¿µá */
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á µóÑΓ«ó ñ¿áúαá¼¼ */
- void palette(pnum)
- int pnum;
- {
- union REGS r;
-
- r.h.bh = 1; /* ¬«ñ 4 αѪ¿¼á */
- r.h.bl = pnum;
- r.h.ah = 11; /* πßΓá¡«ó¬á Σπ¡¬µ¿¿ µóÑΓá */
- int86(0x10,&r,&r);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 13 --
-
-
- ÅÉÄâÉÇîîÇ é¢ùàÉùêéÇìêƒ äêÇâÉÇîî
- -----------------------------------------------------------------
-
- éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»¿ßá¡¡δÑ Σπ¡¬µ¿¿ ñ½∩ »«ßΓα«Ñ¡¿∩
- »α«úαá¼¼δ ß«ºñá¡¿∩ ñ¿áúαá¼¼. Åα«úαá¼¼á »«ºó«½∩ÑΓ »«½∞º«óáΓѽε
- óó«ñ¿Γ∞ ¬«½¿τÑßΓó« ¡áí«α«ó ñá¡¡δσ, ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ó ¬áªñ«¼
- ¡áí«αÑ, ¡á¿¼Ñ¡«óá¡¿∩ ¿ ¼ÑΓ¬¿ ß««ΓóÑΓßΓóπεΘ¿σ ñá¡¡δσ, á ΓᬪÑ
- Γ«½Θ¿¡π ½¿¡¿⌐ ¿ αáßßΓ«∩¡¿∩ ¼Ñªñπ ñ¿áúαἼἿ. Å«ß½Ñ óó«ñá
- π¬áºá¡¡δσ ñá¡¡δσ »α«úαá¼¼á áóΓ«¼áΓ¿τÑ߬¿ óδτÑατ¿óáÑΓ ñ¿áúαá¼¼π.
- éδ Γá¬ªÑ ¼«ªÑΓÑ ¡á»¿ßáΓ∞ »α«úαá¼¼π ß«σαá¡Ñ¡¿∩ »«ßΓα«Ñ¡¡«⌐
- ñ¿áúαá¼¼δ ó Σá⌐½Ñ ñ½∩ ÑÑ ñá½∞¡Ñ⌐ΦÑú« ¿ß»«½∞º«óá¡¿∩.
-
-
- â½áó¡á∩ »α«úαá¼¼á.
- ------------------
-
- çñÑß∞ »α¿ó«ñ¿Γß∩ «ß¡«ó¡á∩ Σπ¡¬µ¿∩ main(), «»¿ßδóáεΘá∩
- á½ú«α¿Γ¼ »«ßΓα«Ñ¡¿∩ ñ¿áúαá¼¼ ¿ ß«ñÑαªáΘá∩ ¡Ñ߬«½∞¬« ¼á¬α«ß«ó.
-
-
- #define MAX_SETS 3
- #define MAX_ENTRIES 50
- #define MAX_LABELS 20
- #define MAX_NAMES 20
-
- main()
- {
- double v[MAX_SETS][MAX_ENTRIES]; /* αẼÑΘÑ¡¿Ñ ñá¡¡δσ */
- int num_entries;
- int num_sets;
- int min,max,i;
- int lines,offset;
- char save = 0; /* »α¿º¡á¬ ß«σαá¡Ñ¡¿∩ ñ¿áúαá¼¼δ */
- char names[MAX_NAMES][20];
- char lab[MAX_LABELS][20];
-
- /* ßτ¿Γδóá¡¿Ñ ñá¡¡δσ */
- enter(v,&num_entries,&num_sets);
-
- /* »«¿ß¬ ¼¿¡¿¼á½∞¡«ú« ¿ ¼á¬ß¿¼á½∞¡«ú« º¡áτÑ¡¿∩ */
- min_max(v,num_entries,num_sets,&min,&max);
-
- /* óó«ñ ¡á¿¼Ñ¡«óá¡¿⌐ ñá¡¡δσ */
- get_names(names,num_sets);
-
- /* óó«ñ ¼ÑΓ«¬ ñ½∩ ñ¿áúαá¼¼δ */
- get_labels(lab,num_entries);
-
- /* óó«ñ Γ«½Θ¿¡δ ½¿¡¿¿ */
- lines = get_line_size();
-
- /* óó«ñ ¿¡ΓÑαóá½á ¼Ñªñπ ñ¿áúαἼἿ */
- offset = get_offset();
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 14 --
-
-
- /* ß«σαá¡¿Γ∞ ñ¿áúαá¼¼π ó Σá⌐½Ñ ? */
- printf(" ß«σαá¡¿Γ∞ ñ¿áúαá¼¼π ó Σá⌐½Ñ ? (y/n) ");
- if (tolower(getche()) == 'y') save = 1;
-
- mode(4); /* úαáΣ¿τÑ߬¿⌐ αѪ¿¼ 320*200 */
- palette(0);
-
- grid(min,max); /* óδó«ñ ½¿¡¿¿ ¡π½Ñó«ú« πα«ó¡∩ */
- hashlines(); /* óδó«ñ »π¡¬Γ¿α¡δσ ½¿¡¿⌐ */
- label(lab,num_entries); /* óδó«ñ ¼ÑΓ«¬ ñ¿áúαá¼¼δ */
- legend(names,num_sets); /* óδó«ñ »«∩ß¡¿Γѽ∞¡δσ ¡áñ»¿ßÑ⌐ */
-
- /* óδó«ñ º¡áτÑ¡¿⌐ ó ó¿ñÑ ñ¿áúαá¼¼δ */
- for (i=0;i<num_sets;i++)
- bargraph(v[i],num_entries,i*offset,min,max,lines);
-
- if (save) save_pic();
- getch();
- mode(3);
- }
-
- èᬠóδ ó¿ñ¿ΓÑ, Σπ¡¬µ¿∩ main() ¡áτ¿¡áÑΓß∩ «»¿ß᡿Ѽ
- »ÑαѼѡ¡δσ, º¡áτÑ¡¿∩ ¬«Γ«αδσ πßΓá¡áó½¿óáÑΓ »«½∞º«óáΓѽ∞. îáßß¿ó v
- «»αÑñѽѡ ñ«ßΓáΓ«τ¡« í«½∞Φ¿¼, τΓ«íδ ß«ñÑαªáΓ∞ ñ« ΓαÑσ ¡áí«α«ó
- ñá¡¡δσ ñ« 50 φ½Ñ¼Ñ¡Γ«ó ¬áªñδ⌐. (¥Γ¿ αẼÑαδ ∩ó½∩εΓß∩
- »α«¿ºó«½∞¡δ¼¿ ¿ »α¿ ªÑ½á¡¿¿ óδ ¼«ªÑΓÑ ¿σ ¿º¼Ñ¡¿Γ∞.) çáΓѼ Σπ¡¬µ¿∩
- ßτ¿ΓδóáÑΓ óδó«ñ¿¼δÑ »«½∞º«óáΓѽѼ ó ó¿ñÑ ñ¿áúαá¼¼ ñá¡¡δÑ ¿
- «»αÑñѽ∩ÑΓ ¼¿¡¿¼á½∞¡«Ñ ¿ ¼á¬ß¿¼á½∞¡«Ñ º¡áτÑ¡¿Ñ ñá¡¡δσ. ū߽Ñ
- φΓ«ú« ¡á φ¬αá¡ óδó«ñ∩Γß∩ ½¿¡¿∩ ¡π½Ñó«ú« πα«ó¡∩, »π¡¬Γ¿α¡δÑ ½¿¡¿¿
- πα«ó¡∩, ¼ÑΓ¬¿ ñ¿áúαá¼¼δ ¿ ¡á¿¼Ñ¡«óá¡¿Ñ ¡áí«α«ó. é ºáóÑαΦÑ¡¿Ñ
- óδτÑατ¿óáÑΓß∩ ßá¼á ñ¿áúαá¼¼á. ÅÑαÑñ óδσ«ñ«¼ »α«¿ßσ«ñ¿Γ ß«σαá¡Ñ¡¿Ñ
- ñ¿áúαá¼¼δ »α¿ »«¼«Θ¿ Σπ¡¬µ¿¿ save_pic(). äáóá⌐ΓÑ αáßß¼«Γα¿¼
- ¡Ñ¬«Γ«αδÑ ¿ß»«½∞ºπѼδÑ ó »α«úαá¼¼Ñ main() Σπ¡¬µ¿¿, ¬«Γ«αδÑ ¡Ñ
- óσ«ñ∩Γ ó «»¿ßá¡¡δÑ óδΦÑ ¿¡ßΓαπ¼Ñ¡Γáα¿¿ »«ßΓα«Ñ¡¿∩ ñ¿áúαá¼¼.
-
-
- öπ¡¬µ¿∩ enter().
- ----------------
-
- Åα¿óÑñÑ¡¡á∩ ºñÑß∞ Σπ¡¬µ¿∩ enter() ¿ß»«½∞ºπÑΓ ó ¬áτÑßΓóÑ
- ßó«¿σ »áαá¼ÑΓα«ó áñαÑß ¼áßß¿óá, ó ¬«Γ«α«¼ íπñπΓ αẼÑΘÑ¡δ ñá¡¡δÑ,
- ¿ áñαÑßá »ÑαѼѡ¡δσ ñ½∩ αẼÑΘÑ¡¿∩ τ¿ß½á ¬«½¿τÑßΓóá φ½Ñ¼Ñ¡Γ«ó ó
- ¡áí«αÑ ¿ τ¿ß½á ßἿσ ¡áí«α«ó. öπ¡¬µ¿∩ ¡áτ¿¡áÑΓ ßó«ε αáí«Γπ ß
- ºá»α«ßá π »«½∞º«óáΓѽ∩ ¬«½¿τÑßΓóá ¡áí«α«ó ñá¡¡δσ ¿ ºáΓѼ
- ¬«½¿τÑßΓóá φ½Ñ¼Ñ¡Γ«ó ñá¡¡δσ ó ¬áªñ«¼ ¡áí«αÑ. Å«ß½Ñ »«½πτÑ¡¿∩ φΓ«⌐
- ¿¡Σ«α¼áµ¿¿ »α«¿ºó«ñ¿Γß∩ ßτ¿Γδóá¡¿Ñ ñá¡¡δσ ñ½∩ ¬áªñ«ú« ¡áí«αá.
-
- /* æτ¿Γδóá¡¿Ñ ñá¡¡δσ */
- enter(v,entries,sets)
- double v[][MAX_ENTRIES]; /* ¼áßß¿ó ñá¡¡δσ */
- int *entries; /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ó ¬áªñ«¼ ¡áí«αÑ ñá¡¡δσ */
-
- int *sets; /* ¬«½¿τÑßΓó« ¡áí«α«ó ñá¡¡δσ */
- {
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 15 --
-
-
- int i,j,count,num;
- char s[80];
-
- printf("éóÑñ¿ΓÑ τ¿ß½« ¡áí«α«ó ñá¡¡δσ («Γ 1 ñ« %d)",MAX_SETS);
- scanf("%d%c",&count,&j);
- if (count>MAX_SETS) count = MAX_SETS; /* óδσ«ñ ºá úαá¡¿µδ
- ¼áßß¿óá */
- *sets = count;
- printf("éóÑñ¿ΓÑ ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó («Γ 1 ñ« %d) ",MAX_ENTRIES);
- scanf("%d%c",&num,&j);
- if (num>MAX_SETS) num = MAX_ENTRIES; /* óδσ«ñ ºá úαá¡¿µδ
- ¼áßß¿óá */
- *entries = num;
-
- j = 0;
-
- /* ßτ¿Γδóá¡¿Ñ º¡áτÑ¡¿⌐ ñá¡¡δσ */
- while((j<count)) {
- printf("ìáí«α ñá¡¡δσ %d\n",j+1);
- for (i=0;i<num;i++) {
- printf("%d:",i+1);
- gets(s);
- sscanf(s,"%lf",&v[j][i]);
- }
- j++;
- }
- return count;
- }
-
-
- öπ¡¬µ¿∩ min_max().
- ------------------
-
- Æá¬ ¬á¬ Σπ¡¬µ¿∩ bargraph() ¿ß»«½∞ºπÑΓ ¼á¬ß¿¼á½∞¡«Ñ ¿
- ¼¿¡¿¼á½∞¡«Ñ º¡áτÑ¡¿∩ óδó«ñ¿¼δσ ñá¡¡δσ, Γ« ¡á¼ »«ΓαÑíπÑΓß∩
- ߻ѵ¿á½∞¡á∩ Σπ¡¬µ¿∩ ñ½∩ «»αÑñѽѡ¿∩ φΓ¿σ º¡áτÑ¡¿⌐. ìÑ«íσ«ñ¿¼«
- Γá¬ªÑ «Γ¼ÑΓ¿Γ∞, τΓ« φΓá Σπ¡¬µ¿∩ ñ«½ª¡á ¡Ñ »α«ßΓ« «»αÑñѽ∩Γ∞
- ¼¿¡¿¼á½∞¡«Ñ ¿ ¼á¬ß¿¼á½∞¡«Ñ º¡áτÑ¡¿∩ ¡áí«αá ñá¡¡δσ, á ¡áσ«ñ¿Γ∞
- ¡á¿¼Ñ¡∞ΦÑÑ ¼¿¡¿¼á½∞¡«Ñ ¿ ¡á¿í«½∞ΦÑÑ ¼á¬ß¿¼á½∞¡«Ñ º¡áτÑ¡¿∩ ñ½∩
- ¡Ñ߬«½∞¬¿σ ¡áí«α«ó ñá¡¡δσ, τΓ« «íÑß»Ñτ¿Γ ß««ΓóÑΓßΓó¿Ñ »α¿
- «ñ¡«óαѼѡ¡«¼ »«ßΓα«Ñ¡¿¿ ßαáºπ ¡Ñ߬«½∞¬¿σ ñ¿áúαá¼¼. öπ¡¬µ¿∩
- min_max(), »α¿óÑñÑ¡¡á∩ ºñÑß∞, ó¼ÑßΓÑ ß ñóπ¼∩ ó¡πΓαÑ¡¡¿¼¿
- Σπ¡¬µ¿∩¼¿ πñ«ó½ÑΓó«α∩ÑΓ φΓ«¼π ΓαÑí«óá¡¿ε.
-
- /* Å«¿ß¬ ¡á¿¼Ñ¡∞ΦÑú« ¼¿¡¿¼π¼á ¿ ¡á¿í«½∞ΦÑú« ¼á¬ß¿¼π¼á
- ßαÑñ¿ óßÑσ ¡áí«α«ó ñá¡¡δσ */
- void min_max(v,entries,sets,min,max)
- double v[][MAX_ENTRIES]; /* º¡áτÑ¡¿∩ */
- int entries; /* ¬«½¿τÑßΓó« óσ«ñ«ó ñ½∩ ¬áªñ«ú« ¡áí«αá
- ñá¡¡δσ */
-
- int sets; /* ¬«½¿τÑßΓó« ¡áí«α«ó ñá¡¡δσ */
- int *min,*max; /* ó«ºóαáΘáÑΓ ¼¿¡¿¼á½∞¡«Ñ ¿ ¼á¬ß¿¼á½∞¡«Ñ
- º¡áτÑ¡¿Ñ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 16 --
-
-
- {
- int i,j;
- int tmin,tmax;
-
- *min = *max = 0;
-
- for (i=0;i<sets;i++) {
- tmax = getmax(v[i],entries);
- tmin = getmin(v[i],entries);
- if (tmax>*max) *max = tmax;
- if (tmin <*min) *min = tmin;
- }
- }
- /* 髺óαáΓ ¼á¬ß¿¼á½∞¡«ú« º¡áτÑ¡¿∩ ñá¡¡δσ */
- getmax(data,num)
- double *data;
- int num;
- {
- int t,max;
-
- max = (int)data[0];
- for (t=1;t<num;++t)
- if (data[t]>max) max = (int)data[t];
- return max;
- }
-
- /* 髺óαáΓ ¼¿¡¿¼á½∞¡«ú« º¡áτÑ¡¿∩ ñá¡¡δσ */
- getmin(data,num)
- double *data;
- int num;
- {
- int t,min;
-
- min = (int)data[0];
- for (t=1;t<num;++t)
- if (data[t]<min) min = (int)data[t];
- return min;
- }
-
-
- Å«½¡δ⌐ ΓѬßΓ »α«úαá¼¼δ óδτÑατ¿óá¡¿∩ ñ¿áúαá¼¼.
- ---------------------------------------------
-
- Å«½¡δ⌐ ΓѬßΓ »α«úαá¼¼δ óδτÑατ¿óá¡¿∩ ñ¿áúαá¼¼ »αÑñßΓáó½Ñ¡
- ¡¿ªÑ.
-
-
- /* Åα«úαá¼¼á úÑ¡Ñαᵿ¿ ñ¿áúαá¼¼ */
-
- #include "dos.h"
- #include "stdio.h"
-
- #define MAX_SETS 3
- #define MAX_ENTRIES 50
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 17 --
-
-
- #define MAX_LABELS 20
- #define MAX_NAMES 20
-
- void bargraph(),mode(),mempoint();
- void line(),goto_xy(),grid(),label();
- void hashlines(),legend(),read_cursor_xy();
- void palette(),color_puts(),fill_box();
- void get_labels(),get_names(),min_max();
- void save_pic();
-
- main()
- {
- double v[MAX_SETS][MAX_ENTRIES]; /* αẼÑΘÑ¡¿Ñ ñá¡¡δσ */
- int num_entries;
- int num_sets;
- int min,max,i;
- int lines,offset;
- char save = 0; /* »α¿º¡á¬ ºá»¿ß¿ ñ¿áúαá¼¼δ */
- char names[MAX_NAMES][20];
- char lab[MAX_LABELS][20];
- /* ßτ¿Γδóá¡¿Ñ ñá¡¡δσ */
- enter(v,&num_entries,&num_sets);
-
- /* »«¿ß¬ ¼¿¡¿¼á½∞¡«ú« ¿ ¼á¬ß¿¼á½∞¡«ú« º¡áτÑ¡¿∩ */
- min_max(v,num_entries,num_sets,&min,&max);
-
- /* óó«ñ ¡á¿¼Ñ¡«óá¡¿⌐ ñá¡¡δσ */
- get_names(names,num_sets);
-
- /* óó«ñ ¼ÑΓ«¬ ñ½∩ ñ¿áúαá¼¼δ */
- get_labels(lab,num_entries);
-
- /* óó«ñ Γ«½Θ¿¡δ ½¿¡¿¿ */
- lines = get_line_size();
-
- /* óó«ñ ¿¡ΓÑαóá½á ¼Ñªñπ ñ¿áúαἼἿ */
- offset = get_offset();
-
- /* ß«σαá¡¿Γ∞ ñ¿áúαá¼¼π ó Σá⌐½Ñ ? */
- printf(" ß«σαá¡¿Γ∞ ñ¿áúαá¼¼π ó Σá⌐½Ñ ? (y/n) ");
- if (tolower(getche()) == 'y') save = 1;
-
- mode(4); /* úαáΣ¿τÑ߬¿⌐ αѪ¿¼ 320*200 */
- palette(0);
-
- grid(min,max); /* óδó«ñ ½¿¡¿¿ ¡π½Ñó«ú« πα«ó¡∩ */
- hashlines(); /* óδó«ñ »π¡¬Γ¿α¡δσ ½¿¡¿⌐ */
- label(lab,num_entries); /* óδó«ñ ¼ÑΓ«¬ ñ¿áúαá¼¼δ */
- legend(names,num_sets); /* óδó«ñ »«∩ß¡¿Γѽ∞¡δσ ¡áñ»¿ßÑ⌐ */
-
- /* óδó«ñ º¡áτÑ¡¿⌐ ó ó¿ñÑ ñ¿áúαá¼¼δ */
- for (i=0;i<num_sets;i++)
- bargraph(v[i],num_entries,i*offset,min,max,lines);
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 18 --
-
-
- if (save) save_pic();
- getch();
- mode(3);
- }
- /* ßτ¿Γδóá¡¿Ñ ñá¡¡δσ */
- enter(v,entries,sets)
- double v[][MAX_ENTRIES]; /* ¼áßß¿ó ñá¡¡δσ */
- int *entries; /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ñá¡¡δσ ó ¬áªñ«¼ ¡áí«αÑ
- ñá¡¡δσ */
-
- int *sets; /* ¬«½¿τÑßΓó« ¡áí«α«ó ñá¡¡δσ */
- {
- int i,j,count,num;
- char s[80];
-
- printf("éóÑñ¿ΓÑ τ¿ß½« ¡áí«α«ó ñá¡¡δσ («Γ 1 ñ« %d)",MAX_SETS);
- scanf("%d%c",&count,&j);
- if (count>MAX_SETS) count = MAX_SETS; /* óδσ«ñ ºá úαá¡¿µδ
- ¼áßß¿óá */
- *sets = count;
- printf("éÑñ¿ΓÑ τ¿ß½« φ½Ñ¼Ñ¡Γ«ó ñá¡¡δσ («Γ 1 ñ« %d)",MAX_ENTRIES);
- scanf("%d%c",&num,&j);
- if (num>MAX_ENTRIES) num = MAX_ENTRIES; /* óδσ«ñ ºá úαá¡¿µδ
- ¼áßß¿óá */
- *entries = num;
-
- j = 0;
-
- /* ßτ¿Γδóá¡¿Ñ º¡áτÑ¡¿⌐ */
- while((j<count)) {
- printf(" ìáí«α ñá¡¡δσ %d\n",j+1);
- for (i = 0;i<num;i++) {
- printf("%d:",i+1);
- gets(s);
- sscanf(s,"%lf",&v[j][i]);
- }
- j++;
- }
- return count;
- }
-
- /* éó«ñ ¿¼Ñ¡ ¡áí«α«ó */
- void get_names(n,num)
- char n[][20]; /* ¼áßß¿ó ñ½∩ ¿¼Ñ¡ */
- int num; /* τ¿ß½« ¡áí«α«ó */
- {
- int i;
-
- for (i=0;i<num;i++) {
- printf(" éóÑñ¿ΓÑ ¿¼∩: ");
- gets(n[i]);
- }
- }
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 19 --
-
-
- /* éó«ñ ¼ÑΓ¬¿ ¬áªñ«ú« óσ«ñá */
- void get_labels(l,num)
- char l[][20]; /* ¼áßß¿ó ñ½∩ ¼ÑΓ«¬ */
- int num; /* τ¿ß½« óσ«ñ«ó */
- {
- int i;
-
- for (i=0;i<num;i++) {
- printf(" éóÑñ¿ΓÑ ¿¼∩ ¼ÑΓ¬¿: ");
- gets(l[i]);
- }
- }
-
- /* éó«ñ ¿¡ΓÑαóá½á ¼Ñªñπ ñ¿áúαἼἿ ó Ññ¿¡¿µáσ αáßΓαá */
- get_offset()
- {
- int i;
-
- printf(" éóÑñ¿ΓÑ ¿¡ΓÑαóá½ ¼Ñªñπ ñ¿áúαἼἿ ó Ññ¿¡¿µáσ αáßΓαá");
- scanf("%d%*c",&i);
- return i;
- }
-
- /* éó«ñ Γ«½Θ¿¡δ ñ¿áúαá¼¼ ó Ññ¿¡¿µáσ αáßΓαá */
- get_line_size()
- {
- int i;
-
- printf("éóÑñ¿ΓÑ Γ«½Θ¿¡π ñ¿áúαá¼¼δ ó Ññ¿¡¿µáσ αáßΓαá : ");
- scanf("%d",&i);
- return i;
- }
- /* éδó«ñ ½¿¡¿¿ ¡π½Ñó«ú« πα«ó¡∩ ñ¿áúαá¼¼δ */
- void grid(min,max)
- int min,max;
- {
- register int t;
-
- goto_xy(22,0); printf("%d",min);
- goto_xy(0,0); printf("%d",max);
- line(180,10,180,300,1);
- }
-
- /* éδó«ñ ¼ÑΓ«¬ ¡á φ¬αá¡ */
- void label(str,num)
- char str[][20]; /* ¼áßß¿ó ¼ÑΓ«¬ */
- int num; /* ¬«½¿τÑßΓó« ¼ÑΓ«¬ */
- {
- int i,j,inc;
-
- inc = 38/num;
- i = 2; /* «»αÑñѽѡ¿Ñ ¡áτá½∞¡«⌐ Γ«τ¬¿ */
- for (j=0;j<num;j++) {
- goto_xy(23,i);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 20 --
-
-
- printf(str[j]);
- i += inc;
- }
- }
-
- /* éδó«ñ »π¡¬Γ¿α¡δσ ½¿¡¿⌐ ¡á φ¬αá¡ */
- void hashlines()
- {
- int i,j;
-
- for (i=10;1<180;i+=10) {
- for (j=10;j<300;j+=5)
- mempoint(i,j,3); /* «ñ¡á Γ«τ¬á ¡á ¬áªñδÑ 5 Ññ¿¡¿µ
- αáßΓαá */
- }
- }
-
- /* éδó«ñ ¡áñ»¿ß¿ */
- void legend(names,num)
- char names[][20];
- int num; /* ¬«½¿τÑßΓó« ¡á¿¼Ñ¡«óá¡¿⌐ */
- {
- int color = 1,i,j;
-
- goto_xy(24,0); /* ¡áñ»¿ß∞ »α«¿ºó«ñ¿Γß∩ ó »«ß½Ññ¡Ñ⌐ ßΓα«¬Ñ */
- j = 0;
- for (i=0;i<num;i++) {
- /* éδó«ñ ¡á¿¼Ñ¡«óá¡¿∩ */
- printf("%s ",names[i]);
- /* «»αÑñѽѡ¿Ñ ¬««αñ¿¡áΓδ µóÑΓ¡«ú« »α∩¼«πú«½∞¡¿¬á. é 4
- αѪ¿¼Ñ ¬áªñ«¼π ½¿ΓÑα¡«¼π ß¿¼ó«½π «Γó«ñ¿Γß∩ 8 Ññ¿¡¿µ
- αáßΓαá ( ó Φ¿α¿¡π ) */
- j += strlen(names[i]) * 8 + 4;
- fill_box(192,j,198,j+12,color);
- j += 28; /* »α«ñó¿ªÑ¡¿Ñ ¬ ß½ÑñπεΘÑ¼π »«½ε óδó«ñá */
- color ++;
- if ( color>3 ) color = 1;
- }
- }
-
- void bargraph(data,num,offset,min,max,width)
- double *data; /* ¼áßß¿ó ñá¡¡δσ */
- int num; /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ó ¼áßß¿óÑ */
- int offset; /* αáßßΓ«∩¡¿Ñ ¼Ñªñπ ñ¿áúαἼἿ */
- int min,max; /* ¼¿¡¿¼á½∞¡«Ñ ¿ ¼á¬ß¿¼á½∞¡«Ñ óδó«ñ¿¼δÑ º¡áτÑ¡¿∩ */
- int width; /* Γ«½Θ¿¡á ½¿¡¿⌐ */
- {
- int y,t,incr;
- double norm_data,norm_ratio,spread;
- char s[80];
- static int color = 0;
- int tempwidth;
-
- /* óßÑúñá ¿ß»«½∞ºπ⌐ΓÑ αẽ¿τ¡δÑ µóÑΓá */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 21 --
-
-
- color++;
- if ( color > 3 ) color = 1;
-
- /* «»αÑñѽѡ¿Ñ ¡«α¼¿απεΘÑú« ¼¡«ª¿Γѽ∩ */
- spread = (double)max-min;
- norm_ratio = 180/spread;
-
- incr = 280/num; /* «»αÑñѽѡ¿Ñ »α«¼ÑªπΓ¬á ¼Ñªñπ º¡áτÑ¡¿∩¼¿*/
- tempwidth = width;
- for (t=0;t<num;++t) {
- norm_data = data[t];
-
- /* »«ñú«¡¬á «Γα¿µáΓѽ∞¡δσ º¡áτÑ¡¿⌐ */
- norm_data = norm_data-(double)min;
- norm_data *= norm_ratio; /* ¡«α¼¿α«óá¡¿Ñ */
- y = (int)norm_data; /* »αÑ«íαẫóá¡¿Ñ Γ¿»á */
- do {
- Line(179,((t*incr)+20+offset+width),179-y,
- ((t*incr)+20+offset+width),color);
- width--;
- } while(width);
- width = tempwidth;
- }
- }
-
- /* »«¿ß¬ ¡á¿¼Ñ¡∞ΦÑú« ¼¿¡¿¼π¼á ¿ ¡á¿í«½∞ΦÑú« ¼á¬ß¿¼π¼á
- ßαÑñ¿ óßÑσ ¡áí«α«ó ñá¡¡δσ */
- void min_max(v,entries,sets,min,max)
- double v[][MAX_ENTRIES]; /* º¡áτÑ¡¿∩ */
- int entries; /* ¬«½¿τÑßΓó« óσ«ñ«ó ñ½∩ ¬áªñ«ú« ¡áí«αá
- ñá¡¡δσ */
-
- int sets; /* ¬«½¿τÑßΓó« ¡áí«α«ó ñá¡¡δσ */
- int *min,*max; /* ó«ºóαáΘáÑΓ ¼¿¡¿¼á½∞¡«Ñ ¿ ¼á¬ß¿¼á½∞¡«Ñ
- º¡áτÑ¡¿Ñ */
- {
- int i,j;
- int tmin,tmax;
-
- *min = *max = 0;
-
- for (i=0;i<sets;i++) {
- tmax = getmax(v[i],entries);
- tmin = getmin(v[i],entries);
- if (tmax>*max) *max = tmax;
- if (tmin <*min) *min = tmin;
- }
- }
- /* 髺óαáΓ ¼á¬ß¿¼á½∞¡«ú« º¡áτÑ¡¿∩ ñá¡¡δσ */
- getmax(data,num)
- double *data;
- int num;
- {
- int t,max;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 22 --
-
-
-
- max = (int)data[0];
- for (t=1;t<num;++t)
- if (data[t]>max) max = (int)data[t];
- return max;
- }
-
- /* 髺óαáΓ ¼¿¡¿¼á½∞¡«ú« º¡áτÑ¡¿∩ ñá¡¡δσ */
- getmin(data,num)
- double *data;
- int num;
- {
- int t,min;
-
- min = (int)data[0];
- for (t=1;t<num;++t)
- if (data[t]<min) min = (int)data[t];
- return min;
- }
-
- /* éδó«ñ ½¿¡¿¿ ºáñá¡¡«ú« µóÑΓá, ¿ß»«½∞ºπ∩ íẫóδ⌐ á½ú«α¿Γ¼
- üαѺѡσá¼á */
- void line(startx,starty,endx,endy,color)
- int startx,starty,endx,endy,color;
- {
- register int t,distance;
- int x=0,y=0,delta_x,delta_y;
- int incx,incy;
-
- /* óδτ¿ß½Ñ¡¿Ñ αáßßΓ«∩¡¿⌐ »« «í«¿¼ ¡á»αáó½Ñ¡¿∩¼ */
- delta_x = endx - startx;
- delta_y = endy - starty;
- /* «»αÑñѽѡ¿Ñ ¡á»αáó½Ñ¡¿⌐ πóѽ¿τÑ¡¿∩ ¬««αñ¿¡áΓ, ¡π½Ñó«Ñ
- πóѽ¿τÑ¡¿Ñ ß««ΓóÑΓßΓóπÑΓ ½¿í« óÑαΓ¿¬á½∞¡«⌐, ½¿í«
- ú«α¿º«¡Γá½∞¡«⌐ ½¿¡¿¿ */
- if ( delta_x > 0 ) incx = 1 ;
- else if (delta_x == 0 ) incx = 0;
- else incx = -1;
- if ( delta_y > 0 ) incy = 1 ;
- else if (delta_y == 0 ) incy = 0;
- else incy = -1;
- /* «»αÑñѽѡ¿Ñ ¼á¬ß¿¼π¼á ¿º¼Ñ¡Ñ¡¿∩ ¬««αñ¿¡áΓ */
- delta_x = abs(delta_x);
- delta_y = abs(delta_y);
- if ( delta_x > delta_y ) distance = delta_x;
- else distance = delta_y;
- /* óδτÑατ¿óá¡¿Ñ ½¿¡¿¿ */
- for (t=0;t<=distance+1;t++) {
- mempoint(startx,starty,color);
- x+= delta_x;
- y+= delta_y;
- if (x>distance) {
- x-=distance;
- startx+=incx;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 23 --
-
-
- }
- if (y>distance) {
- y-=distance;
- starty+=incy;
- }
- }
- }
- /* ¡á»«½¡Ñ¡¿Ñ »α∩¼«πú«½∞¡¿¬á ºáñá¡¡δ¼ µóÑΓ«¼ */
- void fill_box(startx,starty,endx,endy,color_code)
- int startx,starty,endx,endy,color_code;
- {
- register int i,begin,end;
-
- begin = startx < endx ? startx : endx;
- end = startx > endx ? startx : endx;
-
- for (i=begin;i<=end;i++)
- line(i,starty,i,endy,color_code);
- }
- /* ºá»¿ß∞ Γ«τ¬¿ ó CGA/EGA »á¼∩Γ∞ */
- void mempoint(x,y,color_code)
- int x,y,color_code;
- {
- union mask {
- char c[2];
- int i;
- } bit_mask;
- int i,index,bit_position;
- unsigned char t;
- char xor; /* xor - µóÑΓ ¿½¿ ¡á½«ªÑ¡¿Ñ */
- char far *ptr = (char far *) 0xB8000000; /* π¬áºáΓѽ∞ ¡á
- CGA */
- bit_mask.i = 0xFF3F; /* 11111111 00111111 ó ñó«¿τ¡«¼ ¬«ñÑ */
- /* ¬«¡Γα«½∞ ¬««αñ¿¡áΓ ñ½∩ 4 αѪ¿¼á */
- if (x<0 || x>199 || y<0 || y>319) return;
-
- xor = color_code & 128; /* »α«óÑα¬á πßΓá¡«ó¬¿ αѪ¿¼á xor */
- color_code = color_code & 127; /* ¼á߬á 7 ßΓáαΦ¿σ í¿Γ */
-
- /* πßΓá¡«ó¬á bit_mask ¿ color_code ó »αáó¿½∞¡«Ñ »«½«ªÑ¡¿Ñ */
- bit_position = y%4;
- color_code <<= 2*(3-bit_position);
- bit_mask.i >>= 2*bit_position;
-
- /* »«¿ß¬ ß««ΓóÑΓßΓóπεΘÑú« íá⌐Γá ó »á¼∩Γ¿ φ¬αá¡á */
- index = x*40 + (y>>2);
- if (x%2) index+=8152; /* Ñß½¿ ¡ÑτÑΓ¡δ⌐, ¿ß»«½∞º«óáΓ∞ óΓ«α«⌐
- íᡬ */
- /* ºá»¿ß∞ µóÑΓá */
- if (!xor) { /* αѪ¿¼ ¡á½«ªÑ¡¿∩ */
- t = *(ptr + index) & bit_mask.c[0];
- *(ptr + index) = t | color_code;
- }
- else { /* αѪ¿¼ xor */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 24 --
-
-
- t = *(ptr + index) | (char)0;
- *(ptr + index) = t ^ color_code;
- }
- }
-
- /* πßΓá¡«ó¬á ó¿ñÑ«αѪ¿¼á */
- void mode(mode_code)
- int mode_code;
- {
- union REGS r;
-
- r.h.al = mode_code;
- r.h.ah = 0;
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á ¬παß«αá ó ¬««αñ¿¡áΓδ x,y */
- void goto_xy(x,y)
- int x,y;
- {
- union REGS r;
-
- r.h.ah = 2; /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá */
- r.h.dl = y; /* ú«α¿º«¡Γá½∞¡á∩ ¬««αñ¿¡áΓá */
- r.h.dh = x; /* óÑαΓ¿¬á½∞¡á∩ ¬««αñ¿¡áΓá */
- r.h.bh = 0; /* ó¿ñÑ«ßΓαá¡¿µá */
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á µóÑΓ«ó ñ¿áúαá¼¼ */
- void palette(pnum)
- int pnum;
- {
- union REGS r;
-
- r.h.bh = 1; /* ¬«ñ 4 αѪ¿¼á */
- r.h.bl = pnum;
- r.h.ah = 11; /* πßΓá¡«ó¬á Σπ¡¬µ¿¿ µóÑΓá */
- int86(0x10,&r,&r);
- }
-
- /* ß«σαá¡Ñ¡¿Ñ óδóÑñÑ¡¡«ú« ó¿ñÑ«úαáΣ¿¬á */
- void save_pic()
- {
- char fname[80];
- FILE *fp;
- register int i,j;
- char far *ptr = (char far *) 0xB8000000; /* π¬áºáΓѽ∞
- ¡á CGA »á¼∩Γ∞ */
- char far *temp;
- unsigned char buf[14][80]; /* ñ½∩ αẼÑΘÑ¡¿∩ ß«ñÑন¼«ú«
- φ¬αá¡á */
-
- temp = ptr;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 25 --
-
-
- /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
- for (i=0;i<14;i++)
- for (j=0;j<80;j+=2) {
- buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
- buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ*/
- *temp = 0;
- *(temp+8152) = 0; /* τ¿ßΓ¬á óÑασ¡Ñ⌐ τáßΓ¿
- φ¬αá¡á */
- temp++;
- }
- goto_xy(0,0);
- printf(" ê¼∩ Σá⌐½á : ");
- gets(fname);
- if (!(fp=fopen(fname,"wb"))) {
- printf(" ìÑ󫺼«ª¡« «Γ¬αδΓ∞ Σá⌐½ \n");
- return;
- }
- temp = ptr;
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
- for (i=0;i<14;i++)
- for (j=0;j<80;j+=2) {
- *temp = buf[i][j];
- *(temp+8152) = buf[i][j+1];
- temp++;
- }
- /* ß«σαá¡Ñ¡¿Ñ α¿ßπ¡¬á ó Σá⌐½Ñ */
- for (i=0;i<8152;i++) {
- putc(*ptr,fp); /* τÑΓ¡δ⌐ íá⌐Γ */
- putc(*(ptr+8152),fp); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- ptr++;
- }
- fclose(fp);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 26 --
-
-
- ÄÆÄüÉÇåàìêà äêÇâÉÇîî ìÇ ¥èÉÇìà äêæÅïàƒ
- -----------------------------------------------------------------
-
- àß½¿ óδ ß«σαá¡¿½¿ »«ßΓα«Ñ¡¡πε ñ¿áúαá¼¼π ó Σá⌐½Ñ, Γ« óßÑúñá
- ¼«ªÑΓÑ »«óΓ«α¡« »«½πτ¿Γ∞ ¿º«íαáªÑ¡¿Ñ ñá¡¡«⌐ ñ¿áúαá¼¼δ. ä½∩ φΓ«⌐
- µÑ½¿ ß½πª¿Γ »α«úαá¼¼á SHOW, «»¿ßá¡¡á∩ ó ñá¡¡«¼ αáºñѽÑ. Åα«úαá¼¼á
- óδó«ñ¿Γ ñ¿áúαá¼¼π, ¡áσ«ñ∩Θπεß∩ ó Σá⌐½Ñ, ¿¼∩ Σá⌐½á ºáñáÑΓß∩ ó ó¿ñÑ
- áαúπ¼Ñ¡Γá ¬«¼á¡ñδ. ìá»α¿¼Ñα, τΓ«íδ óδóÑßΓ¿ ñ¿áúαá¼¼π, ¡áσ«ñ∩Θπεß∩
- ó Σá⌐½Ñ backlog, ¡Ñ«íσ«ñ¿¼« óóÑßΓ¿ ¬«¼á¡ñπ
-
- show backlog
-
- Åα«úαá¼¼á show ¿ß»«½∞ºπÑΓ Σπ¡¬µ¿ε load_pic(),
- »αÑñ¡áº¡áτÑ¡¡πε ñ½∩ ¿º«íαáªÑ¡¿∩ ñ¿áúαá¼¼ ¡á φ¬αá¡Ñ. (éδ ΓᬪÑ
- ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ φΓπ »α«úαá¼¼π ñ½∩ «Γ«íαáªÑ¡¿∩ ¡á φ¬αá¡Ñ
- ñ¿ß»½Ñ∩ ñαπú¿σ úαáΣ¿τÑ߬¿σ «íαẫó, »αÑñóáα¿Γѽ∞¡« ß«ºñá¡¡δσ ¿
- ºá»¿ßá¡¡δσ ó Σá⌐½.)
-
- /* Åα«ßΓÑ⌐Φá∩ »α«úαá¼¼á ó«ßßΓá¡«ó½Ñ¡¿∩ úαáΣ¿τÑ߬¿σ «íαẫó */
-
- #include "stdio.h"
- #include "dos.h"
-
- void load_pic(),mode(),palette(),goto_xy();
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- if (argc != 2) {
- printf(" ÄíαáΘÑ¡¿Ñ: »«¬áºáΓ∞ <¿¼∩ Σá⌐½á>");
- exit(1);
- }
- mode(4);
- palette(0);
- load_pic(argv[1]);
- getch();
- mode(3);
- }
-
- /* ºáúαπº¬á úαáΣ¿τÑ߬«ú« ¿º«íαáªÑ¡¿∩ */
- void load_pic(fname)
- char *fname;
- {
- FILE *fp;
- register int i,j;
- char far *ptr = (char far *) 0xB8000000; /* π¬áºáΓѽ∞
- ¡á CGA »á¼∩Γ∞ */
- char far *temp;
- unsigned char buf[14][80]; /* ñ½∩ αẼÑΘÑ¡¿∩ ß«ñÑন¼«ú«
- φ¬αá¡á */
- if (!(fp=fopen(fname,"rb"))) {
- goto_xy(0,0);
- printf(" ¡Ñ󫺼«ª¡« «Γ¬αδΓ∞ Σá⌐½ \n");
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 27 --
-
-
- return;
- }
- /* ºáúαπº¬á ¿º«íαáªÑ¡¿∩ ¿º Σá⌐½á */
- for (i=0;i<8152;i++) {
- *ptr = getc(fp); /* τÑΓ¡δ⌐ íá⌐Γ */
- *(ptr+8152) = getc(fp); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- ptr++;
- }
- fclose(fp);
- }
-
- /* πßΓá¡«ó¬á ó¿ñÑ«αѪ¿¼á */
- void mode(mode_code)
- int mode_code;
- {
- union REGS r;
-
- r.h.al = mode_code;
- r.h.ah = 0;
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á µóÑΓ«ó ñ¿áúαá¼¼ */
- void palette(pnum)
- int pnum;
- {
- union REGS r;
-
- r.h.bh = 1; /* ¬«ñ 4 αѪ¿¼á */
- r.h.bl = pnum;
- r.h.ah = 11; /* πßΓá¡«ó¬á Σπ¡¬µ¿¿ µóÑΓá */
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á ¬παß«αá ó ¬««αñ¿¡áΓδ x,y */
- void goto_xy(x,y)
- int x,y;
- {
- union REGS r;
-
- r.h.ah = 2; /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá */
- r.h.dl = y; /* ú«α¿º«¡Γá½∞¡á∩ ¬««αñ¿¡áΓá */
- r.h.dh = x; /* óÑαΓ¿¬á½∞¡á∩ ¬««αñ¿¡áΓá */
- r.h.bh = 0; /* ó¿ñÑ«ßΓαá¡¿µá */
- int86(0x10,&r,&r);
- }
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá X -- 28 --
-
-
- ìàèÄÆÄÉ¢à êìÆàÉàæì¢à êäàê ÅÄ îÄäêöêèÇûêê ÅÉÄâÉÇîî
- -----------------------------------------------------------------
-
- éδ ¼«ªÑΓÑ αáßΦ¿α¿Γ∞ «»¿ßá¡¡δÑ Σπ¡¬µ¿¿, óóÑñ∩ »áαá¼ÑΓαδ,
- ºáñáεΘ¿Ñ αẼÑαδ ¿ αáß»«½«ªÑ¡¿Ñ ñ¿áúαá¼¼ Γá¬, τΓ«íδ óδó«ñ¿Γ∞
- ñ¿áúαá¼¼δ αạδσ αẼÑα«ó ó αẽ¿τ¡δσ τáßΓ∩σ φ¬αá¡á. ìá»α¿¼Ñα,
- ¼«ªÑΓ íδΓ∞ πñ«íÑ¡ óδó«ñ τÑΓδαÑσ ¼á½δσ ñ¿áúαá¼¼, ¬áªñá∩ ¿º ¬«Γ«αδσ
- αáß»«½«ªÑ¡á ó «ñ¡«¼ ¿º ¬óáñαá¡Γ«ó φ¬αá¡á. éδ Γá¬ªÑ ¼«ªÑΓÑ
- ¿º¼Ñ¡¿Γ∞ »αÑñ½«ªÑ¡¡δÑ Σπ¡¬µ¿¿ ¿ αáí«ΓáΓ∞ ß úαáΣ¿τÑ߬¿¼¿ αѪ¿¼á¼¿
- í«½ÑÑ óδß«¬«⌐ αáºαÑΦáεΘÑ⌐ ß»«ß«í¡«ßΓ¿.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó