Введение
В этом лабораторном практикуме вы узнаете, как определить моду (моду) набора данных на языке C. Практикум охватывает следующие этапы:
Чтение массива чисел: Вы научитесь читать массив чисел на языке C, что является первым важным шагом в определении моды набора данных. Программа позволяет ввести набор чисел и подготовить их для анализа частоты.
Подсчёт частот для нахождения наиболее часто встречающегося значения: Вы измените предыдущую программу, чтобы подсчитать частоты каждого числа в массиве и определить наиболее часто встречающееся значение (моду).
Вывод моды: Наконец, вы выведете моду, которая представляет собой значение, наиболее часто встречающееся в наборе данных.
Чтение массива чисел
В этом шаге вы узнаете, как читать массив чисел на языке C, что является первым важным шагом в определении моды набора данных. Мы создадим программу на C, которая позволяет ввести набор чисел и подготовить их для анализа частоты.
Сначала создадим новый файл C для нашей программы вычисления моды:
cd ~/project
nano mode_calculation.c
Теперь добавьте следующий код в файл:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int numbers[MAX_SIZE];
int n, i;
// Ввод количества элементов
printf("Enter the number of elements (max %d): ", MAX_SIZE);
scanf("%d", &n);
// Ввод элементов массива
printf("Enter %d integers:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// Вывод введённого массива для проверки ввода
printf("Entered array: ");
for (i = 0; i < n; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
Компилируем и запускаем программу:
gcc mode_calculation.c -o mode_calculation
./mode_calculation
Пример вывода:
Enter the number of elements (max 100): 5
Enter 5 integers:
3 4 2 4 1
Entered array: 3 4 2 4 1
Давайте разберём ключевые части этого кода:
#define MAX_SIZE 100устанавливает максимальный размер массива для предотвращения переполнения.scanf()используется для ввода количества элементов и значений массива.- Мы выводим массив, чтобы убедиться, что входные данные были правильно получены.
Этот код демонстрирует базовый ввод массива в C, что необходимо для нашего процесса вычисления моды. В следующих шагах мы будем использовать это для подсчёта частот и определения моды.
Подсчёт частот для нахождения наиболее часто встречающегося значения
В этом шаге мы изменим нашу предыдущую программу, чтобы подсчитать частоты каждого числа в массиве и определить наиболее часто встречающееся значение (моду).
Откройте существующий файл и обновите код:
cd ~/project
nano mode_calculation.c
Замените предыдущий код следующим:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int numbers[MAX_SIZE];
int frequencies[MAX_SIZE] = {0};
int n, i, j, mode = 0, max_frequency = 0;
// Ввод количества элементов
printf("Enter the number of elements (max %d): ", MAX_SIZE);
scanf("%d", &n);
// Ввод элементов массива
printf("Enter %d integers:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// Подсчёт частот каждого числа
for (i = 0; i < n; i++) {
int count = 1;
for (j = 0; j < n; j++) {
if (i != j && numbers[i] == numbers[j]) {
count++;
}
}
frequencies[i] = count;
// Отслеживание моды
if (count > max_frequency) {
max_frequency = count;
mode = numbers[i];
}
}
// Вывод частот
printf("\nFrequencies:\n");
for (i = 0; i < n; i++) {
printf("Number %d appears %d time(s)\n", numbers[i], frequencies[i]);
}
// Вывод моды
printf("\nMode: %d (appears %d times)\n", mode, max_frequency);
return 0;
}
Компилируем и запускаем программу:
gcc mode_calculation.c -o mode_calculation
./mode_calculation
Пример вывода:
Enter the number of elements (max 100): 6
Enter 6 integers:
2 3 4 2 2 5
Frequencies:
2 appears 3 time(s)
3 appears 1 time(s)
4 appears 1 time(s)
2 appears 3 time(s)
2 appears 3 time(s)
5 appears 1 time(s)
Mode: 2 (appears 3 times)
Ключевые моменты этой реализации:
- Мы создаём массив
frequencies, чтобы хранить количество каждого числа. - Вложенные циклы подсчитывают количество вхождений каждого уникального числа.
- Мы отслеживаем моду, отслеживая максимальную частоту.
- Программа обрабатывает случаи с единственной модой.
Вывод Моды
В этом заключительном шаге мы улучшим нашу программу вычисления моды, чтобы она обрабатывала несколько мод и предоставляла более полную статистическую информацию.
Откройте существующий файл и обновите код:
cd ~/project
nano mode_calculation.c
Замените предыдущий код следующим:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int numbers[MAX_SIZE];
int frequencies[MAX_SIZE] = {0};
int unique_numbers[MAX_SIZE];
int n, i, j, unique_count = 0, max_frequency = 0;
// Ввод количества элементов
printf("Enter the number of elements (max %d): ", MAX_SIZE);
scanf("%d", &n);
// Ввод элементов массива
printf("Enter %d integers:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// Поиск уникальных чисел и их частот
for (i = 0; i < n; i++) {
int is_unique = 1;
for (j = 0; j < unique_count; j++) {
if (numbers[i] == unique_numbers[j]) {
is_unique = 0;
break;
}
}
if (is_unique) {
unique_numbers[unique_count] = numbers[i];
// Подсчёт частоты для этого уникального числа
int count = 0;
for (j = 0; j < n; j++) {
if (numbers[i] == numbers[j]) {
count++;
}
}
frequencies[unique_count] = count;
// Обновление максимальной частоты
if (count > max_frequency) {
max_frequency = count;
}
unique_count++;
}
}
// Вывод подробной информации о моде
printf("\nСтатистический анализ:\n");
printf("Всего чисел: %d\n", n);
printf("Уникальных чисел: %d\n", unique_count);
printf("\nРаспределение частот:\n");
for (i = 0; i < unique_count; i++) {
printf("Число %d: %d раз(а)\n",
unique_numbers[i], frequencies[i]);
}
// Вывод мод
printf("\nМода(ы):\n");
for (i = 0; i < unique_count; i++) {
if (frequencies[i] == max_frequency) {
printf("- %d (встречается %d раз(а))\n",
unique_numbers[i], frequencies[i]);
}
}
return 0;
}
Компилируем и запускаем программу:
gcc mode_calculation.c -o mode_calculation
./mode_calculation
Пример вывода:
Enter the number of elements (max 100): 7
Enter 7 integers:
2 3 4 2 2 5 5
Статистический анализ:
Всего чисел: 7
Уникальных чисел: 4
Распределение частот:
Число 2: 3 раз(а)
Число 3: 1 раз(а)
Число 4: 1 раз(а)
Число 5: 2 раз(а)
Мода(ы):
- 2 (встречается 3 раза)
Основные улучшения в этой версии:
- Обрабатывает несколько мод, если они существуют.
- Предоставляет всесторонний статистический обзор.
- Определяет уникальные числа в наборе данных.
- Отображает распределение частот.
Резюме
В этом лабораторном практикуме вы научитесь вводить массив чисел в языке C и подсчитывать частоты каждого числа, чтобы определить моду — наиболее часто встречающееся значение в наборе данных. Сначала вы создадите программу на C, которая позволит ввести набор чисел и подготовить их для анализа частот. Затем вы измените программу, чтобы подсчитать частоты каждого числа и определить моду. Наконец, вы выведете моду на консоль.
Основные моменты, которые вы изучите в ходе выполнения этих шагов:
- Как вводить массив чисел в языке C с помощью функции
scanf(). - Как вывести введённый массив для проверки ввода.
- Как подсчитать частоты каждого числа в массиве, чтобы найти наиболее часто встречающееся значение (моду).



