Страница 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
Огромное тебе СПАСИБО) если можешь помоги еще с двумерным массивом