Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //могут понадобиться библиотеки <random>,<time.h>, <stdlib.h>,<stdio.h>, если пишешь в дженксе, или <iostream>, если в плюсах в вижуалке
- int random(int N) // функция которая позволяет создавать числа в конретном диапозоне
- {
- return rand() % N;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- srand(time(0)); //функция которая позволяет генирировать каждый раз новые числа. time(0) возращает текущее время
- int array[10]; // наш массив
- int max_1 = INT16_MIN; // наши будущие максимальные числа, которым задаем самое минимальное значение прописанные в С как константы
- int max_2 = INT16_MIN;
- int pos_max_1; // позиции максимальных чисел
- int pos_max_2;
- printf("Исходный массив "); //пишем слова |_|
- for (int i = 0; i < 10; i++) // тут мы сразу будем генирировать, находить максимальные, а также выводить. Далается это с цельую, чтобы не обходить весь массив трижды. Так как мы каждый раз идем слева направо и не производим с числами действий мы можем себе такое позволить.
- {
- array[i] = random(21) - 10; // генириум. мы указали диапозон от 0 до 20 (обе границы включительно) и потом вычитаем, так как хотим от -10 до 10. rand() не может генировать отрицатльные числа, так как основана на возведении в квадрат
- if (max_1 < array[i]) // смотрим больше ли наше число. в первом случае всегда заходит
- {
- max_1 = array[i];
- pos_max_1 = i;
- }
- else if (max_2 < array[i] && array[i] != max_1) // проверяем не совпала ли наше число с предудыщим максимумом( чтобы не было двух 10(в теории по его задании, две 10 правильно, но он херово дал Т3))
- {
- max_2 = array[i];
- pos_max_2 = i;
- }
- printf("%d ", array[i]); // печатаем наше получившее число, после чего вновь генерируем новое в начале цикла
- }
- printf("\nМаксимальные: a[%d] = %d, a[%d] = %d", pos_max_1, max_1, pos_max_2, max_2); // каждый элемент будет постепенно входить в %d
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement