Максимальный отрицательный элемент массива
Просмотров 7.5к. Обновлено 15 октября 2021
В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве.
Задача поиска максимального отрицательного элемента массива не такая простая, как может показаться на первый взгляд.
Введем переменную (условно назовем ее A) для хранения индекса максимального отрицательного элемента и присвоим ей значение, выходящее за пределы возможных индексов. Например, если индексация элементов начинается с нуля, то данной переменной можно присвоить значение -1 (можно присвоить 0, если индексация начинается с 1). Если в массиве вообще не будет найдено отрицательных элементов, то ее такое значение будет «сигнализировать» об этом.
Перебираем массив в цикле. Если очередной элемент меньше нуля и значение переменной A равно -1, то значит, это первый встретившийся отрицательный элемент. Запоминаем его индекс в переменной A. Если же очередной элемент отрицательный, но A уже не содержит -1, то сравниваем значение текущего элемента с тем, которое содержится по индексу, хранимому в A. Если текущий элемент больше, то записываем его индекс в A.
После завершения цикла проверяем, не равно ли значение A -1. Если не равно, то выводим индекс максимального отрицательного элемента массива и его значение.
Pascal
максимальное отрицательное число паскаль
const N = 15;
var
arr: array[1..N] of integer;
i: byte;
index: byte;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100) - 50;
write(arr[i],' ');
end;
writeln;index := 0;
for i:=1 to N do begin
if (arr[i] < 0) and (index = 0) then
index := i
else
if (arr[i] < 0) and (arr[i] > arr[index]) then
index := i;
end;
if index <> 0 then
writeln(index,': ',arr[index]);
end.
-36 0 -35 -15 2 -43 -18 -4 -6 -24 -30 -28 47 18 41
8: -4
Язык Си
#include < stdio.h>
#define N 15main() {
int arr[N],index, i;
srand(time(NULL));
for (i=0; i< N; i++) {
arr[i] = rand() % 100 - 50;
printf("%d ", arr[i]);
}
printf("n");index = -1;
for (i=0; i< N; i++) {
if (arr[i] < 0 && index == -1)
index = i;
else
if (arr[i] < 0 && arr[i] > arr[index])
index = i;
}
printf("%d-й = %dn",index+1,arr[index]);
}
33 -21 24 -36 42 -11 -6 42 32 36 -1 43 -8 24 40
11-й = -1
Python
максимальное отрицательное число python (питон)
from random import random
N = 15
arr = []
for i in range(N):
arr.append(int(random() * 100) - 50)
print(arr)i = 0
index = -1
while i < N:
if arr[i] < 0 and index == -1:
index = i
elif arr[i] < 0 and arr[i] > arr[index]:
index = i
i += 1print(index+1,':', arr[index])
[-30, 42, -5, 31, -37, 25, -50, -44, 17, -34, -33, -21, 48, 45, 15]
3 : -5
КуМир
алг чет_нечет
нач
цел N = 15
целтаб arr[1:N]
цел i, indexнц для i от 1 до N
arr[i] := irnd(100) - 50
вывод arr[i], " "
кц
вывод нсindex := 0
нц для i от 1 до N
если arr[i] < 0 и index = 0 то
index := i
иначе
если arr[i] < 0 и arr[i] > arr[index] то
index := i
все
все
кц
вывод index, ": ", arr[index], нс
кон
19 32 36 -15 -22 3 48 -42 3 -2 -6 -48 33 27 6
10: -2
Basic-256
N = 15
dim arr(N)
for i=0 to N-1
arr[i] = int(rand() * 100) - 50
print arr[i] + " ";
next iindex = -1
for i=0 to N-1
if arr[i] < 0 then
if index = -1 then
index = i
else
if arr[i] > arr[index] then
index = i
endif
endif
endif
next iprint index+1;
print ": ";
print arr[index]
17 31 -21 24 -8 29 7 42 13 -15 -30 30 33 32 -7
15: -7
Проверка отрицательности элемента вынесена в отдельную ветку if. Иначе возникает ошибка, когда первый элемент неотрицательный, т.к. в Basic-256 при логическом операторе and происходит проверка второго условия даже если первое ложное. И получается, что переменная index отрицательна, что вызывает ошибку выхода за границы массива.
Вот простое и элегантное решение. На С, но это несущественно, по большому счёту весь его смысл в ифе. Должен же ТС хоть что-то сделать сам? Пусть хоть на шарп переведёт. Подозреваю, что для него даже это не тривиально.
int array[10] = {
0, -1, 2, -3, 4, -5, -6, -7, 8, 9
};
int max_negative(void)
{
int max = 0;
for( int i = 0; i < 10; ++i ) {
if( array[i] < 0 && ( max == 0 || array[i] > max ) ) {
max = array[i];
}
}
return max;
}
int main(void)
{
int n = max_negative();
if( n == 0 ) {
puts("No negative numbers.");
} else {
printf("max negative = %dn", n);
}
return 0;
}
|
3 / 3 / 0 Регистрация: 13.12.2016 Сообщений: 99 |
|||||
|
1 |
|||||
Найти максимальный отрицательный элемент массива27.10.2017, 21:17. Показов 18836. Ответов 2
5. Дан одномерный массив (вектор), состоящий из N целочисленных элементов. 5.1. Ввести массив с клавиатуры. 5.2. Найти максимальный отрицательный элемент.
5.4. Вывести положительные элементы на экран.
0 |
|
zss Модератор 13111 / 10381 / 6209 Регистрация: 18.12.2011 Сообщений: 27,767 |
||||
|
27.10.2017, 22:09 |
2 |
|||
|
РешениеОбразцы (шаблоны) программ для типовых задач
0 |
|
Геомеханик 837 / 640 / 940 Регистрация: 26.06.2015 Сообщений: 1,409 |
||||
|
28.10.2017, 07:11 |
3 |
|||
0 |
Uses crt;
Var
x: Array[1..100] of Integer;
a,n,max: Integer;
BEGIN
Clrscr;
Randomize;
Writeln('Введите кол-во элементов: '); Readln(n);
Writeln('Исходный массив:');
For a:=1 to n do
begin
x[a]:=Random(101)-50;
Write(x[a],' ');
end;
max:=-51;
For a:=1 to n do
If x[a]<0 Then
begin
If x[a]>max Then
max:=x[a];
end;
Writeln;
Writeln('Наибольший отриц. элемент: ',max);
Readln
END.
Оглавление:
- 1 Задача — Максимальный отрицательный элемент массива
— программирование на Pascal, Си, Кумир, Basic-256, Python- 1.1 Pascal
- 1.2 Язык Си
- 1.3 Python
- 1.4 КуМир
- 1.5 Basic-256
Задача — Максимальный отрицательный элемент массива
— программирование на Pascal, Си, Кумир, Basic-256, Python
В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве.
Задача поиска максимального отрицательного элемента массива не такая простая, как может показаться на первый взгляд.
Введем переменную (условно назовем ее A) для хранения индекса максимального отрицательного элемента и присвоим ей значение, выходящее за пределы возможных индексов. Например, если индексация элементов начинается с нуля, то данной переменной можно присвоить значение -1 (можно присвоить 0, если индексация начинается с 1). Если в массиве вообще не будет найдено отрицательных элементов, то ее такое значение будет «сигнализировать» об этом.
Перебираем массив в цикле. Если очередной элемент меньше нуля и значение переменной A равно -1, то значит, это первый встретившийся отрицательный элемент. Запоминаем его индекс в переменной A. Если же очередной элемент отрицательный, но A уже не содержит -1, то сравниваем значение текущего элемента с тем, которое содержится по индексу, хранимому в A. Если текущий элемент больше, то записываем его индекс в A.
После завершения цикла проверяем, не равно ли значение A -1. Если не равно, то выводим индекс максимального отрицательного элемента массива и его значение.
Pascal
const N = 15;
var
arr: array[1..N] of integer;
i: byte;
index: byte;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100) — 50;
write(arr[i],’ ‘);
end;
writeln;
index := 0;
for i:=1 to N do begin
if (arr[i] < 0) and (index = 0) then
index := i
else
if (arr[i] < 0) and (arr[i] > arr[index]) then
index := i;
end;
if index <> 0 then
writeln(index,’: ‘,arr[index]);
end. -36 0 -35 -15 2 -43 -18 -4 -6 -24 -30 -28 47 18 41
8: -4
Язык Си
#include <stdio.h>
#define N 15
main() {
int arr[N],index, i;
srand(time(NULL));
for (i=0; i<N; i++) {
arr[i] = rand() % 100 — 50;
printf(«%d «, arr[i]);
}
printf(«n»);
index = -1;
for (i=0; i<N; i++) {
if (arr[i] < 0 && index == -1)
index = i;
else
if (arr[i] < 0 && arr[i] > arr[index])
index = i;
}
printf(«%d-й = %dn»,index+1,arr[index]);
} 33 -21 24 -36 42 -11 -6 42 32 36 -1 43 -8 24 40
11-й = -1
Python
from random import random
N = 15
arr = []
for i in range(N):
arr.append(int(random() * 100) — 50)
print(arr)
i = 0
index = -1
while i < N:
if arr[i] < 0 and index == -1:
index = i
elif arr[i] < 0 and arr[i] > arr[index]:
index = i
i += 1
print(index+1,’:’, arr[index]) [-30, 42, -5, 31, -37, 25, -50, -44, 17, -34, -33, -21, 48, 45, 15]
3 : -5
КуМир
алг чет_нечет
нач
цел N = 15
целтаб arr[1:N]
цел i, index
нц для i от 1 до N
arr[i] := irnd(100) — 50
вывод arr[i], » »
кц
вывод нс
index := 0
нц для i от 1 до N
если arr[i] < 0 и index = 0 то
index := i
иначе
если arr[i] < 0 и arr[i] > arr[index] то
index := i
все
все
кц
вывод index, «: «, arr[index], нс
кон 19 32 36 -15 -22 3 48 -42 3 -2 -6 -48 33 27 6
10: -2
Basic-256
N = 15
dim arr(N)
for i=0 to N-1
arr[i] = int(rand() * 100) — 50
print arr[i] + » «;
next i
print
index = -1
for i=0 to N-1
if arr[i] < 0 then
if index = -1 then
index = i
else
if arr[i] > arr[index] then
index = i
endif
endif
endif
next i
print index+1;
print «: «;
print arr[index] 17 31 -21 24 -8 29 7 42 13 -15 -30 30 33 32 -7
15: -7
Проверка отрицательности элемента вынесена в отдельную ветку if. Иначе возникает ошибка, когда первый элемент неотрицательный, т.к. в Basic-256 при логическом операторе and происходит проверка второго условия даже если первое ложное. И получается, что переменная index отрицательна, что вызывает ошибку выхода за границы массива.
Did you find apk for android? You can find new Free Android Games and apps.


Сообщение было отмечено Nikita123123 как решение