IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Ракировка значений, Замена элемента массива.
midss
сообщение 4.04.2011 19:21
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Дано 10 чисел введенных с клавиатуры, найти мин. элемент и заменить его на 0 в массиве.
Делал так:

program bat12;
uses crt;
var A: array [1..10] of integer;
x,y,z,min,n,i: integer;
begin
for i:=1 to 10 do begin
write('A[',i,']=');
read(A[i]);
end;
writeln('МАССИВ:');
for i:=1 to 10 do begin
writeln(a[i]:5);
end;
min:=a[1];
for i:=2 to n do
if A[i]<min then min:=A[i];
writeln('МИНИМАЛЬНЫЙ ЭЛЕМЕНТ=',min);
{write('Заменяем мин. элемент на 0');}
if A[i]<min then begin
min:=A[i];
x:=i;
end;
A[x]:=0;
write('Измененный массив=');
for i:=1 to 10 do begin
writeln(a[i]);
end;
end.



Но не могу заменить min на 0... помогите пожалуйста!
Единственное помню как менять просто элементы, здесь не могу никак додуматься!

ПРИМЕР МАССИВ:
5 4 6 (6 меняем на 5, а 5 на 6)
n:=A[3];
A[3]:=A[1];
A[1]:=n;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 4.04.2011 19:29
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Можно так:
Тут где ты ищешь мин. элемент:
     for i:=2 to n do
if A[i]<min then
begin
min:=A[i];
k:=i; //запоминаем номер мин. элемента в векторе
end;
a[k]:=0;



Смотри что у тебя:

if A[i]<min then begin
min:=A[i];
x:=i;
end;


так как ты уже Min вычислил, то у тебя попросту для каждого "i" a[i]<min=false, т.е что после then не будет работать, потому что нет элемента меньше чем Min, если делать по твоему то if a[i]=min then....

А вообще можно сразу за один цикл всё сделать:
   
program bat12;
Uses Crt;
const n=10;
var A: array [1..n] of integer;
k,i:1..n;
min:integer;
begin ClrScr;
for i:=1 to 10 do begin //заполняем массив
write('A[',i,']=');
readln(A[i]);
if i=1 then min:=a[1]
else //сразу при заполнении вычисляем мин. элемент и его позицию
if min>a[i] then begin
min:=a[i];
k:=i;
end; //if
end; //For
a[k]:=0;
writeln('Минимальный элемент ',min);
writeln('Измененный массив: ');
for i:=1 to n do
write(a[i],' ');
readln;
end.


Сообщение отредактировано: DarkWishmaster - 4.04.2011 19:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
midss
сообщение 4.04.2011 19:47
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Цитата(DarkWishmaster @ 4.04.2011 19:29) *

А вообще можно сразу за один цикл всё сделать:
   
program bat12;
Uses Crt;
const n=10;
var A: array [1..n] of integer;
k,i:1..n;
min:integer;
begin ClrScr;
for i:=1 to 10 do begin //заполняем массив
write('A[',i,']=');
readln(A[i]);
if i=1 then min:=a[1]
else //сразу при заполнении вычисляем мин. элемент и его позицию
if min>a[i] then begin
min:=a[i];
k:=i;
end; //if
end; //For
a[k]:=0;
writeln('Минимальный элемент ',min);
writeln('Измененный массив: ');
for i:=1 to n do
write(a[i],' ');
readln;
end.




Спасибо разобрался, только вот:
begin ClrScr; что значит?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.04.2011 19:50
Сообщение #4


Гость






Цитата
А вообще можно сразу за один цикл всё сделать:
А вообще, можно вычислять только позицию, сам мин. элемент вычислять не нужно:
min := 1;
for i:=1 to 10 do
begin // заполняем массив
write('A[',i,']='); readln(A[i]);
if a[min]>a[ i ] then min:=i;
end;
, а потом a[min] := 0...
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 4.04.2011 19:53
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата(volvo @ 4.04.2011 19:50) *

А вообще, можно вычислять только позицию, сам мин. элемент вычислять не нужно:
min := 1;
for i:=1 to 10 do
begin // заполняем массив
write('A[',i,']='); readln(A[i]);
if a[min]>a[ i ] then min:=i;
end;
, а потом a[min] := 0...
yes2.gif

Цитата

Спасибо разобрался, только вот:
begin ClrScr; что значит?

ClrScr-Clear Screen, очищает экран, работает только если исп. Uses Crt;

Сообщение отредактировано: DarkWishmaster - 4.04.2011 20:02
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 17:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"