232 / 182 / 104
Регистрация: 19.03.2010
Сообщений: 949
1

Заменить первый отрицательный элемент на максимальное значение элемента массива

08.03.2011, 22:55. Показов 1352. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго всем времени суток. Подскажите пожалуйста. Дано условие задачи: заменить первый отрицательный элемент на максимальное значение элемента массива A(N). Использовать модули.
Сделал программу с использованием модуля, но она почему-то выдает одни нули. Вот тела программ:
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
unit ok;
interface
const x=10;
type matrix=array[1..x] of integer;
procedure vvod(var a:matrix);
procedure vivod(a:matrix);
procedure vich(a:matrix);
implementation
procedure vvod(var a:matrix);
var i,n:integer;
begin
for i:=1 to n do begin
a[i]:=random(20)-10;
end;
end;
procedure vivod(a:matrix);
var i,n:integer;
begin
for i:=1 to n do begin
write(a[i]:3);
end;
end;
procedure vich(a:matrix);
var i,n,max:integer;
begin
for i:=1 to n do       {Nahojdenie i zamena otric. elementa samim starwim elementom}
begin
if a[i]>max then max:=a[i];
end;
for i:=1 to n do
begin
if a[i]<0 then begin a[i]:=max; break;
 end;
 end;
writeln;
writeln('Polychennyi massiv: ');
for i:=1 to n do
write(a[i]:3);    {Vivod polychennogo massiva}
end;
end.
2.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses crt,ok;
var a:matrix;
n:integer;
begin clrscr;
textbackground(white);
textcolor(black);
randomize;
write('Vvedite razmer massiva: ');
readln(n);
vvod (a);
vivod (a);
vich (a);
readln;
end.
Подскажите, как исправить ошибку, пожалуйста. 4 часа сижу над задачкой — все-равно не получается.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2011, 22:55
Ответы с готовыми решениями:

Заменить первый отрицательный элемент на максимальное значение элемента массива A(N)
Заменить первый отрицательный элемент на максимальное значение элемента массива A(N). З.Ы....

Заменить первый отрицательный элемент на максимальное значение элемента массива
Заменить первый отрицательный элемент на максимальное значение элемента массива A(N). В массиве...

Заменить первый отрицательный элемент на максимальное значение элемента массива
Заменить первый отрицательный элемент на максимальное значение элемента массива A(N).Желательно с...

Заменить первый отрицательный элемент на максимальное значение элемента массива A (N)
Заменить первый отрицательный элемент на максимальное значение элемента массива A(N). сделал...

8
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
08.03.2011, 23:17 2
16 : procedure vivod( var a:matrix);
23 : procedure vich( var a:matrix);

В процедурах принято писать слово VAR перед переменной, которой будет присвоено значение ( или массив ) в процессе. Может выразился не правильно, но мне так понимается лучше=)
1
232 / 182 / 104
Регистрация: 19.03.2010
Сообщений: 949
08.03.2011, 23:42  [ТС] 3
Там получаются числа, но проблема с нулями остается актуальна. Их меньше становится, но все-равно они 2-3 строчки занимают.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.03.2011, 09:22 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Размер массива, раз он не константа и не глобальная переменная, должен быть параметром процедур.
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
unit ok;
interface
const x=100;
type matrix=array[1..x] of integer;
procedure vvod(var a:matrix;n:byte);
procedure vivod(var a:matrix;n:byte);
procedure vich(var a:matrix;n:byte);
implementation
procedure vvod(var a:matrix;n:byte);
var i:integer;
begin
for i:=1 to n do
a[i]:=random(20)-10;
end;
procedure vivod(var a:matrix;n:byte);
var i:integer;
begin
for i:=1 to n do
write(a[i]:4);
writeln;
writeln;
end;
 
procedure vich(var a:matrix;n:byte);
var i,max:integer;
begin
max:=a[1];
for i:=1 to n do       {Nahojdenie i zamena otric. elementa samim starwim elementom}
if a[i]>max then max:=a[i];
for i:=1 to n do
if a[i]<0 then a[i]:=max;
writeln;
writeln('Polychennyi massiv: ');
vivod(a,n);    {Vivod polychennogo massiva}
end;
end.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses crt,ok;
var a:matrix;
    n:integer;
begin
textbackground(white);
textcolor(black);
clrscr;
randomize;
write('Vvedite razmer massiva: ');
readln(n);
vvod (a,n);
vivod (a,n);
vich (a,n);
readln;
end.
1
232 / 182 / 104
Регистрация: 19.03.2010
Сообщений: 949
09.03.2011, 09:46  [ТС] 5
А прокомментируйте пожалуйста 27 строчку.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.03.2011, 09:47 6
Сначала максимальный элемент первый.
1
232 / 182 / 104
Регистрация: 19.03.2010
Сообщений: 949
09.03.2011, 09:51  [ТС] 7
Просто в условии задачи написано, что должен заменяться первый отрицательный элемент. А все остальные, соответственно, остаются на месте.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.03.2011, 10:34 8
SunEclipse, Извини, я твое условие не видел, так что .....

Добавлено через 41 секунду
Да и не в этом суть вопроса была.
0
232 / 182 / 104
Регистрация: 19.03.2010
Сообщений: 949
09.03.2011, 11:15  [ТС] 9
Puporev, спасибо, что помогли Дальше сам постараюсь переделать.
0
09.03.2011, 11:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2011, 11:15
Помогаю со студенческими работами здесь

Бинарный поиск. Заменить первый отрицательный элемент на максимальное значение элемента массива
1).Заменить первый отрицательный элемент на максимальное значение элемента массива A(N).

Заменить первый положительный элемент на минимальное значение элемента массива
Заменить первый положительный элемент на минимальное значение элемента массива A(N).

Заменить первый положительный элемент на минимальное значение элемента массива A(N)
Заменить первый положительный элемент на минимальное значение элемента массива A(N).

Заменить первый положительный элемент на минимальное значение элемента массива A(N)
Заменить первый положительный элемент на минимальное значение элемента массива A(N)

Заменить первый отрицательный элемент массива на первый положительный
Заменить первый отрицательный элемент массива на первый положительный. Никак не могу разобраться....

Бинарный поиск. Заменить первый положительный элемент на минимальное значение элемента массива.
Заменить первый положительный элемент на минимальное значение элемента массива A(N)


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru