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

Сформировать типизированный последовательный файл, компоненты которого вычисляются по формуле

14.05.2016, 10:30. Показов 1202. Ответов 7
Метки нет (Все метки)

1.Сформировать типизированный последовательный файл, компоненты которого вычисляются по формуле, https://www.cyberforum.ru/cgi-bin/latex.cgi?F=\sqrt{2+\sqrt{2+\sqrt{...+2}}}, i - корней
2.Определённые по формуле действия над компонентами файла (файлов) выполнить в рамках процедуры или функции, получают файл (файлы) как параметр (параметры).
3. Распечатать значения результирующих переменных и компонент всех сложившихся в задании файлов.
Примечание: Количество компонент файла F выбрать произвольно в пределах от 10 до 50 3апрещается использовать промежуточные массивы, дополнительные файлы и осуществлять прямой доступ к компонентам файлов.
4. Найти наименьшее из значений компонентов с четными номерами.
Братцы, помогите доделать задачу или написать код попроще?! Не выводится наименьшее минимальное чётное!
Pascal
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
const
  n = 10 ;
type  fpt = file of real;
var
  F: file of real;
  i: integer;
  
  {Формирование типизованого последовательного файла}
procedure inputData (n: integer; var fbin: fpt); 
var i:integer;
    x:real;
begin
writeln('Компоненти типизованого последовательного файла: ');
rewrite(fbin);
x:=0;
  for i:=1 to n do
  begin
  x:=sqrt(2+x);
  write(fbin,x);
  writeln(x);
  end;
close(fbin);
end;
 
function min (var fbin:fpt):real;
var tmp,minnumber:real; i:integer;
begin
i:=0;
reset(fbin);
   while not eof(f) do
   begin
   inc(i);
   read(f,tmp); 
     if (i=2) then
     minNumber:=tmp;
   end;
close(fbin);
i:=0;
reset(fbin);
  while not eof(f) do
  begin
  inc(i);
  read(f,tmp);
    if (i mod 2 = 0) then
    begin
      if (minNumber >= tmp) then
      begin
      minNumber:=tmp;
      end;
    end;
  end;
close(fbin);
min:=minNumber;
end;
begin
  Assign(F, 'lab2.dat');
  rewrite(F);
  inputData(10, F);
  min(F);
  //writeln(min);
  
  //for i := 1 to n do
    //write(F, inputData());
  //writeln('Найменший значение компонентов с чётным номером: ', min );
  Reset(F);
  
  Close(F);
end.
Добавлено через 1 час 7 минут
Спасибо, товарищи! Решил!
Pascal
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
const
  n = 12 ;
type  fpt = file of real;
var
  F: file of real;
  i: integer;
  minNumber:real;
  
  {Формирование типизованого последовательного файла}
procedure inputData (n: integer; var fbin: fpt); 
var i:integer;
    x:real;
begin
writeln('Компоненти типизованого последовательного файла: ');
rewrite(fbin);
x:=0;
  for i:=1 to n do
  begin
  x:=sqrt(2+x);
  write(fbin,x);
  writeln(x);
  end;
close(fbin);
end;
 
function min (var fbin:fpt):real;
var tmp,minNumber:real; i:integer;
begin
i:=0;
reset(fbin);
   while not eof(f) do
   begin
   inc(i);
   read(f,tmp); 
     if (i=2) then
     minNumber:=tmp;
   end;
close(fbin);
i:=0;
reset(fbin);
  while not eof(f) do
  begin
  inc(i);
  read(f,tmp);
    if (i mod 2 = 0) then
    begin
      if (minNumber >= tmp) then
      begin
      minNumber:=tmp;
      end;
    end;
  end;
close(fbin);
min:=minNumber;
end;
 
