Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль, массивы, вставка (http://www.tehnari.ru/f41/t74836/)

Натуличка 12.06.2012 16:00

Паскаль, массивы, вставка
 
в линейном массиве целых чисел на место минимального элемента вставить максимальный элемент.
что делать? нужно вводить i, n, max, min, i max. i min.
max и min я сама определяю. а что делать с i max. i min.? это же ячейки в которых расположены элементы, их я тоже определяю сама? Т.Е. если ввожу 20 ячеек, то мин=1 а мах=20?

Vladimir_S 12.06.2012 16:35

Цитата:

Сообщение от Натуличка (Сообщение 747981)
Т.Е. если ввожу 20 ячеек, то мин=1 а мах=20?

Нет. Если минимальный элемент расположен в 17-й ячейке, а максимальный - в 3-й, то Imin=17, а Imax=3.
Я тут другого не понимаю - что за дебильная формулировка такая? Обычно требуется ввести только сам массив, а уж дело программы найти минимальный и максимальный элементы, их номера, а затем проделать требуемые манипуляции: перестановки, перезаписи и т.п. Вот нафига заранее вводить избыточную информацию?

Натуличка 12.06.2012 17:14

так не я прошу, а требует преподаватель. но сколько я понаходила примеров и подобных задач я недолжна вводить ячейки, а только задавать элементы. вообщем моя задача зависла. вот какой решение задачи вижу я
var a, array [1..20] of integer;
i,n,max,min of integer;
begin
writeln ('ввод кол-во эл массива');
readln (n);
writeln ('ввод эл массива');
for i:=1 to n do
readln (a [i]);
max:= a [1]
min:= a [1]
for i:=1 to n do
if a[i]> min then
min:=a[i];
ДАЛЬШЕ Я ЗАПУТАЛАСЬ!!!!!!!!!

Vladimir_S 12.06.2012 17:42

Дорогая Натуличка, мой Вам совет - установить на компьютер какой-либо пакет языка Паскаль, и любые программы запускать и отлаживать на компьютере, а не в тетрадке. По крайней мере, освоите синтаксис языка. Потому что любой транслятор, увидя такие перлы:
Цитата:

var a, array [1..20] of integer;
i,n,max,min of integer;
разразится матерной тирадой.
На всякий случай - правильно так:
var
a: array [1..20] of integer;
i,n,max,min: integer;
Теперь по программе.
Судя по всему, Вы решили пойти обычным путем, без ввода лишней информации. И правильно, потому что знаете, как выглядит задача, если исходить из "требований преподавателя"? А примерно так:
Даны три числа: 5, 17, и 41. Найти максимальное, равное 41, стоящее на третьей позиции.
Полный бред.
Так что если Вас устроит обычный алгоритм ввода и обработки массива, то это так:
Код:

const
 Nmax=100;
var
 a: array [1..Nmax] of integer;
 i,n,max,min,Imin,Imax: integer;
begin
 writeln ('ввод кол-во эл массива');
 readln (n);
 writeln ('ввод эл массива');
  for i:=1 to n do
  readln (a [i]);
 writeln;
 for i:=1 to n do write(a[i]:4);
 writeln;
 writeln;
 max:= a[1];
 min:= a[1];
 Imin:=1;
 Imax:=1;
 for i:=2 to n do
  begin
  if a[i]<min then
    begin
    min:=a[i];
    Imin:=i;
    end;
  if a[i]>max then
    begin
    max:=a[i];
    Imax:=i;
    end;
  end;
 a[Imin]:=a[Imax];
 for i:=1 to n do write(a[i]:4);
 readln
end.


Натуличка 12.06.2012 18:05

спасибо за совет, у меня стоит одна программа, но не показывает результат. на синтаксис я пока не обращала внимание, так как главное было понять, а это я потом разберу.
во всяком случае спасибо за помощь и советы)


Часовой пояс GMT +4, время: 16:35.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.