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

программирование в Си

тема Функции
1.Поменять местами первый максимальный элемент массива А (60) и последний минимальный элемент массива В (85). Поиск максимального и минимального элементов проводить в одной подпрограмме.
2.Задан массив, состоящий из n неотрицательных элементов. Найти в нем индекс элемента, для которого сумма элементов, стоящих до него, наименее отличается от суммы элементов, стоящих после него.
тема строки
1.Дана строка символов до точки. Оставить в ней только слова, начинающиеся на буквы «A», «D», «K», «P».
2.Дана символьная строка. Выделить в ней цветом все прописные буквы.
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <locale.h>

#define SIZE_A 60
#define SIZE_B 85

enum extremum { MIN_LAST, MAX_FIRST };
typedef enum extremum EXTREMUM;

size_t min_max_index(int *, size_t, EXTREMUM);
void swap_elements(int *, size_t, int *, size_t);
void show_array(int *, size_t);
void simple_random_array(int *, size_t);

int main() {
    int a[SIZE_A], b[SIZE_B];
    size_t min_last_index, max_first_index;

    srand((unsigned)time(NULL));
    simple_random_array(a, SIZE_A);
    simple_random_array(b, SIZE_B);

    setlocale(LC_CTYPE, "Russian_Russia.1251");
    printf("Исходный массив A(%u):\n\n", SIZE_A);
    show_array(a, SIZE_A);
    printf("Исходный массив B(%u):\n\n", SIZE_B);
    show_array(b, SIZE_B);

    max_first_index = min_max_index(a, SIZE_A, MAX_FIRST);
    min_last_index = min_max_index(b, SIZE_B, MIN_LAST);
    swap_elements(a, max_first_index, b, min_last_index);

    printf("Изменённый массив A(%u):\n\n", SIZE_A);
    show_array(a, SIZE_A);
    printf("Изменённый массив B(%u):\n\n", SIZE_B);
    show_array(b, SIZE_B);

    _getch();
    return 0;
}

size_t min_max_index(int * _array, size_t _size, EXTREMUM _min_max) {
    size_t n, index = 0;
    int x = _array[0];
    for (n = 1; n < _size; n++) {
        if (_min_max && x < _array[n]) {
            x = _array[n];
            index = n;
        } else if (!_min_max && x >= _array[n]) {
            x = _array[n];
            index = n;
        }
    }
    return index;
}

void swap_elements(int * _in_array, size_t _in_index, int * _from_array, size_t _from_index) {
    size_t temp = _in_array[_in_index];
    _in_array[_in_index] = _from_array[_from_index];
    _from_array[_from_index] = temp;
}

void show_array(int * _array, size_t _size) {
    size_t n;
    for (n = 0; n < _size; n++) printf("%6i\n", _array[n]);
    printf("\n");
}

void simple_random_array(int * _array, size_t _size) {
    size_t n;
    for (n = 0; n < _size; n++) _array[n] = rand();
}
Валера Уразимбетов
Валера Уразимбетов
70 925
Лучший ответ
И с чем конкретно возникли трудности?
Pavel Zavitaev
Pavel Zavitaev
29 336