Ребят, помогите пожалуйста с прогой, не знаю в чем проблема, вроде написано всё верно, а вылетает. Програмка маленькая
Uses Crt ;
Var
A: Array[1..20] of Integer;
I,min,n: Integer;
Begin
ClrScr;
Writeln('Лабораторная работа 1');
Writeln('Найти номер и значение минимального положительного элемента массива.');
Writeln('Рассматривать элементы массива, имеющие четные значения.');
Writeln('Количество элементов массива - целое число <=20');
Writeln('Введите n');
Readln (N);
If (N>=1) and ( N<=20) then
begin
Writeln('Значения элементов массива - целые числа');
For I := 1 to N do
Begin
Write('A[',I,']=');
Readln(A[I]);
End;
Writeln('В исходном массиве ', N, ' элементов');
Writeln('Исходный массив');
For I:=1 to N do
Write(A[I]:4);
Writeln;
i:=2;
min:=a[2];
while a[i]<=n do
If (a[i]<=min) and (a[i]>0) Then
begin
A[i]:=min;
i:=i+2;
End;
writeln('Минимальный положительный элемент равен ',min);
readln;
end
Else
Writeln('Ошибка ! Число элементов массива от 1 до 20');
readln;
End.
while a[i]<=n do
If (a[i]<=min) and (a[i]>0) Then
begin
A[i]:=min;
i:=i+2;
End;
Должно быть так:
while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
A[i]:=min;
i:=i+2;
End;
зацикливается или выходит за границы массива?
while a[i]<=n do {почему a[i], а не i?}
If (a[i]<=min) and (a[i]>0) Then
begin
A[i]:=min;
i:=i+2;{а если a[i] не меньше минимума, на след. элемент переходить не надо?}
End;
while a[i]<=n do {почему a[i], а не i?}
а во втором месте исправил?
тебе же Bokul написал, как должно быть
Bokul тоже накосячил чуть-чуть
while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
min:=i;
i:=i+2;
End;
writeln('Минимальный положительный элемент равен ',a[min]);
writeln('Индекс равен ',min);
while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
min:=i;
i:=i+2;
End;
writeln('Минимальный положительный элемент равен ',a[min]);
writeln('Индекс равен ',min);
Uses Crt ;
Var
A: Array[1..20] of Integer;
I,min,n: Integer;
Begin
ClrScr;
Writeln('Лабораторная работа 1');
Writeln('Найти номер и значение минимального положительного элемента массива.');
Writeln('Рассматривать элементы массива, имеющие четные значения.');
Writeln('Количество элементов массива - целое число <=20');
Writeln('Введите n');
Readln (N);
If (N>=1) and ( N<=20) then
begin
Writeln('Значения элементов массива - целые числа');
For I := 1 to N do Begin
Write('A[',I,']=');
Readln(A[I]);
End;
Writeln('В исходном массиве ', N, ' элементов');
Writeln('Исходный массив');
For I:=1 to N do
Write(A[I]:4);
Writeln;
i:=2;
min:=0;
while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
min:=A[i];
i:=i+2;
End;
if min>0 then
writeln('Минимальный положительный элемент равен ',min)
else
writeln('Нету положительных элементов, стоящих на четных местах');
readln;
end
Else
Writeln('Ошибка ! Число элементов массива от 1 до 20');
readln;
End.
min:=2;
while i<=n do begin
If (a[i]<=a[min]) and (a[i]>0) Then
min:=i;
i:=i+2;
End;
Malice, опять косяк, смотри мою прогу..
все понакосячили )
давайте, что ли, определимся: min - это индекс эл-та или он сам? а то в этом дружно путаемся.
fr33m, я ничего не переделывала. просто указала на места с ошибками...
В авторской версии - он сам. Это Malice обозвал его индексом.
fr33m, посмотри еще раз - я вносил изменения ..
min:=0;
ind:=0;
while i<=n do begin
If (a[i]<min) and (a[i]>0) Then begin
ind:=i;
min:=A[i];
end;
i:=i+2;
End;
просто если будет хоть один отрицательный четный элемент, то в этом случает переменная min примет значение 0 . но ведь это неправильно
Это ты видел?
if min>0 then
writeln('Минимальный положительный элемент равен ',min)
else
writeln('Нету положительных элементов, стоящих на четных местах');
readln;
Uses Crt ;
Var
A: Array[1..20] of Integer;
I,n,ind: Integer;
Begin
ClrScr;
Writeln('Лабораторная работа 1');
Writeln('Найти номер и значение минимального положительного элемента массива.');
Writeln('Рассматривать элементы массива, имеющие четные значения.');
Writeln('Количество элементов массива - целое число <=20');
Writeln('Введите n');
Readln (N);
If (N>=1) and ( N<=20) then
begin
Writeln('Значения элементов массива - целые числа');
For I := 1 to N do Begin
Write('A[',I,']=');
Readln(A[I]);
End;
Writeln('В исходном массиве ', N, ' элементов');
Writeln('Исходный массив');
For I:=1 to N do
Write(A[I]:4);
Writeln;
i:=2;
ind:=0;
while i<=n do begin
If (a[i]>0) Then
if ind=0 then
ind:=i
else
if a[i]<a[ind] then
ind:=i;
i:=i+2;
end;
if ind>0 then
writeln('Минимальный положительный элемент равен ',a[ind], ' Index ',ind)
else
writeln('Нету положительных элементов, стоящих на четных местах');
readln;
end
Else
Writeln('Ошибка ! Число элементов массива от 1 до 20');
readln;
End.
я конечно понимаю что всех за%%ал на этом форуме но всё равно не получается
если брать самый конечный вариант Bokul , то получается,что вводя например 4 элемента таких : 1 -7 5 8
прога напишет, что нет таких положит . минимальных элементов. но они то есть !
это потому что самый минимальный - отрицательный. а надо искать минимальный среди положительных? то есть отриц. не анализировать вообще?