Одномерный массив, Pascal

Ответить
PCJakeD
Сообщения: 19
Зарегистрирован: 13 ноя 2008, 01:34

Помогите решить задачку на паскале:
Ввести одномерный массив . Размерность массива и тип элементов выбрать самим. Выполнить обработку массива: найти максимальный элемент массива и поставить его на место первого элемента, а первый - на место максимального (т.е. поменять местами первый и максимальный элементы). Исходный массив и результат вывести на экран.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Код: Выделить всё

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.
PCJakeD
Сообщения: 19
Зарегистрирован: 13 ноя 2008, 01:34

у меня что-то не получается пише:
Fatal: Syntax error, ; expected but identifier N found
ставлю где он просит ; все рано не работает, просит поставить ; после type потом после var и т.д. что можно сделать?
Apokal
Сообщения: 81
Зарегистрирован: 14 янв 2008, 19:02

Удалить строчку const N=10; и везде вместо N поставь 10 ручками.
И янадеюсь ты написал перед этим Uses CRT; ?
For Those Who About The Rock We Salute You!!!
PCJakeD
Сообщения: 19
Зарегистрирован: 13 ноя 2008, 01:34

да написал) Исправил все как ты сказал терь пишет:
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.
PCJakeD
Сообщения: 19
Зарегистрирован: 13 ноя 2008, 01:34

так я тут лишнего накрутил вот исправленное. Терь прога не запускается точнее запускается ток быстро проскакует и все. Я открыл 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 и он не выводит результат с заменнеными числами.
Apokal
Сообщения: 81
Зарегистрирован: 14 янв 2008, 19:02

Код: Выделить всё

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 и не иницализировал ее, она содержит хз что. Поэтому и ерроры.
For Those Who About The Rock We Salute You!!!
PCJakeD
Сообщения: 19
Зарегистрирован: 13 ноя 2008, 01:34

Огромное тебе СПАСИБО) если можешь помоги еще с двумерным массивом
Ответить