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

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

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

 
 Ответить  Открыть новую тему 
> Ракировка значений, Замена элемента массива.
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 17.04.2025 9:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name