Решения (задачи 230-239)
Задача 230.
// Столбиковая диаграмма #include <graphics.h> #include <stdio.h> #include <conio.h> #define PATHTODRIVER "c: WborlandcWbgiW" // глобальные переменные char *mes[] ={"двоек\0","троек\0", "четверок\0","пятерок\0"}; int n[4]; // количество пятерок, четверок, // троек и двоек p[4]; // процент каждой оценки int h[4]; // высота столбиков диаграмм void obr() // ввод и обработка { int s; // всего оценок int m; // номер максимального эл-та массива n int i; // индекс массива puts("Обработка результатов контрольной работы"); puts("Введите исходные данные:"); for (i = 3; i >= 0; i-) { printf("%s › ", mes[i]); scanf("%i", &n[i]); } // обработка s = 0; // всего оценок for (i =0; i < 4; i++) s += n[i]; // процент каждой оценки for (i = 0; i < 4; i++) = (float)n[i]/s*100; // вычислим высоту каждого столбика диаграммы, //но сначала определим, каких оценок больше m = 3; // пусть больше всего пятерок for (i = 2; i >= 0; i-) if (n[i] > n[m]) m = i; // Пусть количеству оценок, которых больше, // соответствует столбик высотой 200 пикселов. // Вычислим высоту void diagr() { int x,y; // координаты левого нижнего угла // столбика диаграммы int i; // индекс массива // цвет столбиков int color[4] = (YELLOW, BLUE, GREEN, RED); char buf[10]; outtextxy(40.50,"Результаты контрольной работы\0"); rectangle(40.80.170.310); x = 50; у = 300; // левый нижний угол первого столбика // столбики диаграммы for (i = 3; i >= 0; i-) setfillstyle(SOLID_FILL, color{ij); bar(x,y,x+10,y-h[i]); // столбик sprintf(buf,"%2.1f",p[i]); outtextxy(x,y-h[i]-10,buf); x += 20;) // численные значения x = 50; for (i >> 3; i >= 0; i– ) setfillstyle(SOLID_FILL, color[i]); //bar(x,y,x+10,y-h[i]); // столбик //OutTextXY(x,y-h[i]-10,ReALToStr (p x = x+20;, 5, // легенда x = 200;у = 100; for (i = 3; i >= 0; i– ) { setfillstyle(SOLID_FILL,color[i]); bar(x,y,x+20,y+10); // столбик outtextxy(x+25,y,mes[i]); у += 20; d main() { int gdriver = DETECT; // драйвер int gmode; // режим int errorcode; // код ошибки obr(); // ввод и обработка результатов initgraph(Sgdriver, Sgmode, PATHTODRIVER); errorcode = graphresult(); if (errorcode == grOk) diagr(); // вывод диаграммы else printf("Ошибка: %d\n", errorcode); puts("Для завершения программы нажмите Enter"); } getch ();