Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Массив Pascal (http://www.tehnari.ru/f41/t44956/)

Юрий Бадюн 12.01.2011 19:22

Массив Pascal
 
Дан массив X(20). Заменить максимальный элемент (или все, если их несколько) на 0.
И блок схему если кто знает, помогите пожалуйста=)))

shrek=) 13.01.2011 15:11

Так как вы не указали: тип массива, способ его задания, я предлагаю вам такой вариант:
Код:

const
n=20;
var
x:array [1..n] of integer;
i,max,m:integer;
begin
randomize;
max:=-1000;
for i:=1 to n do begin
x[i]:=random(100);
write (x[i],' ');
if x[i]>max then
begin
 max:=x[i];
  m:=i;
end;
end;
x[m]:=0;
writeln;
for i:=1 to  n do
write (x[i],' ');
readln
end.


Юрий Бадюн 13.01.2011 15:17

Спасибо) Подскажи пожалуйста как блок схему построить)

FAIR 13.01.2011 15:19

примерная блок-схема
Замечание:
У нас ссылки на файлообменники не приветствуются. Файл .doc можно прикрепить обычным образом, либо, если он слишком большой, упаковав предварительно в ZIP-архив.
Модератор
.


Vladimir_S 13.01.2011 15:24

Shrek, к сожалению, Ваша программа не отрабатывает ситуации типа "или все, если их несколько". Поэтому я бы предложил так:
вместо

Код:

begin
 max:=x[i];
  m:=i;
end;
end;
x[m]:=0;

сделать так:
Код:

max:=x[i];
end;
for i:=1 to n do
 if x[i]=max then x[i]:=0;


Юрий Бадюн 13.01.2011 16:20

А как на Бэйсике это будет выглядеть???

shrek=) 13.01.2011 16:36

Уважаемый Юрий на этом форуме халява не очень приветствуется, попробуйте сами, а вас если, что не верно подредактируют.

Юрий Бадюн 13.01.2011 18:45

Randomize timer
n=20
Dim x(n)
n,i As integer
For i=1 to 20
Input X(n)
Next i
Max=-1000
For i=1 to 20
next
Print "max. element=;n
If x(i)>max then
max=x(n)
end
for i=1 to n
if x(i)=max then x(i)=0
print
for i=1 to n
Print x(i)
next i
end

Что не так? подскажите пжлста???

AlexZir 13.01.2011 19:14

Цитата:

Сообщение от Юрий Бадюн (Сообщение 445185)
Randomize timer
n=20
Dim x(n)
n,i As integer
For i=1 to 20
Input X(n)
Next i
Max=-1000
For i=1 to 20
next
Print "max. element=";n
If x(i)>max then
max=x(n)
end
for i=1 to n
if x(i)=max then x(i)=0
print
for i=1 to n
Print x(i)
next i
end

1) зачем вы инициализируете генератор псевдослучайных значений, если массив заполняете вручную? И, кстати, зачем вы 20 раз вводите значение в 20-ый элемент массива? К чему было инициализировать переменную n, если все попытки её использования у вас ошибочны?
2) зачем вам пустой цикл на 20 итераций?
3) при использовании оператора Print текст нужно заключать в кавычки с обоих сторон.
4) ваша программа заканчивает выполняться после выделенного красным оператора end :)
5) какой смысл спрашивать о поиске максимального элемента в массиве и замене его значения на 0, если в программе вы выводите в качестве его значения число 20?
6) В первом ветвлении вы в любом случае в качестве максимального элемента принимаете последний (20-ый) элемент массива :))
7) цикл, в котором вы производите замену максимального значения на 0, у вас без next
8) последний цикл вообще можно не писать, а реализовать вывод значения текущего элемента массива в предыдущем цикле сразу после ветвления с заменой значений.
Подытожим:
Вашу программу легче написать заново, чем исправить!

AlexZir 13.01.2011 19:41

Код:

n=20
Dim x(n)
For i=1 to n
Input x(i)
Next i
Max=-1000
For i=1 to n
If x(i)>max then max=x(i)
next i
for i=1 to n
if x(i)=max then x(i)=0
print x(i)
next i
end



Часовой пояс GMT +4, время: 22:49.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.