Вывести уникальные значения двухмерного символьного массива - C (СИ)
Формулировка задачи:
Добрый день.
Помогите с программой.Дан двухмерный символьный массив к нему написать функцию вывода уникальных значений.
Вот что есть на данный момент :
Функция работает если значения были друг за другом, как сделать поиск по всему двумерному массиву
int sortirovka( char *array[], int n){ int i, j,k; for(i=0; i<n-1; i++){ for(j=n-1; j>i; j--){ if(strcmp(array[j-1],array[j])==0){ array[j]=array[j+1]; } } } return 0; }
Решение задачи: «Вывести уникальные значения двухмерного символьного массива»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define N 32 void out_unique(FILE* _o, char* a[], int n){ int i, j; char* k; //сначало сортируем for(i = 1; i < n; ++i){ k = a[i]; j = i - 1; while((j >= 0) && (strcmp(k, a[j]) < 0)){ a[j + 1] = a[j]; --j; } a[j + 1] = k; } //далее выводим только уникальные строки for(i = 0; i < n; i = j){ for(j = i + 1; j < n; ++j){ if(strcmp(a[j], a[i]) != 0) break; } if((j - i) == 1) fprintf(_o, "%s\n", a[i]); } } int main(void){ char* a[N]; int n; char *i, s[] = "perl, php, js, php, ruby, js, python, ruby."; n = 0; for(i = strtok(s, " ,."); i != NULL; i = strtok(NULL, " ,.")) a[n++] = i; out_unique(stdout, a, n); return 0; }
Объяснение кода листинга программы
Выводим уникальные значения двухмерного символьного массива:
- Включаем необходимые заголовочные файлы
и , также определяем размер массива N. - Создаём функцию out_unique, принимающую два аргумента: файл, куда необходимо вывести результат, и отсортированный массив.
- В функции out_unique выполняем сортировку массива методом пузырька.
- Далее, с помощью двух вложенных циклов, удаляем дубликаты, оставляя только уникальные строки.
- Выводим результат на экран.
- В функции main создаём массив типа char*, инициализируем его значениями из строки s.
- С помощью функции strtok разделяем строку на подстроки и добавляем их в массив.
- Вызываем функцию out_unique, передавая в неё указатель на первый элемент массива, его размер и файл, куда необходимо вывести результат.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д