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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 11:45   #1
Rusat
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 17
По умолчанию В одномерном массиве, состоящем из n вычислить в Паскале:

Здравствуйте! Помогите разобраться дана задача
В одномерном массиве, состоящем из n вычислить:
1) сумму отрицательных элементов массива;
2) произведение элементов массива, расположенных между максимальным и миимальным элементами.
Упорядочить элементы массива по возрастанию.

Вот то что сделал, вобщем не работает поиск максимального и минимального элемента массива и не могу найти их произведение. Вот код посмотрите пожалуйста что не так:

Program massiv;
Uses Crt;
const n=10;
var i,j,proizv,k,sum,min,max:integer;
mat: array [1..n] of integer;
begin
clrscr;
for i := 1 to n do {задаем элементы массива}
read(mat[i]);
sum:=0;
For i:=1 to n do {Считаю сумму отрицательных элементов массива}
If mat[i]<0 then
sum:=sum+mat[i];
writeln(sum);
for i := 1 to n do {Ищу порядок максимального элемента массива}
max:=mat[1];
For i:=2 to n do
if mat[i]>max then
max:=i;
for i := 1 to n do {Ищу порядок минимального элемента массива}
min:=mat[1];
For i:=2 to n do
if mat[i]<min then
min:=i;
writeln(min,' ',max); {Вывожу порядок минимального и максимального элементов массива}
If min>max then {Меняю местами порядки, если порядок максимального меньше минимального}
begin
k:=min;
min:=max;
max:=k;
end;
proizv:=1;
for i := min to max do {Считаю произведение между минимальным и максимальным элементами массива}
Proizv:=proizv*mat[i];
writeln(proizv);
for i := 1 to n do {Упорядочиваю элементы массива по возрастанию}
for j := 1 to n do
if mat[i]<mat[j] then
begin
k:=mat[i];
mat[i]:=mat[j];
mat[j]:=k;
end;
for i := 1 to n do {Вывожу упорядоченный массив}
write(mat[i], #32);
readkey;
end.
Контактная ин-фа 479-275-762, DmitriK181988@gmail.com
Rusat вне форума Ответить с цитированием
Старый 07.03.2010, 14:07   #2
Ser@Fim
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 19
По умолчанию

В min и max у тебя стоят индексы(номера) минимального/максимального элемента, соответственно сравнивать надо сами элементы:
Код:
for i := 1 to n do {Ищу порядок максимального элемента массива}
max:=mat[1];
For i:=2 to n do
  if mat[i]>mat[max] then
     max:=i;
for i := 1 to n do {Ищу порядок минимального элемента массива}
min:=mat[1];
For i:=2 to n do
  if mat[i]<mat[min] then
     min:=i;
ну а выделенное красным убрать надо, это лишнее

Последний раз редактировалось Ser@Fim; 07.03.2010 в 14:09.
Ser@Fim вне форума Ответить с цитированием
Старый 07.03.2010, 14:09   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Неправильный поиск максимального и минимального элементов и их позиций
Код:
for i := 1 to n do {Ищу порядок максимального элемента массива} //эта строка лишняя
max:=mat[1];
maxPos := 1;
For i:=2 to n do
if mat[i]>max then begin
  max:=mat[i];
  maxPos := i
end;
Для минимального аналогично
Код:
writeln(minPos,' ',maxPos); {Вывожу порядок минимального и максимального элементов массива}
If minPos>maxPos then {Меняю местами порядки, если порядок максимального меньше минимального}
begin
k:=minPos;
minPos:=maxPos;
maxPos:=k;
end;
proizv:=1;
for i := minPos to maxPos do {Считаю произведение между минимальным и максимальным элементами массива}
Proizv:=proizv*mat[i];
writeln(proizv);
ДОБАВЛЕНО
Цитата:
Сообщение от Ser@Fim Посмотреть сообщение
Код:
max:=mat[1];
For i:=2 to n do
  if mat[i]>mat[max] then
     max:=i;
Тоже не верно. Пример тому массив [100, 2, 1, 3, 4, 5, 6, 8, 7, 6]. mat[100] - не существует

Последний раз редактировалось eoln; 07.03.2010 в 15:03.
eoln вне форума Ответить с цитированием
Старый 07.03.2010, 15:59   #4
Rusat
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 17
По умолчанию

Спасибо большое теперь все работает
Контактная ин-фа 479-275-762, DmitriK181988@gmail.com
Rusat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В одномерном массиве, состоящем из n веществ элементов, вычислить LUCK Общие вопросы C/C++ 5 29.01.2010 19:52
Замена данных в одномерном массиве Jaroslav Microsoft Office Excel 2 09.06.2009 08:25
Нужно программу написать в одномерном массиве!!! Fylhtq Паскаль, Turbo Pascal, PascalABC.NET 8 03.06.2009 12:47
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16
Поиск в одномерном массиве Joxter Помощь студентам 6 13.12.2008 14:19