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

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

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

 
 Ответить  Открыть новую тему 
> Помогите с задачей, Модуль Graph
SkyRideR
сообщение 7.02.2008 0:17
Сообщение #1


Новичок
*

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

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


Всем привет. Нужно написать прогу, её задача в том чтобы считала кол-во символов в слове(текстовый), затем кол-во этих символов заносила в номер массива которому соответствует кол-во этих символов. После этого строила график отображая в каком номере массива, сколько символов. Большую часть сделал, а вот график
как-то не получается сделать

program dsv;
uses graph;
var
a : array[1..25] of integer;
GrDriver, GrMode : integer;
ffile : text;
buf : string;
i : integer;
begin
assign(ffile,'file1.txt');
reset(ffile);
while not eof(ffile) do begin
readln(ffile,buf);
while (pos(' ',buf) <> 0) do begin
i := pos(' ', buf);
inc(a[length(copy(buf, 1, i-1))]);
delete(buf, 1, i);
end;
inc(a[length(buf)]);
end;

begin
GrDriver := detect;
GrMode := 0;
initgraph(GrDriver, GrMode, '');

line(50,50,50,300);
line(50,300,500,300);
moveto(50*i, 300-(a[i]*4));
lineto(50*i, 300-(a[i]*4));

readln;
CloseGraph;
close(ffile);
end; end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.02.2008 1:53
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


1. заключи программу в теги code
2. сделай нормальное форматирование...
в таком виде непонятно, какой begin к чему относится...
и чему равно i при построении графика. имхо, там цикл должен быть...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 7.02.2008 9:14
Сообщение #3


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


мне кажется было-бы намного рациональнее для хранения частот появления разных по длине слов использовать список. Поищи недавно решалась задача "Частотный словарь" там есть сходство с твоей задачей.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SkyRideR
сообщение 12.02.2008 0:17
Сообщение #4


Новичок
*

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

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


в общем отчасти разобрался как, что делать, теперь только не получается сам график достроить, чтобы начиная с первой позиции он проводил линию в следующую позицию и т.д. до конца
program dsv;
uses graph;
var
a : array[1..25] of integer;
GrDriver, GrMode : integer;
ffile : text;
buf, r, t, q, w : string;
i : integer;
begin
assign(ffile, 'c:\ctix.txt');

reset(ffile);
while not eof(ffile) do begin
readln(ffile, buf);
while (pos(' ', buf) <> 0) do begin
i := pos(' ', buf);
inc(a[length(copy(buf, 1, i-1))]);
delete(buf, 1, i);
end;
inc(a[length(buf)]);
end;
close(ffile);

GrDriver := detect;
GrMode := 0;
initgraph(GrDriver, GrMode, '');
for i := 1 to 25 do begin
r:='Y';
t:='X';
str(a[i], w);
str(i, q);
line(10,10,10,300);
line(10,300,600,300);
moveto(20*i, 300-(a[i]*4));
lineto(20*i, 300);
moveto(0, 10);
outtextxy(0, 10, r);
moveto(490, 310);
outtextxy(590, 310, t);
moveto(20*i, 290-(a[i]*4));
outtextxy(20*i, 290-(a[i]*4), w);
moveto(20*i, 290-(a[i]*4));
outtextxy(20*i, 310, q);
{moveto(10*i, (a[i]*4));
line(10,300, (a[i]*4),(a[i]*4) );} вот тут у меня и не получается не могу понять как координаты задать правильно
end;
readln;
CloseGraph;

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.02.2008 1:02
Сообщение #5


Гость






Во-первых (и тебе мисс_граффити уже говорила об этом) пользуйся тегами, Без них программа просто не читаема.

Во-вторых, читай комментарии...

program dsv;
uses graph;
var
a: array[1..25] of integer;
GrDriver, GrMode: integer;

ffile: text;
buf, r, t, q, w : string;
i: integer;

begin
assign(ffile, 'c:\ctix.txt');
reset(ffile);
while not eof(ffile) do begin
readln(ffile, buf);
while (pos(' ', buf) <> 0) do begin
i := pos(' ', buf);
inc(a[length(copy(buf, 1, i-1))]);
delete(buf, 1, i);
end;
inc(a[length(buf)]);
end;
close(ffile);

GrDriver := detect;
GrMode := 0;
initgraph(GrDriver, GrMode, '');

{ Это вообще можно было не делать, можно подставить символы в outtextxy сразу}
r:='Y';
t:='X';

{ Выводить оси координат и их названия совсем не обязательно в цикле - выносим }
line(10,10,10,300);
line(10,300,600,300);

outtextxy(0, 10, r);
outtextxy(590, 310, t);

for i := 1 to 25 do begin
moveto(20*i, 300-(a[i]*4));
lineto(20*i, 300);

str(a[i], w);
{
не имей привычки делать что-то заранее. Вот перед тем,
как что-то выводить - конвертируй, а не где-то в самом начале...
}
moveto(20*i, 290-(a[i]*4));
outtextxy(20*i, 290-(a[i]*4), w);

str(i, q); { <--- Аналогично - конвертация перед выводом }
moveto(20*i, 290-(a[i]*4));
outtextxy(20*i, 310, q);
end;

{
В принципе, можно было объединить этот цикл с предыдущим, но
мне например не нравится переключать цвета туда-сюда. Поэтому
я вынес отрисовку ломаной в отдельный цикл...
}
setcolor(green);
moveto(10, 300);
for i := 1 to 25 do begin
lineto(20*i,290 - (a[i]*4));
end;

readln;
CloseGraph;
end.
 К началу страницы 
+ Ответить 

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

 



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