Другие языки программирования и технологии
Пусть задан целочисленный массив из 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
$ 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
мкс=0
ЦИКЛ для i от 1 до 30
..если (а (i)>=0) продолжить цикл
....ЕСЛИ (мкс=0)
....ТО мкс=a(i)
...продолжить цикл
...всё_если
...ЕСЛИ (мкс<a(i)) мкс=a(i)
всё_цикл
вывод мкс
ЦИКЛ для 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);
}
#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];
переменной - счетчику назначаем значение минимально возможное для данного типа переменных
Цикл от 1 до 30
Условие если элемент отрицательный и он больше счетчика то счетчику присваиваем этот элемент.
Конец цикла.
Если счетчик равен минимально возможное для данного типа то выводим "0" иначе содержимое счетчика.
Цикл от 1 до 30
Условие если элемент отрицательный и он больше счетчика то счетчику присваиваем этот элемент.
Конец цикла.
Если счетчик равен минимально возможное для данного типа то выводим "0" иначе содержимое счетчика.
Похожие вопросы
- Задан массив размером 30 элементов. Подсчитать число и сумму положительных элементов в нем. В Паскале. через рандом чисел !
- Дан одномерный целочисленный массив a, состоящий из n элементов.
- СРОЧНО ПАСКАЛЬ задан одномерный массив с (1..10), дать ответ: каких элементов больше: положительных или отрицательных
- ПОМОГИТЕ, ДОБРЫЕ ЛЮДИ!!! Язык С++, записать в массив d нечетные элементы массива А которых нет в В - НЕ ПОЛУЧАЕТСЯ
- Заполнить случайным образом одномерный массив из n элементов и обменять местами последний и максимальный (в паскале)
- Написать в С++. Задан одномерный массив А из 10 чисел.
- Задан числовой массив A[1:m, 1:n]. Составить программу...
- Дан прямоугольный целочисленный массив размером N*N. Определить является ли данный массив магическим квадратом, т.е. сум
- Паскаль, одномерн массив, вычислить сумму элементов массива, расположенных после последнего элемента, равного нулю. Спасибо)
- pascal одномерные массивы. дан массив А(30).