IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> График успеваемости + средний балл
Drughi
сообщение 14.03.2011 0:04
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Не знал, как объяснить задание, поэтому прилагаю рисунок.
Изображение
т.е. от пользователя требуется ввести лишь оценки по предметам, а компьютер должен вычислить средний балл и нарисовать график, как на рисунке.

Если такое задание уже было, дайте, пожалуйста, ссылку. Я не нашёл.

Спасибо заранее! smile.gif


--------------------
DesignFootball.Ru - Первый русскоязычный сайт о футбольной форме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 14.03.2011 1:36
Сообщение #2


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Тебе нужно готовое решение или сам че-нить хочешь сделать? Если готовое - в инете должны быть кучи-кучи похожих решений, если нет, то:
1. сначала вводишь данные в массив а из 5ти элементов
2. заходишь в граф. режим.
3. рисуешь оси линиями
4. GotoXY(1*kx,a[1]*ky]), где kx, kу - масштабы по осям
5. в цикле LineTo(i*kx,a[i]*ky]), где i - переменная цикла.
6. гуглишь как искать среднее.
7. гуглишь как выводить текст на экран.
8. end. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Drughi
сообщение 14.03.2011 23:52
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


В том-то и загвоздка, что среднее арифм я то знаю, как посчитать. а вот как такой график построить на Pascal ABC - не знаю.
Хотелось бы конечно готовое решение wink.gif


--------------------
DesignFootball.Ru - Первый русскоязычный сайт о футбольной форме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.03.2011 11:48
Сообщение #4


Гость






Как-то вот так:
uses GraphABC;

const
Fresh = 5;
GradeLen = 20;

inData = 'Входные данные';
outData = 'Выходные данные';
nScore = 5;
Colors : array[1 .. nScore] of Color = (
clRed, clBrown, clGreen, clBlue, clNavy
);
Subj : array[1 .. 2, 1 .. nScore] of String = (
('Математика', 'Английский', 'Химия', 'Информатика', 'Биология'),
('мат', 'анг', 'хим', 'инф', 'био')
);

const
RightPart = 2 * Window.Width div 3;

procedure StrInBox(X, Y : Integer; s : String);
begin
SetPenColor (clBrown);
DrawRectangle (X, Y, X + TextWidth(s) + 2*Fresh, Y + TextHeight(s) +2*Fresh);
SetPenColor (clBlack);
TextOut (X + Fresh, Y + Fresh, s);
end;

var
Scores : array[1 .. nScore] of Integer; // = (10, 10, 8, 8, 9);

XAxis : Integer;
Average: Real;
s : string;

begin
StrInBox (RightPart, 10, InData);
for i : Integer := 1 to nScore do
begin
var CurrStr := Subj[1, i] + ': ';
TextOut (RightPart, 30 + i * 20, CurrStr);
ReadLn (Scores[ i ]);
TextOut (RightPart + TextWidth(CurrStr), 30 + i * 20, IntToStr (Scores[ i ]));
end;

StrInBox (RightPart, 50 + Succ (nScore) * 20, OutData);

// Рисуем Оси координат
MoveTo (20, 50);
LineTo (20, 50 + 10 * GradeLen);
LineTo (RightPart - 20, 50 + 10 * GradeLen);

s := '';
for i:integer := 1 to 11 do
begin
var YPos := 50 + Pred (i)*GradeLen;
if i > 1 then s := ' ';
TextOut (2, YPos, s + IntToStr (11 - i)); // Нумерация оси OY
Line (20, YPos, 22, YPos); // Засечки на оси OY
end;

XAxis := (RightPart - 40) div nScore;
for i : integer := 1 to nScore do
begin
var StartInterval := 20 + Pred(i)*XAxis + (XAxis div 2);
var Coord_Y := 50 + Pred (11 - Scores[i])*GradeLen;

SetPenColor (clBlack);
Line (StartInterval, 48 +10*GradeLen, StartInterval, 52 +10*GradeLen); // Засечки на OX
SetFontColor (Colors[ i ]);

if i = 1 then MoveTo (StartInterval, Coord_Y)
else
begin
SetPenColor (clGray);
LineTo (StartInterval, Coord_Y);
end;
SetPenColor (Colors[ i ]);
Circle(StartInterval, Coord_Y, 2);
TextOut (StartInterval - (TextWidth (Subj[2, i]) div 2), 75 +10*GradeLen, UpperCase (Subj[2, i]));
Average := Average + Scores[i];
end;
Average := Average / nScore;
TextOut (RightPart+Fresh, 90 + Succ (nScore)*20, 'Средний балл: ' + FloatToStr (Average));
end.


Вот чего получается, на фоне твоей же картинки:
Прикрепленное изображение

(с обычным, не .NET-овским PascalABC я не связываюсь. Во-первых, он устарел, и уже не поддерживается разработчиками, а во-вторых у меня его просто нет, и ставить я его не буду...)
 К началу страницы 
+ Ответить 
Drughi
сообщение 15.03.2011 16:22
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


volvo, Большущее спасибо! good.gif


--------------------
DesignFootball.Ru - Первый русскоязычный сайт о футбольной форме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.04.2024 19:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"