Другие языки программирования и технологии

Пусть задан целочисленный массив из 30 элементов.

Пусть задан целочисленный массив из 30 элементов, в котором могут быть положительные, отрицательные и нулевые числа. Опишите на русском языке или на одном из языков программирования алгоритм поиска максимального из отрицательных по величине элемента в этом массиве. Если такого элемента не существует, то вывести число 0. п. с. желательно полное решение.
Мои пять копеек (язык C):

$ cat arr30.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i, a[30], maxneg = 0;
srand(time(NULL));
for (i = 0; i < 30; i++) {
  a[i] = rand() % 20 - 10;
  printf("%d%s", a[i], (i == 29) ? "\n" : " ");
  if (a[i] < 0 && !maxneg) maxneg = a[i];
  if (a[i] < 0 && a[i] > maxneg) maxneg = a[i];
}
printf("%d\n", maxneg);
return 0;
}

Сборка:

$ clang arr30.c -o arr30

Проверка:

$ ./arr30
-9 -9 8 1 -1 2 1 6 -2 -1 -6 -4 -1 4 -9 8 4 9 3 -2 6 -1 7 6 -4 9 -9 9 -8 -2
-1
$ ./arr30
-3 4 9 8 -1 6 -4 0 5 0 3 -2 1 6 0 8 6 -9 -3 5 9 2 8 -1 -10 -1 -10 -7 4 -5
-1
$ ./arr30
0 9 0 6 -10 -10 0 -3 -8 -4 0 -7 -3 -10 1 6 1 -9 -1 -10 7 -7 -8 -4 -10 3 -7 -10 -2 4
-1
Эльдар Абдрахманов
Эльдар Абдрахманов
91 874
Лучший ответ
мкс=0
ЦИКЛ для i от 1 до 30
..если (а (i)>=0) продолжить цикл
....ЕСЛИ (мкс=0)
....ТО мкс=a(i)
...продолжить цикл
...всё_если
...ЕСЛИ (мкс<a(i)) мкс=a(i)
всё_цикл
вывод мкс
#include <iostream>
#include <array>
#include <algorithm>
#include <random>
#include <iomanip>
using namespace std;
typedef array<short, 30> array_30;
typedef array_30& ref_array_30;
short randomize(short = SHRT_MIN, short = SHRT_MAX);
void fill_array(ref_array_30);
void print(ref_array_30, streamsize = 5);
int main() {
setlocale(LC_CTYPE, "Russian");
array_30 arr = { 0 };
fill_array(arr);
print(arr);
auto min = *min_element(arr.begin(), arr.end());
if (min < 0) cout << "\n\t Min: " << min << ".\n";
else cout << "Oops!\n";
cin.get();
}
void print(ref_array_30 arr, streamsize w) {
for (auto i : arr) cout << setw(w) << i;
cout << endl;
}
void fill_array(ref_array_30 arr) {
for (auto &i : arr) i = randomize();
}
short randomize(short a, short b) {
if (a > b) swap(a, b);
uniform_int_distribution<short> rand(a, b);
random_device rnd;
return rand(rnd);
}
Oleg Kolomeec в массиве {-5,-2,-3,0,4,5} - ответ будет -5, а нужен -2 (максимальный отрицательный)
for(i=elem=0;i < 30;i++) if (array[i]<0 && (array[i]>elem || elem==0)) elem=array[i];
Oleq Nikolayev
Oleq Nikolayev
96 545
переменной - счетчику назначаем значение минимально возможное для данного типа переменных
Цикл от 1 до 30
Условие если элемент отрицательный и он больше счетчика то счетчику присваиваем этот элемент.
Конец цикла.
Если счетчик равен минимально возможное для данного типа то выводим "0" иначе содержимое счетчика.
Easy Dimon
Easy Dimon
99 939

Похожие вопросы