arranging sorting an array - Programmers Heaven

#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

# arranging sorting an array

Posts: 4Member
Hi!
i am having trouble sorting an array using a for loop.
the problem occurs when using iterations i and i+1

for example
count:=0
for i:=0 to count do begin
if a[i] > a[i+1] then begin
....

end
count+1
end

problem is when the for loops reaches the LAST array value i , i+1 does not exist hence the problem.
I have tried using
" for i:=0 to count-1 do begin"
this does not help.

any suggestions?

• Posts: 268Member
[code][color=Blue]const array_size=10;

var t:array[1..array_size] of integer;
i,j:byte;

procedure swap(var a,b:integer);
begin
a:=a xor b;
b:=a xor b;
a:=a xor b;
end;

begin
for i:=1 to array_size do begin
end;

for i:=array_size downto 2 do {Simple bubble sort}
for j:=1 to i do
if t[i]>t[j] then swap(t[i],t[j]);

for i:=1 to array_size do
writeln(i:2,': ',t[i]);
end.[/color][/code]
• Posts: 4Member
hi!
i have listed the entire code for reference at the bottom.

however I have tried something similar to what you suggested
I am still having the trouble of the sorting 'jumping ahead'.
the problem part is
[code]

count :=1
begin
... values are entered

for i:=0 to count do begin

if CustomerSalary[i] > CustomerSalary[count] then begin

tmpCustomerName:= CustomerName[i];
tmpCustomerLoan:= CustomerLoan[i];
tmpCustomerSalary:= CustomerSalary[i];

CustomerName[i]:= CustomerName[count];
CustomerLoan[i]:= CustomerLoan[count];
CustomerSalary[i]:= CustomerSalary[count];

CustomerName[count]:= tmpCustomerName;
CustomerLoan[count]:= tmpCustomerLoan;
CustomerSalary[count]:= tmpCustomerSalary;

end;
end;
count is incremented here

end.
[/code]

[code]
Program ;

var CustomerName: array[1..25] of string;
var CustomerLoan: array[1..25] of integer;
var CustomerSalary: array[1..25] of integer;
var i,j: integer;
var tmpCustomerName:string;
var tmpCustomerLoan:integer;
var tmpCustomerSalary:integer;
var count: integer;
const array_size =25;
var YesOrNo: char;
Begin
count:=0;
FOR i:=0 TO 25 DO

begin

Writeln('ALL CUSTOMERS');
FOR i:=0 TO count DO
begin
Writeln(CustomerName[i],'----Loan:',CustomerLoan[i],'-----Salary:',CustomerSalary[i]);
end;
Writeln('---------------------------------------------------');

Writeln('Customers with Loans equal to 1');
FOR i:=0 TO count DO
begin
if CustomerLoan[i]= 1 then begin
Writeln('Loan:',CustomerLoan[i],'---Name---',CustomerName[i],'-----Salary:',CustomerSalary[i]);
end;
end;
Writeln('---------------------------------------------------');

for i:=0 to count do begin

if CustomerSalary[i] > CustomerSalary[count] then begin

tmpCustomerName:= CustomerName[i];
tmpCustomerLoan:= CustomerLoan[i];
tmpCustomerSalary:= CustomerSalary[i];

CustomerName[i]:= CustomerName[count];
CustomerLoan[i]:= CustomerLoan[count];
CustomerSalary[i]:= CustomerSalary[count];

CustomerName[count]:= tmpCustomerName;
CustomerLoan[count]:= tmpCustomerLoan;
CustomerSalary[count]:= tmpCustomerSalary;

end;
end;
end;

Writeln('5 Customers with highest salaries');
FOR i:=0 TO 5 DO
begin
Writeln('Salary:',CustomerSalary[i],'---Name----',CustomerName[i],'----Loan:',CustomerLoan[i]);
end;
Writeln('---------------------------------------------------');

count :=count +1;
end;

end.

[/code]
• Posts: 4Member
sorry for the double post
• Posts: 268Member
: i have listed the entire code for reference at the bottom.
:
: however I have tried something similar to what you suggested
: I am still having the trouble of the sorting 'jumping ahead'.

Your program has way too many errors to list, it doesn't even compile. Just adapt my code to your needs...

• Posts: 59Member
I use QuickSort to sort any array that needs
sorting and multiple arrays that either need
ascending or descending order. I've made my
QuickSort into a unit. Just follow what I've
done in my zip file with the example.