Заполнение массива строчными буквами английского алфавита в случайном порядке - C (СИ)
Формулировка задачи:
Напишите программу, в которой массив заполняется строчными буквами английского алфавита в случайном порядке; значения символов и их коды вывести на экран.Определить, какой элемент встретился чаще других
Решение задачи: «Заполнение массива строчными буквами английского алфавита в случайном порядке»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define random_char() ( rand() % ( 'Z' - 'A' + 1 ) + ( ( rand() & 1 ) ? 'A' : 'a' ) )
char * random_string(size_t len) {
size_t i = 0;
char * ptr = malloc(len + 1);
if ( ! ptr )
return NULL;
while ( i < len )
ptr[i++] = random_char();
ptr[i] = '\0';
return ptr;
}
int main(void) {
size_t len;
while ( printf("Length: ") && scanf("%u", &len) == 1 && len ) {
char * s = random_string(len);
printf("String: %s\n", s);
free(s);
}
return 0;
}
Объяснение кода листинга программы
- Программа начинается с подключения необходимых библиотек: stdio.h, stdlib.h и time.h
- Далее, с помощью препроцессорных директив определяют функцию random_char(), которая будет генерировать случайный символ в диапазоне от 'A' до 'Z' (включительно)
- Создают функцию random_string(size_t len), которая принимает в качестве аргумента длину строки, которую необходимо сгенерировать. В этой функции происходит выделение памяти под строку с помощью malloc(), заполнение этой строки случайными символами с помощью цикла while и добавление нулевого символа в конце строки.
- В функции main() происходит запрос на ввод длины строки с помощью printf() и scanf(). Затем вызывается функция random_string() и выводится сгенерированная строка с помощью printf().
- После вывода строки, память под строку освобождается с помощью free().
- Код находится в бесконечном цикле, пока пользователь не введет ноль для длины строки.
- В конце программы возвращается 0, что означает успешный конец работы программы.