0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 1
1

График звездочками в массиве. Программа "График зависимости даты от температуры"

03.12.2015, 02:00. Показов 1314. Ответов 1

Author24 — интернет-сервис помощи студентам
Здравствуйте. С программированием я дружу относительно недавно. Меня интересует следующий вопрос:

Дали задание, написать две программы:

1)Программа для создания файла с данными: дата(в формате tdatetime) и температура (пример: 01.12.2015 - 15(температура));

2)Программа считывающая данные из этого файла, и возможностью отображения графика звездочками с возможностью выбора диапозона дат.

В итоге ошибка:
Проект вызвал класс исключения 'external sigsegv' в строке 134 (b[x,y]:='*')


И главный вопрос: правильно ли я реализую нарисование графика, если нет - то как это можно сделать иначе?

Файл с данными во вложении.

Первую программу выкладывать не стал, не вижу смысла.

Вот сама 2-ая программа.


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Program dtmrecord2;
 
 
uses sysutils;
 
type
  TZAP = record
  n: tdatetime;    //форматированная дата
  t: integer;      //температура
  end;
 
  Tf = file of TZAP;    //тф - это файл типа ТЗАП
 
var
  zap:TZAP;            //позволяет оперировать данными типа ТЗАП
  f:Tf;                //переменная файла
  i: integer;       //для сортировки
  sorted:boolean;
  num: tzap;
  A: array of tzap;
  d1,d2: string; //Спрос диапозона дат
  trd, temp:integer;
  dp: real;
  B: array [1..25,1..25] of char;
  max, min, {%H-}imax, {%H-}imin: integer;
  x,y: integer;
begin
 dateseparator{%H-}:= '.';
 assign(f,'d://f.dat');
 reset(f);           // открыть файл
 
 
//Отображаем на экране данные файла
writeln('Данные в файле');
 while not EoF(f) Do
  begin
   read(f,zap);
   writeln(DateToStr(zap.n),' - ',zap.t,'°C       ' ,trunc(zap.n));
  end;
 readln;
 close(f);
 
 
 //Записываем данные в массив
 reset(f);
  writeln('Считанные данные с файла');
  i:=0;
  While not EoF(f) do
   begin
    setlength(a, i+1);
    read(f,A[i]);
    writeln(Datetostr(a[i].n),' - ',a[i].t );
    inc(i);
   end;
 
  writeln('Количество элементов в массиве - ',i);
  readln;
 
 
 //Сортировка
 
 writeln('Отсортированные данные');
   repeat
     sorted:= true;
     for i:= 0 to length(A) do if a[i].n>a[i+1].n then begin
      num:=a[i];
      a[i]:=a[i+1];
      a[i+1]:=num;
      sorted:= false;
     end;
 
   until sorted;
 
 
 //Отображение отсортированных дат
 for i:= 2 to length(a)+1 do writeln(DateToStr(A[i].n),' - ', a[i].t,'°C');
 
 
 
 //Спрос диапозона дат
 Writeln;
 Writeln('Введите диапозон дат');
 write('Первая дата: ');
 readln(d1);
 write('Вторая дата: ');
 readln(d2);
 writeln('------------------------------');
 
 //Отображение дипозона дат
 Dp:= trunc(StrToDate(d2) - StrToDate(d1));
 writeln('Диапозон дат(ширина графика)  -  ', dp:0:0);
 writeln;
 
 //Отображение диапозона температур
 min:=a[2].t;
 max:=a[2].t;
 for i:=2 to length(a)+1 do
   begin
    if a[i].t<min then
      begin
       min:=a[i].t;
       imin:=i;
      end;
   end;
 writeln('Минимальная температура: ', min);
 
  for i:=2 to length(a)+1 do
   begin
    if a[i].t>max then
      begin
       max:=a[i].t;
       imax:=i;
      end;
   end;
 writeln('Максимальная температура: ', max);
 writeln('------------------------------------');
 Writeln('Диапозон температур(высота графика):', max,'-',min,'=',max-min);
 
 
 readln;
 trd:=trunc(StrToDate(d2)) - trunc(StrToDate(d1));
 temp:= max - min;
 writeln(trd,'x',temp);
 
 //заполняем пробелами наш массив
 for x:= 0 to trd do
  for y:= 0 to temp do begin
   b[x,y]:=' ';
   end;
 
 
 for x:= 0 to trd do begin
    y:=a[x].t - temp;
      b[x,y]:='*';
 end;
 
  readln;
 
 for x:= 0 to trd do begin
  writeln;
   for y:= 0 to temp do
     write(b[x,y]);
 
   end;
 
 
 close(f);
 readln;
end.
Вложения
Тип файла: zip file F.zip (141 байт, 2 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2015, 02:00
Ответы с готовыми решениями:

График зависимости температуры от времени
Добрый день! Подскажите пожалуйста. Я получаю температурные показатели с COM-порта и теперь...

График зависимости температуры от текущего времени, QChart
Добрый день. Хочу построить график зависимости температуры от текущего времени. QChart требует...

График зависимости скорости кулера от температуры в Gtx 950 asus mini
Здасть. Волнует одна проблема, решил проконсультироваться на форуме. Греется карта до 73(под...

Построить график экспериментальной зависимости давления воздуха от температуры по данным наблюдений
Построить график экспериментальной зависимости давления воздуха от температуры по данным...

1
8 / 8 / 8
Регистрация: 11.09.2015
Сообщений: 38
03.12.2015, 12:13 2
если правильно понял, то строчку (133):
Delphi
1
 y:=a[x].t - temp;
Нужно заменить на:
Delphi
1
y:=a[x].t - min;
или
Delphi
1
 y:=max-a[x].t;
0
03.12.2015, 12:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2015, 12:13
Помогаю со студенческими работами здесь

Построить график зависимости (точечный график)
Здравствуйте, нужно построить график зависимости в VBA :) Грубо говоря график по точкам...

Вывести график звёздочками
Требуется вывести такой график в консоль звёздочками, каждая звёздочка в новой строке, на языке С,...

Переделать код так, чтобы программа рисовала график зависимости h0 От t grd
Пример зависимости V grd от -v0 restart; g:=9.81;mu:=0.0182;r:=0.1;c:=0.4;rho:=1.2928;m:=1;...

Программа вывода таблицы зависимости температуры по Фаренгейту от температуры по Цельсию
1. Программа вывода таблицы зависимости температуры по Фаренгейту от температуры по Цельсию. F = 32...

Как вывести график синусоиды звездочками на консоль?
имеется синусоида, как вывести звездочками график на консоль

Нужно построить график зависимости ksi и etta; зависимости S1,S2,... Sn.
Здравствуйте! нужна помощь в построении графиков в Delphi. ksi - псевдослучайная величина,...

график изменения температуры
Напишите прграмму,в окне которой отображается график изменения температуры воздуха за месяц.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru