Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
byAlex
1

В произвольном массиве найти номер первого положительного и последнего отрицательного элемента и все элементы расположенные между ними

15.06.2012, 01:51. Просмотров 1061. Ответов 1
Метки нет (Все метки)


Подскажите условие для вывода на экран в массиве первый положительный элемент и последний отрицательный и то что между ними! заранее большое спасибо!
или просто подскажите в чем ошибка)))
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
uses CRT;
Type
 mas=array [1..100] of integer;
var
 i, n,{ min, minX,} max, maxY,pp,po: integer;
 a:mas;
Procedure Vvod(n:integer; Var a:mas);
Var i:integer;
begin
 writeln('Ввод массива:');
 write('Количество элементов в массиве n=');
 readln(n);
 clrscr;
 For i:=1 to n do begin
  write('a[',i,']=');
  readln(a[i]);
  clrscr;
 end;
 end;
Procedure vivod(n:integer; Var a :mas);
Var i:integer;
begin
 writeln ('Вы ввели такой массив:');
 For i:=1 to n do begin
  writeln('a[',i,']=',a[i]);
 end;
end;
 
Procedure maxElem(n:integer; Var a:mas; Var pp:integer);
begin
 max:=0;
 pp:=0;
 For i:=1 to n do begin
  If a[i]>0 then begin max:=i; pp:=a[i]; break end;
 end;
 If max=0 then writeln('Положительные элементы отсутствуют')
  else writeln('Первый положительный элемент: a[',max,']=',pp);
end;
 
Procedure minElem(n:integer; Var a:mas; Var po:integer);
Var i:integer;
begin
 min:=0;
 po:=0;
If min=0 then writeln('Отрицательные элементы отсутствуют')
  else writeln('Последний отрицательный элемент: a[',min,']=',po);
 For i:=n downto 1 do begin
  If a[i]<0 then
   begin
    min:=i;
    po:=a[i];
    break
   end;
 end;
end;
 
Procedure sred(Var a:mas; Var pp,po:integer);
Var i:integer;
begin
If (po<0) or (pp>0) then begin writeln;
  For i:=max+1 to min-1 do begin
   writeln('a[',i,']=',a[i])
  end;
 end;
end;
 
Begin
 clrscr;
 
 
 vvod(n,a);
 vivod(n,a);
 maxElem(n,a,pp);
 minElem(n,a,po);
 sred(a,pp,po);
 writeln;
 readkey;
end.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2012, 01:51
Ответы с готовыми решениями:

Найти величину и номер первого отрицательного и последнего положительного элементов в массиве
хелп с программой. Найти величину и номер первого отрицательного и последнего положительного...

В векторе (одномерном массиве) найти: разность первого положительного и последнего отрицательного элемента
В заданном векторе (одномерном массиве) найти: разность первого положительного и последнего...

Найти номер первого отрицательного элемента и первого положительного элемента
В массиве из 25 элементов найти номер первого отрицательного элемента и первого положительного...

Удалить из массива все положительные элементы, расположенные до последнего отрицательного элемента
Прошу Вашей помощи. Задача: удалить из массива все положительные элементы, расположенные до...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
1
Эксперт по математике/физике
2595 / 2210 / 683
Регистрация: 29.09.2012
Сообщений: 4,578
Записей в блоге: 13
13.12.2012, 20:05 2
Цитата Сообщение от byAlex Посмотреть сообщение
Подскажите условие для вывода на экран в массиве первый положительный элемент и последний отрицательный и то что между ними! заранее большое спасибо!
или просто подскажите в чем ошибка)))
1. Процедуре Sred недоступна переменная min, поскольку она закомментирована в разделе var.
2. В процедурах MinElem, MaxElem в качестве аргументов ничего указывать не нужно, поскольку все необходимое указано в разделе var.
Вместо цикла for разумнее использовать while:
imax:=1;
while (i<=n) and (a[max]<=0) do max:=max+1;

Аналогично в поцедуре MinEle.
3. В процедуре Sred писать For i:=max to min do begin
4. Программу значительно можно сократить, объединив эти три процедуры.
5. Успехов!

Добавлено через 4 часа 2 минуты
Цитата Сообщение от Symon Посмотреть сообщение
Вместо цикла for разумнее использовать while:
imax:=1;
while (i<=n) and (a[max]<=0) do max:=max+1;

Исправить: вмето imax нужно max
вместо i нужно max
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2012, 20:05

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Переписать в другой массив из данного все элементы, расположенные правее последнего отрицательного элемента
Дан массив чисел x1,x2,...,x22. переписать в другой массив из данного все элементы, расположенные...

Найти номер первого отрицательного элемента последнего столбца матрицы
Найти номер первого отрицательного элемента последнего столбца.

Найти номер последнего положительного элемента в массиве
Дана матрица целых чисел. Требуется сформировать массив, содержащий номера строк матрицы, имеющих...

Найти номер последнего отрицательного элемента в массиве
Найти номер последнего отрицательного элемента в массиве. Формат входных данных В первой строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.