Есть такое условие: дано натуральное число n. Записать в файл g все целые числа b[1]...b[n]. Если b[i]=i!+i^2
Вот такая программа у меня получилась, но результат не правильный.
uses crt;
Var g:file of integer;
i,n: integer;
f,s,b,a: longint;
Begin
write('vvedite N ');
readln(n);
Assign(g,'d:\g.txt');
Rewrite(g);
For i:=1 to n do
Begin
f:=1;
for i:=1 to n do
begin
f:=f*i;
a:=1;
for i:=1 to n do
begin
a:=i*i;
s:=1;
for i:=1 to n do
begin
s:=a+f;
End;
end;
end;
end;
write (g, s);
close(g);
Reset(g);
write('polychenij fajl');
While not Eof(g) do Begin
read(g, s);
writeln;
End;
readln;
End.
Другие языки программирования и технологии
Программа паскаль, код внутри.
Во-первых, у вас несоответствие типов - файл типа integer, а вы пытаетесь записать в него значения типа longint.
Во-вторых, в матрёшке циклов for (суть которых так и осталась мне непонятна) , у вас нет команды записи в файл. Циклы вы гоняете впустую, потому что в файл записываете только последнее значение.
В-третьих, при чтении файла вы забыли выводить прочитанное значение на экран.
Ну и остальное - почти нечитаемый код, совсем неудачно выбранные имена переменных которые непонятно что значат. Приучайте себя давать переменным осмысленные имена.
Предлагаю свой вариант:
program p165761467;
uses
crt;
var
FileOfNum : file of longint;
i, n : integer;
b : longint;
{ Factorial of number }
function factorial(n : integer) : longint;
var
i : integer;
f : longint;
begin
f := 1;
for i := 2 to n do
f := f * i;
factorial := f;
end {factorial};
begin
clrscr;
write('Please, enter n: ');
readln(n);
assign(FileOfNum,'d:\g.txt');
rewrite(FileOfNum);
for i := 1 to n do
begin
b := factorial(i) + i*i;
write(FileOfNum, b);
end;
writeln('Result file:');
reset(FileOfNum);
while (not Eof(FileOfNum)) do
begin
read(FileOfNum, b);
write(b, ' ');
end;
close(FileOfNum);
readkey;
end.
Факториал числа вычисляется отдельной функцией factorial
Форматированная версия - pastebin.com/gJ7yY7P4
P.S. Кстати, есть разница между типизированными и текстовыми файлами. Если вы хотите записать числа в текстовый файл, то объявите FileOfNum : text;
И при этом чтение из файла тоже надо немного подредактировать.
Во-вторых, в матрёшке циклов for (суть которых так и осталась мне непонятна) , у вас нет команды записи в файл. Циклы вы гоняете впустую, потому что в файл записываете только последнее значение.
В-третьих, при чтении файла вы забыли выводить прочитанное значение на экран.
Ну и остальное - почти нечитаемый код, совсем неудачно выбранные имена переменных которые непонятно что значат. Приучайте себя давать переменным осмысленные имена.
Предлагаю свой вариант:
program p165761467;
uses
crt;
var
FileOfNum : file of longint;
i, n : integer;
b : longint;
{ Factorial of number }
function factorial(n : integer) : longint;
var
i : integer;
f : longint;
begin
f := 1;
for i := 2 to n do
f := f * i;
factorial := f;
end {factorial};
begin
clrscr;
write('Please, enter n: ');
readln(n);
assign(FileOfNum,'d:\g.txt');
rewrite(FileOfNum);
for i := 1 to n do
begin
b := factorial(i) + i*i;
write(FileOfNum, b);
end;
writeln('Result file:');
reset(FileOfNum);
while (not Eof(FileOfNum)) do
begin
read(FileOfNum, b);
write(b, ' ');
end;
close(FileOfNum);
readkey;
end.
Факториал числа вычисляется отдельной функцией factorial
Форматированная версия - pastebin.com/gJ7yY7P4
P.S. Кстати, есть разница между типизированными и текстовыми файлами. Если вы хотите записать числа в текстовый файл, то объявите FileOfNum : text;
И при этом чтение из файла тоже надо немного подредактировать.
Судя по всему — это Pascal под DOS.
Исходя из этого:
— При объявлении файл типа Integer – 16 бит
— Записываешь в него значения типа Longint (32 бита) , у которых при записи обрезаются верхние 16 бит.
Так почему же ты считаешь, что «результат неправильный» ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Машина делает не то, что хочет человек, а то, что он ей приказывает!
Исходя из этого:
— При объявлении файл типа Integer – 16 бит
— Записываешь в него значения типа Longint (32 бита) , у которых при записи обрезаются верхние 16 бит.
Так почему же ты считаешь, что «результат неправильный» ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Машина делает не то, что хочет человек, а то, что он ей приказывает!
Читать этот бредовый код невозможно. Понять, что нужно автору вопроса тоже.
Рекомендую начать заново и решать задачу поэтапно:
1. читать число Н и тупо вывести его в файл
2. читать число Н и вывести в файл числа от 1-го до Н
3. вместо чисел выводить факториалы этих чисел
4. выводить вместо факториалов то, что требуется по условию задачи
вложенные циклы ОБЯЗАНЫ иметь разные переменные.
Рекомендую начать заново и решать задачу поэтапно:
1. читать число Н и тупо вывести его в файл
2. читать число Н и вывести в файл числа от 1-го до Н
3. вместо чисел выводить факториалы этих чисел
4. выводить вместо факториалов то, что требуется по условию задачи
вложенные циклы ОБЯЗАНЫ иметь разные переменные.
Похожие вопросы
- Помогите, открыл .vbs файл и у меня теперь не открываються программы, любые! код внутри.
- программа Паскаль
- А программы Паскаль, Бейсик, Жава, и другие они все переводятся в один и тот же машиный язык? (вопрос про обычный пк).
- Получение опыта в области программирования (архитектура программы, качество кода).
- Какую программу (Паскаль) использовать в учебных целях, чтоб была овместима с файлами от "Турбо Паскаль"? В которых
- Программа Паскаль.
- Подскажите как создать такой проэкт в виде сайта , как сейчас например в партнерских программах дается код банера вы раз
- Кто хорошо знает программу ПАСКАЛЬ??плиз помогите)
- Программа Паскаль
- Помогите разобраться с написанием программы Паскале!