begin
  Assign(F, 'lab2.dat');
  //RewRite(F);
  inputData(12, F);
  //min(F);
  
   writeln();
  for i := 1 to n do
    //write(F, inputData());
  
  minNumber:= min(F);
  Reset(F);
  writeln('Найменший значение компонентов с чётным номером: ');
  writeln(minNumber);
  
  
  Close(F);
end.
Добавлено через 1 час 52 минуты
Что-то мне кажется, что оно получается не совсем чётное!?

Добавлено через 14 часов 24 минуты
Задача, чтоб была правильно решена, нужно чтоб значение минимального чётного должно быть равно двойке.
Чтоб проверить нужно поставить 25 (значений). 25-е равно 2-ке.
В общем нужно исправить код в блоке где идёт поиск минимального чётного. Иначе задача решена не корректно.
Я выдохся...
Pascal
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
Program P2_z2_v1_;
const
  n = 12 ;
type
  Fpt = file of real;
var
  F: file of real;
  i: integer;
  minNumber: real;
                   {Формируем типизованный последовательный файл}
procedure inputData(n: integer; var Fbin: Fpt);
var
  i: integer;
  x: real;
begin
  writeln('Компоненти типизованого последовательного файла: ');
  RewRite(Fbin); // Открываем текст-файл в кодир win Если файл сущест-ет,- то обнуляется 
                //или создаётся новый 
  x := 0;
  for i := 1 to n do
  begin
    x := sqrt(2 + x);
    write(Fbin, x);
    writeln(x);
  end;
  close(Fbin);              // закрываем текст-файл в кодировке win
end;
                          // Определяем минимальное чётное
function min(var Fbin: Fpt): real;
var
  tmp, minNumber: real;
  i: integer;
begin
  i := 0;                   // начинаем с нуля
  reset(Fbin);              // открываем текст-файл в кодировке win
  while not eof(f) do      // начать цыкл и продолжать пока не законсится файл
  begin
    inc(i);                // увеличивать значение переменной i на 1
    read(F, tmp);          // выводитьзначения если чётные
    if (i mod 2 = 0) then 
    begin                   // выводитьзначения если минимально
      if (minNumber >= tmp) then
      begin
        minNumber := tmp;
      end;
    end;
  end;
  close(Fbin);                // закрываем текст-файл в кодировке win
  min := minNumber;
end;
 
begin
  Assign(F, 'lab2.dat'); // Связываем файловую переменную с файлом на диске
  //RewRite(F);            // Открываем текстовый файл для записи в кодир Win
  inputData(25, F);        // Определяем кол-во входных данных файловой переменной
  writeln();
  for i := 1 to n do
    minNumber := min(F);
  Reset(F);                 // открываем текст-файл в кодировке win
  writeln('Найменшие значение компонентов с чётным номером: ');
  writeln(minNumber);
  Close(F);
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2016, 10:30
Ответы с готовыми решениями:

Создать файл Y, компоненты которого вычисляются по формуле
Добрый вечер! Помогите пожалуйста с задачей. Создать файл Y, компоненты которого вычисляются по...

Создать типизированный файл, элементы которого вычисляются по формуле
Program tipizfail; var M: file of integer; i,F,Fi,n:integer; Begin ...

Создать файл, компоненты которого вычисляются по формуле
Помогите пожайлуста. Сформулируйте файл, компонентами которого являются дейстрительные значения...

Создать файл F, компоненты которого вычисляются по формуле
Добрый день. Прошу помочь с алгоритмом. Задание : Начало кода есть, а вот как сделать дальше.....

7
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
14.05.2016, 12:07 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Может под последним от начала корне просто https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{2}

Добавлено через 33 минуты
Если я прав, то так, если не прав, изменить функцию.
Pascal
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
const n = 10 ;
type  fpt = file of real;
{функция нахождения компонента k}
function f(k:integer):real;
var i:integer;
    x:real;
begin
x:=sqrt(2);
for i:=k-1 downto 1 do
x:=sqrt(2+x);
f:=x;
end;
 
