Задача 11.
Даны массивы чисел. Размеры массивов заданы в варианте. Требуется в каждом массиве найти наибольший и наименьший элементы и напечатать их, затем все компоненты каждого массива возвести в квадрат и снова найти наибольший и наименьший элементы. Вычисление максимальной и минимальной величин оформить в виде функции.
-
Ввести и обработать два массива, содержащие соответственно 5 и 8 вещественных компонентов.
-
Ввести и обработать три массива, содержащие соответственно 3, 6 и 8 целых компонентов.
-
Ввести и обработать четыре массива, содержащие соответственно 4, 6, 3 и 10 целых компонентов.
-
Ввести и обработать два массива, содержащие соответственно 4 и 6 вещественных компонентов.
-
Ввести и обработать три массива, содержащие соответственно 5, 10 и 4 целых компонента.
-
Ввести и обработать четыре массива, содержащие соответственно 3, 5, 8 и 6 вещественных компонентов.
-
Ввести и обработать два массива, содержащие соответственно 7 и 10 вещественных компонентов.
-
Ввести и обработать три массива, содержащие соответственно 5, 4 и 7 целых компонентов.
-
Ввести и обработать четыре массива, содержащие соответственно 7, 3, 5 и 4 целых компонента.
-
Ввести и обработать два массива, содержащие соответственно 6 и 9 вещественных компонентов.
Примечание
При выполнении задач обработки символьных данных могут быть полезны следующие функции потокового ввода-вывода стандартной библиотеки языка Си:
-
char *fgets (char *s, int n, FILE *stream) – чтение строки из входного потока, включая символ новой строки.
-
char *gets (char *s) – чтение строки из стандартного файла ввода stdin.
-
int fputs (char *s, FILE *stream) – запись строки в поток stream.
-
int puts (char *s) – запись строки в стандартный файл вывода stdout. В конце строк записывается символ новой строки.
Для обработки строк служат следующие функции:
-
char *strcat(char *s1, char *s2) – сцепить две строки.
-
char *strncat(char *s1, char *s2, int n) – сцепить две строки, причем из второй строки копировать не более n символов.
-
int strcmp(char *str1, char *str2) – сравнить две строки в лексикографическом порядке.
-
Возвращаемое значение
Результат сравнения
Меньше нуля
str1 меньше str2
Нуль
str1 равен str2
Больше нуля
str1 больше str2
-
int strncmp(char *s1, char *s2, int n) – сравнить первые n символов двух строк.
-
char *strcpy(char *s1, char *s2) –копировать строку s2 в строку s1.
-
char *strncpy(char *s1, char *s2, int n) – копировать не более n символов строки s2.
-
int strlen(char *s) – определить длину строки (число символов без завершающего нулевого символа).
-
char *strchr(char *s, int n) - возвращает указатель на первое вхождение символа n в строке s. Завершающий нулевой символ считается частью Си-строки. Таким образом, он также может быть найден для получения указателя на конец строки. Если значение не найдено, функция возвращает нулевой указатель.
-
char *strrchr(char *s, int c) – возвращает указатель на последнее вхождение символа c в строке s. Завершающий нулевой символ считается частью Си-строки. Таким образом, он также может быть найден для получения указателя на конец строки. Если значение не найдено, функция возвращает нулевой указатель..
-
char *strpbrk(char *s1, char *s2) – возвращает указатель на первое вхождение в s1 любого из символов строки s2, или — пустой указатель, если нет ни одного совпадения. Поиск не учитывает завершающий нуль-символ.
-
int strspn(char *s1, char *s2) – выполняет поиск символов строки s2 в строке s1. Возвращает длину начального участка строки s1, состоящего из символов строки s2. Если все символы строки s1 входят в строку s2, функция возвращает длину всей строки s1. Если первый символ в s1 не входит в строку s2, функция возвращает ноль.
-
int strcspn(char *s1, char *s2) – выполняет поиск первого вхождения в строку s1 любого из символов строки s2, и возвращает количество символов до найденного первого вхождения. Поиск учитывает и завершающий нуль-символов, поэтому, если функция возвращает длину строки s1, это значит, что ни один из символов строки s2 не входит в состав s1.
-
char *strtok(char *s1, char *s2) – выполняет поиск лексем в строке s1, разделенных любым из множества символов, входящих в строку s2. Последовательность вызовов этой функции разбивают строку s1 на лексемы, которые представляют собой последовательности символов, разделенных символами разделителями. На первый вызов, функция принимает строку s1 в качестве аргумента, чей первый символ используется в качестве начальной точки для поиска лексем. В последующие вызовы, функция ожидает нулевого указателя и использует позицию сразу после окончания последней лексемы как новое местонахождение для сканирования. Для определения начала лексемы функция сначала определяет символы, не содержащиеся в строке s2, то есть они являются символами разделителями. А затем посимвольно проверяет остальную часть строки до первого символа-разделителя, который сигнализирует конец лексемы. Этот конечный маркер автоматически заменяется нулевым символом, и лексема возвращается функцией. После этого, следующие вызовы функции strtok начинаются с этого нулевого символа. Возвращает указатель на последнюю найденную лексему в строке либо пустой указатель, если нет найденных лексем.
Для выполнения функций обработки строк необходимо включить в программу файл string.h командой
#include <string.h>