如何从txt文件中找到最大的数字?
How to find the biggest number from a txt file?
我必须从一个 txt 文件中找出最大的数字。数字例如:
9 8 7 6 5
有人告诉我,它应该可以工作,但没有,我不知道如何使用文件 bcs。
program file;
uses crt;
var i,count,help:integer;
numb:array [1..9] of integer;
f:text;
begin
clrscr;
assign(f,'file1.txt');
reset(f);
readln(f,count);
for i:=1 to count do
readln(f,numb[i]);
close(f);
for i:=2 to count do
begin
if (numb[i-1] < numb[i]) then
help:=numb[i-1];
numb[i-1]:=numb[i];
numb[i]:=help;
end;
for i:=1 to count do
begin
write(numb[i]);
end;
readln;
end.
提供的代码中有一些错误:
- 程序名称是文件。程序名不能为关键字;
- 您从文件中读取了变量
count
,但在文件中找不到实际值,因此 count=0
。因此,从未执行从文件中读取数据的 for
循环。您可以从文件或键盘读取它(在下面的解决方案中,我选择了第二个选项);
- 从文件中读取时使用
readln
。 readln
读取数据后将光标移动到下一行。这意味着只有第一个数字 9 存储到 numb
中。将 readln
替换为 read
;
- 在第二个
for
循环中,你说 if ... then
。如果你希望这三个指令都被执行(我想你会这样做,因为它是一种价值交换),请将它们放在 begin
和 end
之间。否则,如果条件为真,则只执行第一条指令,其他的一直执行;
- 确定最大值的方法有点矫枉过正。如果你采用一个变量
max
更好,它最初获取数组中第一个元素的值,然后你循环剩余的值以查看值是否高于 max
.
最终代码如下所示:
program file1;
uses crt;
var i,count,help, max:integer;
numb:array [1..9] of integer;
f:text;
begin
clrscr;
assign(f,'file1.txt');
reset(f);
writeln('Please input a number for count :');
readln(count);
for i:=1 to count do
read(f,numb[i]);
close(f);
max:=numb[1];
for i:=2 to count do
if numb[i]>max then
max:=numb[i];
write('The result is: ',max);
readln;
end.
如果您只想知道最大的数字,您可以在读取文件中的数字时使用 运行ning 最大值。
作为用户,您不必知道文件中有多少个数字。程序应该确定。
我写了一个小测试文件,叫做file1.txt:
9 8 7 6 3 11 17
32 11 13 19 64 11 19 22
38 6 21 0 37
而且我只读了数字,将它们与 Max
进行了比较。这就是您所需要的。
- 无需将数据读入数组
- 无需(尝试)对数据进行排序。你只想要最高的数字,对吧?
- 而且用户也不需要知道或输入文本文件中的数字个数。
program ReadMaxNumber;
uses
Crt;
var
Max, Num: Integer;
F: Text;
begin
ClrScr;
Assign(F, 'file1.txt');
Reset(F);
Max := -1;
while not Eof(F) do
begin
Read(F, Num);
if Num > Max then
Max := Num;
end;
Close(F);
Writeln('Maximum = ', Max);
Readln;
end.
当我运行这个时,输出如预期的那样:
Maximum = 64
我必须从一个 txt 文件中找出最大的数字。数字例如:
9 8 7 6 5
有人告诉我,它应该可以工作,但没有,我不知道如何使用文件 bcs。
program file;
uses crt;
var i,count,help:integer;
numb:array [1..9] of integer;
f:text;
begin
clrscr;
assign(f,'file1.txt');
reset(f);
readln(f,count);
for i:=1 to count do
readln(f,numb[i]);
close(f);
for i:=2 to count do
begin
if (numb[i-1] < numb[i]) then
help:=numb[i-1];
numb[i-1]:=numb[i];
numb[i]:=help;
end;
for i:=1 to count do
begin
write(numb[i]);
end;
readln;
end.
提供的代码中有一些错误:
- 程序名称是文件。程序名不能为关键字;
- 您从文件中读取了变量
count
,但在文件中找不到实际值,因此count=0
。因此,从未执行从文件中读取数据的for
循环。您可以从文件或键盘读取它(在下面的解决方案中,我选择了第二个选项); - 从文件中读取时使用
readln
。readln
读取数据后将光标移动到下一行。这意味着只有第一个数字 9 存储到numb
中。将readln
替换为read
; - 在第二个
for
循环中,你说if ... then
。如果你希望这三个指令都被执行(我想你会这样做,因为它是一种价值交换),请将它们放在begin
和end
之间。否则,如果条件为真,则只执行第一条指令,其他的一直执行; - 确定最大值的方法有点矫枉过正。如果你采用一个变量
max
更好,它最初获取数组中第一个元素的值,然后你循环剩余的值以查看值是否高于max
.
最终代码如下所示:
program file1;
uses crt;
var i,count,help, max:integer;
numb:array [1..9] of integer;
f:text;
begin
clrscr;
assign(f,'file1.txt');
reset(f);
writeln('Please input a number for count :');
readln(count);
for i:=1 to count do
read(f,numb[i]);
close(f);
max:=numb[1];
for i:=2 to count do
if numb[i]>max then
max:=numb[i];
write('The result is: ',max);
readln;
end.
如果您只想知道最大的数字,您可以在读取文件中的数字时使用 运行ning 最大值。
作为用户,您不必知道文件中有多少个数字。程序应该确定。
我写了一个小测试文件,叫做file1.txt:
9 8 7 6 3 11 17
32 11 13 19 64 11 19 22
38 6 21 0 37
而且我只读了数字,将它们与 Max
进行了比较。这就是您所需要的。
- 无需将数据读入数组
- 无需(尝试)对数据进行排序。你只想要最高的数字,对吧?
- 而且用户也不需要知道或输入文本文件中的数字个数。
program ReadMaxNumber;
uses
Crt;
var
Max, Num: Integer;
F: Text;
begin
ClrScr;
Assign(F, 'file1.txt');
Reset(F);
Max := -1;
while not Eof(F) do
begin
Read(F, Num);
if Num > Max then
Max := Num;
end;
Close(F);
Writeln('Maximum = ', Max);
Readln;
end.
当我运行这个时,输出如预期的那样:
Maximum = 64