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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2011, 01:05   #1
be-be
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 11
По умолчанию Oдномерный массив Pascal

Помогите пожалуйста, последняя надежда на вас...

Определить в одномерном массиве элемент и индекс, у которого четный индекс и который максимальный отрицательный (чётный индекс).
be-be вне форума Ответить с цитированием
Старый 15.10.2011, 02:24   #2
as1212
Пользователь
 
Регистрация: 08.10.2011
Сообщений: 42
По умолчанию

Вот лови код

Код:
PROGRAM lab5;
  USES CRT;
  CONST N = 6;
  TYPE MAS=ARRAY[1..N] OF INTEGER;
VAR C:MAS; MAX,IMAX,I:INTEGER; P:CHAR;
BEGIN  CLRSCR;
  WRITELN(' ':20,' ВВЕДИТЕ ',N,' ЧИСЕЛ');
  FOR I:=1 TO N DO READ(C[I]);
  MAX:=-32657;  FOR I:=1 TO N DO
  IF (C[I] < 0) AND (C[I]>MAX) AND (I mod 2 = 0) THEN
  BEGIN MAX:=C[I]; IMAX:=I; END ;
  WRITELN(' ':10,' максимальный отрицательный элемент ',MAX:4);
  WRITELN;
  WRITELN(' ':10,'его индекс ':5,IMAX:2);
  P:=READKEY
END.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 20.10.2011 в 09:07.
as1212 вне форума Ответить с цитированием
Старый 15.10.2011, 14:05   #3
be-be
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 11
По умолчанию

Огромное спасибо!!!!!
be-be вне форума Ответить с цитированием
Старый 19.10.2011, 22:06   #4
be-be
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 11
По умолчанию

Не мог бы кто нибудь объяснить мне - Почему
1) WRITELN(' ':20,' ВВЕДИТЕ ',N,' ЧИСЕЛ'); Почему тут 20 именно, что это значит?
2) FOR I:=1 TO N DO READ(C[I]); Что значит C[I]?
3) MAX:=-32657; FOR I:=1 TO N DO Почему тут MAX:=-32657?
4)WRITELN(' ':10,' максимальный отрицательный элемент ',MAX:4); Почему :10?
5) P:=READKEY - как это понять, что зачит Р?
be-be вне форума Ответить с цитированием
Старый 20.10.2011, 09:20   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

>1) WRITELN(' ':20,' ВВЕДИТЕ ',N,' ЧИСЕЛ'); Почему тут 20 именно, что это значит?
вывести сначала 20 пробелов. потом текст. Почему именно 20? Автор программы считает, что так будет "красивее" выглядеть.. Можете смелов выкинуть ' ':20, - на работу программы это не влияет.

>2) FOR I:=1 TO N DO READ(C[I]); Что значит C[I]?
а может Вам стоит почитать хоть какую-нибудь литературу по языку Паскаль?!
Что такое массивы, как они задаются, как обратиться к опередёлённому элементу массива?! ну и что такое циклы...

здесь C - это целочисленный массив от 1 до 6
for i:=1 to N - цикл от 1 до 6 (N - константа равная 6)
Read - прочитать
C[i] - i-й (очередной) элемент массива.

>3) MAX:=-32657; FOR I:=1 TO N DO Почему тут MAX:=-32657?
здесь это берётся как минимально возможное целое значение.
Посмотрите классический алгоритм поиска минимального/максимального значения.
кстати, берётся ошибочно. ибо минимальное целое значение равно -32767
впрочем, намного лучше написать так:
Код:
  Max := -MaxInt;
>4)WRITELN(' ':10,' максимальный отрицательный элемент ',MAX:4); Почему :10?
смотри ответ на вопрос 1)

>5) P:=READKEY - как это понять, что зачит Р?
присвоить значение (символ) нажатой клавиши в переменную P
в данной задаче это абсолютно лишнее.
достаточно написать просто:
Код:
 readkey;
а переменную P вообще выкинуть (из описания переменных)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.10.2011, 20:31   #6
be-be
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 11
По умолчанию

Подскажите, пожалуйсто, как тогда сделать так, что бы если нет отрицательных элементов было writeln (' отрицательных элементов нет ')??

Если допустим х=1 и dх=0.1 то тогда все элементы позтинвые, поэтому надо что бы было сообщение что отрицательных элементов нет.

Код:
 program massiv1;
 
 const   num=20;
 var
    oper,
    i,j :  integer;
    ms: array [1..num] of real;
    x, dx :real;
    imax : integer;
    maxv: real;
    label  MENU, SOLVE, КОНЕЦ;
 begin
 MENU:
    x:=0.27; dx:=0.345;
    writeln;
    writeln( 'Программа для вычисления массива');
    writeln( ' 3333 - закончить');
    writeln( ' 1111 – решать стандартной порог. величиой ');
    writeln( ' Любое другое число – решать своими порог. величиами');
    read( oper);
    if oper=3333 then goto КОНЕЦ;
    if oper=1111 then goto SOLVE;
    writeln( ' Введите два действительных чисел, они будут определять значения элемента массива');
    read(x, dx);
SOLVE:
   for i:=1 to num do
      begin
      ms[i]:=10*sin(x);
      x:=x+dx;
      end;          writeln;
   for i:=1 to num do
     begin
      write( '      "',i:2, '"', ms[i]:10:5)
     end;
     writeln;   writeln(' Чтобы продолжить введите любое число ');
     read(j);

       maxv:= -MaxInt;
       for i:=1 to num do
       if (ms[i]<0) and (ms[i]>maxv) and (i mod 2 = 0) then
         begin
           maxv:= ms[i];
           imax:=i;
       end;
   writeln(' максимальный отрицательнвй элемент:', maxv:10:5);
   writeln('  его индекс :', imax:5);

      goto MENU;

Последний раз редактировалось be-be; 22.10.2011 в 01:33.
be-be вне форума Ответить с цитированием
Старый 22.10.2011, 15:45   #7
be-be
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 11
По умолчанию

Не кто не может объяснить как это сделать?
be-be вне форума Ответить с цитированием
Старый 22.10.2011, 17:10   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Элементарно же!
Код:
....
      maxv := -MaxInt;
      imax := -1; {признак того, что мы ещё ничего не нашли!}
       for i:=1 to num do
       if (ms[i]<0) and (ms[i]>maxv) and (i mod 2 = 0) then
         begin
           maxv:= ms[i];
           imax:=i;
       end;

      if imax = -1 then WriteLn('подходящих отрицательных элементов нет ')
      else begin
          writeln(' максимальный отрицательнвй элемент:', maxv:10:5);
          writeln('  его индекс :', imax:5);
      end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58
Pascal Массив Денис999 Помощь студентам 2 02.06.2010 09:36
массив pascal neBu4kaMaXiM Помощь студентам 2 30.04.2010 16:54
pascal массив dante92 Помощь студентам 3 25.02.2010 01:14
pascal массив Fornarina Помощь студентам 3 08.02.2009 18:38