Страница 1 из 1
Одномерный массив, Pascal
Добавлено: 13 ноя 2008, 01:41
PCJakeD
Помогите решить задачку на паскале:
Ввести одномерный массив . Размерность массива и тип элементов выбрать самим. Выполнить обработку массива: найти максимальный элемент массива и поставить его на место первого элемента, а первый - на место максимального (т.е. поменять местами первый и максимальный элементы). Исходный массив и результат вывести на экран.
Re: Одномерный массив
Добавлено: 13 ноя 2008, 11:24
Naeel Maqsudov
Код: Выделить всё
const
N=10;
type
TBaseType=integer;
var
A:array[1..N] of TBaseType;
Tmp: TBaseType;
i,MaxIdx:integer;
begin
{заполнение}
for i:=1 to n do a[i]:=random(100);
{вывод}
for i:=1 to n do write(a[i],'; ');
writeln;
{поиск номера максимального элемента}
MaxIdx:=1;
For i:=2 to N do if A[i]>A[MaxIdx] then MaxIdx:=i;
writeln('Номер максимального элемента: ', MaxIdx);
{перестановка}
Tmp:=A[1];
A[1]:=A[MaxIdx];
A[MaxIdx]:=Tmp;
{вывод}
for i:=1 to n do write(a[i],'; ');
writeln;
end.
Re: Одномерный массив
Добавлено: 13 ноя 2008, 15:58
PCJakeD
у меня что-то не получается пише:
Fatal: Syntax error, ; expected but identifier N found
ставлю где он просит ; все рано не работает, просит поставить ; после type потом после var и т.д. что можно сделать?
Re: Одномерный массив
Добавлено: 13 ноя 2008, 16:23
Apokal
Удалить строчку const N=10; и везде вместо N поставь 10 ручками.
И янадеюсь ты написал перед этим Uses CRT; ?
Re: Одномерный массив
Добавлено: 13 ноя 2008, 22:03
PCJakeD
да написал) Исправил все как ты сказал терь пишет:
Fatal: Syntax error, ; expected but identifier TBASETYPE found
Вот как выглядит у меня код:
uses crt;
begin clrscr;
type
TBaseType=integer;
var
A:array[1..10] of TbaseType;
Tmp: TBaseType;
i,MaxIdx:integer;
begin
for i:=1 to 10 do a:=random(100);
for i:=1 to 10 do writeln(a,'; ');
writeln;
MaxIdx:=1;
for i:=2 to 10 do if A>A[MaxIdx] then MaxIdx:=i;
writeln('Номер максимального элимента : ',MaxIdx);
Tmp:=A[l];
A[l]:=A[MaxIdx];
A[MaxIdx]:=Tmp;
for i:=l to 10 do write(a,'; ');
writeln;
end.
Re: Одномерный массив
Добавлено: 13 ноя 2008, 22:36
PCJakeD
так я тут лишнего накрутил вот исправленное. Терь прога не запускается точнее запускается ток быстро проскакует и все. Я открыл Command Shell там:
Running "c:\01\4.exe "
71;
51;
6;
78;
38;
12;
95;
75;
82;
59;
Номер максимального элимента: 7
Runtime error 201 at 0x004011DA
0x004011DA
0x00402125
Вот как выглядит у меня код:
uses crt;
type
TBaseType=integer;
var
A:array[1..10] of TbaseType;
Tmp: TBaseType;
i,L,MaxIdx:integer;
begin
for i:=1 to 10 do a:=random(100);
for i:=1 to 10 do writeln(a,'; ');
writeln;
MaxIdx:=1;
for i:=2 to 10 do if A>A[MaxIdx] then MaxIdx:=i;
writeln('Номер максимального элимента : ',MaxIdx);
Tmp:=A[l];
A[l]:=A[MaxIdx];
A[MaxIdx]:=Tmp;
for i:=l to 10 do write(a,'; ');
writeln;
end.
В чем может быть проблема? Еще я добавил L в integer и он не выводит результат с заменнеными числами.
Re: Одномерный массив
Добавлено: 13 ноя 2008, 22:52
Apokal
Код: Выделить всё
Tmp:=A[l];
A[l]:=A[MaxIdx];
A[MaxIdx]:=Tmp;
for i:=l to 10 do write(a[i],'; ');
writeln;
Это в качествае индекса елемента массивав строке Tmp:=A[l]; находитса прописная буква L ???? Если да то какого добавлять в прогу вообще L!!!??? Ты ж Tmp присваиваеш первый елемент, что нельзя написать Tmp:=A[1]; ???? И потом в строках A[l]:=A[MaxIdx]; и for i:=l to 10 do write(a
,'; '); замени L на 1.
Тем более ты обьявил L как Integer и не иницализировал ее, она содержит хз что. Поэтому и ерроры.
Re: Одномерный массив
Добавлено: 13 ноя 2008, 23:31
PCJakeD
Огромное тебе СПАСИБО) если можешь помоги еще с двумерным массивом