我在文本文件中有这10个数字(每行一个),我需要按照从最高编号开始的时间顺序对它们进行排序.我编写的代码工作得很好,但问题是代码不灵活,因为一旦我向文本文件中添加另一个数字,它将无法工作,因为代码设置为仅排序10个数字...这是由于我的整数数组应该在排序过程开始之前读取值,但是不允许我向数组的属性添加变量,因此它将能够读取和排序任意大小的文本文件.我知道必须有一种方法来制作一个可以对这种结构的任何大小的文件进行排序的程序,请告诉我如何改进我的代码.(如果你认为我的方式效率不高,那是因为这是我从高中毕业的作业,我需要使用这些数组实现一个bubbleort).
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
numbers, sortednumbers : TextFile;
count : integer=0;
number : array[1..10] of integer;
I : integer;
Procedure Swap(var X, Y : Integer);
var
Temp : integer;
begin
Temp := X;
X := Y;
Y := Temp;
end;
procedure Assign;
var I : Integer;
begin
reset(numbers);
for I := 1 to count do ReadLn(numbers, number[I]);
end;
procedure BubbleSort;
var I, J : integer;
begin
for I := 2 to count do
begin
for J …Run Code Online (Sandbox Code Playgroud) 我有这个字符串,我需要将一些字符设为大写,所以我使用该UpCase命令......但是如果我需要从大写字母中生成小字符怎么办?在这种情况下我用什么?
Heloo guys ...一旦我尝试运行此代码,我就会遇到"无效指针操作"错误,问题是什么?它应该将该文本文件中的那些名称按字母顺序排序(学校项目).
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
var
names : TextFile;
count : integer=0;
array : array of string;
i : integer;
Procedure Load;
begin
Reset(names);
SetLength(array, count - 1);
for i := 1 to count do ReadLn(names, array[i]);
end;
begin
AssignFile(names, 'names.txt');
Reset(names);
While not EoF(names) do
begin
ReadLn(names);
Inc(count);
end;
Load;
for i := 1 to count do WriteLn(array[i]);
ReadLn;
CloseFile(names);
Erase(names);
end.
Run Code Online (Sandbox Code Playgroud) 我的程序停止读取任何行,并在此过程之后结束程序,如"结束".之后(但不是):
Procedure BubbleSort;
var i, j : integer;
begin
for i := 0 to count - 1 do begin
for j := count - 1 downto i do
if (together[j] > together[j - 1]) then
Swap(together[j - 1], together[j]);
end;
end;
Run Code Online (Sandbox Code Playgroud) 我该怎么写这个?:
If number is different from Array[1] to Array[x-1] the begin......
Run Code Online (Sandbox Code Playgroud)
其中number是一个整数,array是一个从1到x的整数数组