Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2008, 21:03   #1
Gaika
Пользователь
 
Аватар для Gaika
 
Регистрация: 02.07.2008
Сообщений: 11
По умолчанию Читая данные из текстового файла,нарисовать розу ветров в Delphi

Вообщем,такое задание:Необходимо нарисовать розу ветров для некоторого промежутка времени по данным файла INPUT.TXT. В файле в одной строке записано 8 целых чисел: первое указывает сколько дней ветер дул с востока, второе – с северо-востока, третье – с севера, четвертое – с северо-запада, пятое – с запада, шестое – с юго-запада, седьмое - с юга, восьмое – с юго-востока. Начало отсчета должно совпадать с центром экрана!

procedure razm(x:tstringgrid);
var i:integer;
begin
with x do
begin
clientwidth:=-1;
for i:=0 to colcount-1 do
clientwidth:=clientwidth+colwidths[i]+gridlinewidth;
clientheight:=-1;
for i:=0 to rowcount-1 do
clientheight:=clientheight+rowheigh ts[i]+gridlinewidth;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
with StringGrid1 do
begin
For i:=0 to 7 do
ColWidths[i]:=40;
Cells[0,0]:='Восток';
Cells[1,0]:='С-В';
Cells[2,0]:='Север';
Cells[3,0]:='С-З';
Cells[4,0]:='Запад';
Cells[5,0]:='Ю-З';
Cells[6,0]:='Юг';
Cells[7,0]:='Ю-В';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then AssignFile(f,OpenDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
var i,v,sv,s,sz,z,uz,u,uv:integer;
begin
reset(f);
StringGrid1.Visible:=true;
while not Eof(f) do
begin
Readln(f,v,sv,s,sz,z,uz,u,uv);
StringGrid1.Cells[0,1]:=IntToStr(v);
StringGrid1.Cells[1,1]:=IntToStr(sv);
StringGrid1.Cells[2,1]:=IntToStr(s);
StringGrid1.Cells[3,1]:=IntToStr(sz);
StringGrid1.Cells[4,1]:=IntToStr(z);
StringGrid1.Cells[5,1]:=IntToStr(uz);
StringGrid1.Cells[6,1]:=IntToStr(u);
StringGrid1.Cells[7,1]:=IntToStr(uv);
end;
CloseFile(f);
razm(stringgrid1);
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,v,sv,s,sz,z,uz,u,uv:integer;
begin
with StringGrid1 do
begin
v:=StrToInt(cells[0,1]);
sv:=StrToInt(cells[1,1]);
s:=StrToInt(cells[2,1]);
sz:=StrToInt(cells[3,1]);
z:=StrToInt(cells[4,1]);
uz:=StrToInt(cells[5,1]);
u:=StrToInt(cells[6,1]);
uv:=StrToInt(cells[7,1]);
end;
with image1.Canvas do
begin
Pen.Color:=clBlack;
pen.Style:=psSolid;
moveto(190,190); {центр}
lineto(190,190-s); {север}
lineto(190,190+u); {юг}
moveto(190,190);
lineto(190+v,190); {восток}
lineto(190-z,190); {запад}

{ Pen.Color:=clred;
moveto(190,190);
lineto(330,50); {с-в}
lineto(50,330); {ю-з}
moveto(190,190); {это я просто диагонали начертила)
lineto(50,50); {с-з}
lineto(330,330); {ю-в}}
end;
Вот, это программа,которая у меня получилась,Накорябала её сама,поэтому строго не судите,уверена можно решить куда более "нормальным" образом)))
Подскажите плиз,как записать нормально координаты для северо-востока,северо-запада,юго-запада и юго-востока,а то у меня,ну, никак не получается...(((Всем за ранее огромнейшее СПАСИБО))
Gaika вне форума Ответить с цитированием
Старый 13.09.2008, 23:35   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Если в Вашем стиле, то так:

Код:
   with image1.Canvas do begin
      Pen.Color:=clBlack;
      pen.Style:=psSolid;

      moveto(190,190);  lineto(190,190-s);
      moveto(190,190);  lineto(190,190+u);

      moveto(190,190);  lineto(190+v,190);
      moveto(190,190);  lineto(190-z,190);

      moveto(190,190);  lineto(trunc(190+sv*sin(pi/4)), trunc(190-sv*sin(pi/4)));
      moveto(190,190);  lineto(trunc(190+uv*sin(pi/4)), trunc(190+uv*sin(pi/4)));

      moveto(190,190);  lineto(trunc(190-sz*sin(pi/4)), trunc(190-sz*sin(pi/4)));
      moveto(190,190);  lineto(trunc(190-uz*sin(pi/4)), trunc(190+uz*sin(pi/4)));
   end;
alexBlack вне форума Ответить с цитированием
Старый 14.09.2008, 12:24   #3
Gaika
Пользователь
 
Аватар для Gaika
 
Регистрация: 02.07.2008
Сообщений: 11
По умолчанию

Спасибочки)))
Gaika вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi Редактирование текстового файла Starscream Общие вопросы Delphi 11 18.02.2008 17:15
Открытие текстового файла Victor Microsoft Office Excel 2 16.01.2008 03:42
Как считывать данные с COM,LPT порта и нарисовать график Sergiu Фриланс 2 22.12.2007 11:53