{Формирование типизованного последовательного файла}
procedure inputData (var fbin: fpt);
var i:integer;
    x:real;
begin
writeln('Компоненты типизованного последовательного файла: ');
rewrite(fbin);
for i:=1 to n do
 begin
  x:=f(i);
  write(fbin,x);
  writeln(x:0:6);
 end;
end;
 
{определение минимального с четным номером}
function min (var fbin:fpt):real;
var tmp,minnumber:real;
    i:integer;
begin
i:=1;
seek(fbin,i);
read(fbin,minnumber);
while i<filesize(fbin)-2 do
 begin
  inc(i,2);
  seek(fbin,i);
  read(fbin,tmp);
  if tmp<minnumber then minnumber:=tmp;
 end;
close(fbin);
min:=minnumber;
end;
var t:fpt;
begin
Assign(t, 'lab2.dat');
rewrite(t);
inputData(t);
writeln('Минимальный с четным номером=',min(t):0:6);
end.
1
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 15
15.05.2016, 10:49  [ТС] 3
Да, наверно я не корректно написал. Да ты прав. Должно быть F=sqrt{2+sqrt{2+sqrt{2+...}}}. Т. е. бесконечный ряд ограничивающийся константой.
Но протестировал, получается:
Минимальный с четным номером=1.847759.
Но чётное число может быть только целым! В противном случае наверно должно писать: ОТСУТСТВУЕТ МИНИМАЛЬНОЕ ЧЁТНОЕ.
При увеличении ряда после const > 11, получаются всё время 2.000000. Даже не знаю что сказать по этому поводу, так работает эта формула?!
0
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
15.05.2016, 10:53 4
Цитата Сообщение от constant_bel Посмотреть сообщение
Минимальный с четным номером
Номер всегда целый 1,2,3,...,n

Добавлено через 2 минуты
Цитата Сообщение от constant_bel Посмотреть сообщение
При увеличении ряда после const > 11, получаются всё время 2.000000.
А ты увеличь число знаков после запятой или вообще убери форматирование вывода.
0
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
15.05.2016, 11:00 5
Тогда выведет так
Миниатюры
Сформировать типизированный последовательный файл, компоненты которого вычисляются по формуле  
1
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 15
15.05.2016, 12:53  [ТС] 6
А точно, по поводу знаков понял, больше знаков - больше значений. Согласен. Дошло, в задаче стоит - минимальное с чётными номером, а не с просто значением! А меня что-то "переклинило" на минимальное чётное значение без учёта номера по порядку!
Тогда задача решена правильно.
Ну а всё таки, ради спортивного интереса подскажи, какой код должен быть, теперь правильно задам вопрос,- если нужно определить минимальное (максимальное) чётное значение, а не минимальное (максимальное) значение с чётным номером?
0
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
15.05.2016, 13:05 7
Числа с дробной частью, большей 0 не могут быть четными или нечетными.
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 15
15.05.2016, 13:30  [ТС] 8
Я извиняюсь, опять замкнуло. Просто максимальное или минимальное в ряду!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2016, 13:30
Помогаю со студенческими работами здесь

Сформировать массив, элементы которого вычисляются по формуле
сформировать массив P eлементы которого вычисляются по формуле Нужно вивести етот...

Сформировать массив В, элементы которого вычисляются по формуле
Дан массив А. Сформировать массив В, элементы которого вычисляются по формуле Bi=(i+1)*Ai Массив...

Сформировать одномерный массив B(k) элементы которого вычисляются по формуле
Сформировать одномерный массив B(k) элементы которого вычисляются по формуле zx=(s1+s2)/(k1+k2),...

вычислить и сформировать массив S[i], элементы которого вычисляются по формуле S[i]=pow(sin,2)(x[i])+x[i].
для x, изменяющегося от -1.3 до 1.2 с шагом 0.1 вычислить и сформировать массив S, элементы...


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

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

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