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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2009, 20:09   #1
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
Восклицание Массив в паскале!

Задача.
В одномерном массиве из N вещественных элементов, вычислить произведение элементов массива, расположенных между max и min по модулю элементами.

Код:
Program lab_5;
uses crt;
const n=10;
Var a:array[1..n] of real;
t,s:real;
i,j:integer;
begin
clrscr;
s:=1;
for i:=1 to n do
read(a[i]);
For i:=1 to n do
a[i]:=abs(a[i]);
for i:=1 to n-1 do
begin
for j:=i+1 to n-1 do
if a[i]>a[j] then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
end;
For i:=2 to n-1 do
Begin
s:=s*a[i];
writeln('s=',s);
end;
readln;
end
Это у меня получилось, но не работает! укажите на ошибку пожалуйста!

Последний раз редактировалось Гамбит; 15.11.2009 в 21:27.
Гамбит вне форума Ответить с цитированием
Старый 15.11.2009, 20:21   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

1) Есть кнопка код.
2) Код должен быть читаем:
2.1) Отформатируйте Код.
2.2) В блоке [CODE] [\CODE] выберите шрифт Courier.

Без этого разобраться в этом коде... Хм.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.11.2009, 20:32   #3
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию

Цитата:
произведение элементов массива, расположенных между max и min по модулю элементами.
1. В модулях должны быть только макс и мин. А Вы все значения по модулю перезаписываете в тот же массив.
2. Надо найти макс и мин и запомнить их индексы.
3. сравнить, что втречается раньше - макс или мин.
4. потом в цикле от индекса мин до индекса макс (или наоборот. зависит от пункта 3)переумножить все элементы.

Последний раз редактировалось Desha; 15.11.2009 в 20:50.
Desha вне форума Ответить с цитированием
Старый 15.11.2009, 21:28   #4
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
По умолчанию

Во первых так и не понял как выбирать шрифт.
Во вторых я врядли смогу написать сам такую программу. Можно ли хоть кусок кода?
Гамбит вне форума Ответить с цитированием
Старый 16.11.2009, 04:42   #5
Dmitry333
Пользователь
 
Аватар для Dmitry333
 
Регистрация: 13.11.2009
Сообщений: 60
По умолчанию

Держи

Код:

const
     n=5;
var
   a:array[1..n] of real;
   max,min,s:real;
   i,x,y:integer;
begin
     randomize;
     for i:=1 to n do
     begin
          readln(a[i]);
     end;
     writeln;
     max:=abs(a[1]);
     min:=abs(a[1]);
     x:=1;
     y:=1;
     for i:=1 to n do
     begin
          if abs(a[i])>max then
          begin
               max:=abs(a[i]);
               x:=i;
          end;
          if abs(a[i])<min then
          begin
               min:=abs(a[i]);
               y:=i;
          end;
     end;
     if x = y then 
     begin
          writeln('max = min');
          exit;
     end;
     s:=1;
     if x<y then
     begin
          for i:=x+1 to y-1 do s:=s*a[i];
     end else
         begin
           for i:=y+1 to x-1 do s:=s*a[i];
         end;
     writeln('Minimalniy ',y,'    Maximalniy ',x);
     writeln('Summa ravna ',s:3:2);
     readln;
end.
Вроде работает

Последний раз редактировалось Dmitry333; 16.11.2009 в 04:51.
Dmitry333 вне форума Ответить с цитированием
Старый 16.11.2009, 07:11   #6
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
По умолчанию

Спасибо, но программа работает плохо =( придётся самому разбиратся
Гамбит вне форума Ответить с цитированием
Старый 16.11.2009, 09:20   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так подойдет?
Код:
 const n=5;
 var a:array[1..n] of double;i:integer;
 mx,mn:integer;sum:double;
begin          mn:=1;mx:=1;sum:=0;
 for i:=1 to n do begin
  a[i]:=random(200)/5;
  if a[i]<a[mn] then mn:=i;
  if a[i]>a[mx] then mx:=i;
  write(a[i]:8:2);
 end;
 writeln;
 if mn<mx then
  for i:=mn to mx do begin
   sum:=sum+a[i];
  end
 else
  for i:=mn downto mx do begin
   sum:=sum+a[i];
  end;
 writeln('sum=',sum:5:2);

 Readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2009, 09:40   #8
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
По умолчанию

Stilet спаибо. Правда там выдаёт ошибку какуюто... но я думаю смогу доработать этот алгоритм =)
да может ктонить подскажет что это а ошибка. "Must be in 8087 mode to compile this " /

Последний раз редактировалось Гамбит; 19.11.2009 в 09:43.
Гамбит вне форума Ответить с цитированием
Старый 19.11.2009, 10:38   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Must be in 8087 mode to compile this
Ну я на Делфи это писал, так что использую DOUBLE
А в паскале нужно в меню options-Compiler option включить галку на 8087 и Emulation
Или вместо Double напиши Real
I'm learning to live...

Последний раз редактировалось Stilet; 19.11.2009 в 10:41.
Stilet вне форума Ответить с цитированием
Старый 19.11.2009, 20:55   #10
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
По умолчанию

Я заменил на real, и мне нужно было посчитать произведение, а не сумму, но это я тоже сделал, но оно считает произведение неправильно =( + мне нужны по модулю макс мни элементы.
Гамбит вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив в паскале glavsvetik Помощь студентам 1 05.05.2009 19:28
Массив на Паскале??? Павел Я Помощь студентам 1 11.03.2009 11:28
Двумерный массив на Паскале HECTOR.A. Помощь студентам 2 24.12.2008 21:21
Массив на Паскале! vlad1991 Помощь студентам 4 02.11.2008 21:45
массив в паскале istragon Помощь студентам 3 04.12.2007 09:41