Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2007, 21:04   #1
nikleb
Форумчанин
 
Регистрация: 04.04.2007
Сообщений: 131
По умолчанию маcсив

Хотел сделать чтоб прога сортировала цыфры по виличине. Почему она не работает?

program masiv;
uses crt;
var a,b: array[1..10] of integer;
i,max,maxi,s:integer;
begin
clrscr;
for i:=1 to 10 do
begin
writeln('введи ',i,' цыфру из 10');
readln(a[i]);
end;
max:=a[1];
maxi:=a[1];


for i:=1 to 10 do
begin;
inc(s);
for i:=2 to 10 do
begin
if a[i]>max then
begin
max:=a[i];
a[i]:=0;
end;
end;
b[i]:=max;
end;

for i:=1 to 10 do
write(b[i]:5);

readln;
end.
nikleb вне форума Ответить с цитированием
Старый 19.04.2007, 22:58   #2
bphoenix
Пользователь
 
Аватар для bphoenix
 
Регистрация: 12.04.2007
Сообщений: 21
Подмигивание

ну ты малёх перемудрил твоя сортировка должна выглядеть как минимум вот так:

program Sorting;

uses
Crt;

var
A : array[ 1..10 ] of Integer;
I, J, Tmp : Integer;

begin
ClrScr;

for I := 1 to 10 do
begin
WriteLn( 'введи ', I, 'цифру из 10' );
ReadLn( A[ i ] );
end;

I := 1;
while I < 10 do
begin
if A[ I ] > A[ I + 1 ] then
begin
J := I;
while ( J > 0 ) and ( A[ J ] > A[ J + 1 ] ) do
begin
Tmp := A[ J ];
A[ J ] := A[ J + 1 ];
A[ J + 1 ] := Tmp;
Dec( J );
end;
end
else
Inc( I );
end;

for I := 1 to 10 do
Write( A[ I ]:5 );

ReadLn;

end.
Пусть баги обходят вас стороной

Последний раз редактировалось bphoenix; 19.04.2007 в 23:02.
bphoenix вне форума Ответить с цитированием
Старый 19.04.2007, 23:04   #3
Wiggle
Пользователь
 
Аватар для Wiggle
 
Регистрация: 16.04.2007
Сообщений: 15
По умолчанию

Мне лично слабо понятно, с чего она должна работать.. алгоритм как то совсем кривой...

Цитата:
program masiv;
uses crt;
var a,b: array[1..10] of integer;
i,j,Maxi,s:integer;
begin
clrscr;
for i:=1 to 10 do
begin

writeln('введи ',i,' цифру из 10');
readln(a[i]);
end;


for i := 1 to 10 do

Maxi = i;

begin
for j := i to 10 do
begin
if a[Maxi] < a[j] then
Maxi = j;
end;
b[i] := a[maxi];
end;

for i:=1 to 10 do
write(b[i]:5);

readln;
end.

это всё должно сортировать от большого к малому. Если надо наоборот, то меняешь
Maxi на Mini
И в строке

Цитата:
if a[Maxi] < a[j] then
Maxi = j;
меняешь на

Цитата:
if a[Mini] > a[j] then
Mini = j;
Я, как и ты, думал, что за нами прилетят,
Ошейник снимут, за ухом почешут и всё простят,
Но я сплю у миски, и ты всё съел... В подарок ириска!
Wiggle вне форума Ответить с цитированием
Старый 19.04.2007, 23:23   #4
nikleb
Форумчанин
 
Регистрация: 04.04.2007
Сообщений: 131
По умолчанию

Большое Спасибо
nikleb вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск