Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
kronos2411
0 / 0 / 0
Регистрация: 23.06.2018
Сообщений: 9
1

Сформировать файл последовательности чисел

12.07.2019, 00:41. Просмотров 906. Ответов 5
Метки нет (Все метки)

Сформировать файл последовательности чисел, в котором каждая к-я компонента определяется по формуле y=((sqr(x[i])+1)/(power(x[i],3)+2)), где хк - к-я компонента исходного файла.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses crt;
var x:array[1..999] of real;
var y:array[1..999] of real;
var k,i:integer;
var f:text;
begin
i:=1;
assign(f,'f2.txt');
Rewrite (f);
var a := ReadAllText('f.txt').ToReals;
write('k=');readln(k);
while i<=a.Count do begin
x[i]:=a[i];
if (i mod k)=0 then
y[i]:=((sqr(x[i])+1)/(power(x[i],3)+2)) else
y[i]:=x[i];
write(f,y[i]);
inc(i);
end;
end.
Вот, что я написал, только мне выбивает, что на 13 строке индекс вышел из границ массива. Помогите исправить пожалуйста

Добавлено через 53 минуты
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
uses crt;
var x:array[1..999] of real;
var a:array[1..999] of char;
var y:array[1..999] of real;
var k,i,n,j,code:integer;
var f,z:text;
begin
i:=1;
j:=0;
n:=1;
assign(f,'f.txt');
assign(z,'f1.txt');
reset(f);
rewrite (z);
write('k=');readln(k);
while not eof(f) do begin
read(f,a[n]);
val(a[n],x[n],code);
inc(j);
inc(n);
end;
while i<=j do begin
if (i mod k)=0 then
y[i]:=((sqr(x[i])+1)/(power(x[i],3)+2)) else
y[i]:=x[i];
write(z,y[i]);
inc(i);
end;
end.
Вот я исправил, но программа почему-то не записывает данные из массива в текстовый файл.

Добавлено через 2 часа 42 минуты
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
uses crt;
var x:array[1..999] of real;
var a:array[1..999] of char;
var y:array[1..999] of real;
var k,i,n,j,code,ii:integer;
var f:text;
var s,sf:string;
var z:file of char;
begin
i:=1;
j:=0;
n:=1;
ii:=1;
s:='';
sf:='';
assign(f,'f.txt'); //Исходный файл с числами f.txt
reset(f);
assign(z,'f1.txt'); //Новый файл с числами f1.txt
rewrite(z);
write('k=');readln(k);
while not eof(f) do begin
read(f,a[n]);
val(a[n],x[n],code);
inc(j);
inc(n);
end;
while i<=j do begin
if (i mod k)=0 then
y[i]:=((sqr(x[i])+1)/(power(x[i],3)+2)) else
y[i]:=x[i];
sf:=FloatToStr(y[i]);
s:=s+sf+' ';
inc(i);
end;
while ii<=s.Length do begin
write(z,s[ii]);
inc(ii);
end;
end.
Короче вот, может кому нужно будет.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2019, 00:41
Ответы с готовыми решениями:

Сформировать файл из последовательности
Сформировать файл из последовательности (-1)^k*0,3^k/(k+1). Найти квадрат произведения компонентов...

Из заданной последовательности чисел сформировать таблицу квадратов и кубов ее членов
В текстовом файле содержится последовательность действительных чисел. Из заданной...

Сформировать файл ф1 целых чисел.
Сформировать файл ф1 целых чисел. Преобразовать компоненты следующим образом- отриц значения...

Сформировать файл из квадратов целых чисел
У меня в методичке вот такой пример решения такой задачи. Я не могу понять как мне переделать ее...

Сформировать файл из модулей целых чисел.
Сформировать файл из модулей целых чисел. Среднее арифметическое значение компонентов с четными...

5
JuriiMW
2403 / 1334 / 1725
Регистрация: 10.12.2014
Сообщений: 5,245
12.07.2019, 03:57 2
Лучший ответ Сообщение было отмечено kronos2411 как решение

Решение

Во-первых, что за извращённая формула?
Не проще ли просто умножить?

Во-вторых, вам нужны массивы?

В-третьих, последний ваш „шедевр“ читает не числа, а цифры!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
begin
  var fIn,fOut:Text;
  Reset(fIn, 'fIn.txt');
  Rewrite(fOut, 'fOut.txt');
  while Not EOF(fIn) do
    begin
      var x : Real;
      Read(fIn, x);
      Write(fOut, #32, (x*x+1) / (x*x*x+2));
    end;
  Close(fIn);
  Close(fOut);
end.
1
kronos2411
0 / 0 / 0
Регистрация: 23.06.2018
Сообщений: 9
12.07.2019, 07:31  [ТС] 3
Спасибо, но что это за черная магия "#32"?
0
JuriiMW
2403 / 1334 / 1725
Регистрация: 10.12.2014
Сообщений: 5,245
12.07.2019, 07:42 4
Читайте в книжках!
0
Sun Serega
513 / 388 / 207
Регистрация: 07.04.2017
Сообщений: 1,742
12.07.2019, 15:49 5
#Число это символ с заданным id. id можно получить, написав word('a'), где вместо a - любой символ.

Но не все символы можно написать в тексте программы. К примеру, TAB это #9.

А перенос строки - 2 символа, #13#10 (в стандартной кодировке винды) или 1 символ, #10 (его тоже обычно понимает, и на винде тоже).
То есть если написать так:
Pascal
1
2
3
4
begin
  var s := 'abc'#10'def';
  s.Println;
end.
В строке s будет 2 строчки, и выведет её соответственно.
0
JuriiMW
2403 / 1334 / 1725
Регистрация: 10.12.2014
Сообщений: 5,245
12.07.2019, 17:22 6
Сколько лишних букв!
В справке к IDE написано одним предложением и вполне понятно…
0
12.07.2019, 17:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2019, 17:22

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

Сформировать типизированный файл по формуле, найти произведение чисел, кратных 2 и 10
Помогите решить задачу, пожалуйста. Типизированные файлы. А) Формировать М1(из 10 компонент)...

Сформировать одномерный массив из 20 целых чисел, записать его в файл
И Считать из этого файла массив B(7), найти произведение отрицательных элементов и их номера....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru