Вывести уникальные значения двухмерного символьного массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Помогите с программой.Дан двухмерный символьный массив к нему написать функцию вывода уникальных значений. Вот что есть на данный момент :
Листинг программы
  1. int sortirovka( char *array[], int n){
  2. int i, j,k;
  3. for(i=0; i<n-1; i++){
  4. for(j=n-1; j>i; j--){
  5. if(strcmp(array[j-1],array[j])==0){
  6. array[j]=array[j+1];
  7. }
  8. }
  9. }
  10. return 0;
  11. }
Функция работает если значения были друг за другом, как сделать поиск по всему двумерному массиву

Решение задачи: «Вывести уникальные значения двухмерного символьного массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N  32
  4.  
  5. void out_unique(FILE* _o, char* a[], int n){
  6.     int   i, j;
  7.     char* k;
  8.     //сначало сортируем
  9.     for(i = 1; i < n; ++i){
  10.         k = a[i];
  11.         j = i - 1;
  12.         while((j >= 0) && (strcmp(k, a[j]) < 0)){
  13.             a[j + 1] = a[j];
  14.             --j;
  15.         }
  16.         a[j + 1] = k;
  17.     }
  18.  
  19.     //далее выводим только уникальные строки
  20.     for(i = 0; i < n; i = j){
  21.         for(j = i + 1; j < n; ++j){
  22.             if(strcmp(a[j], a[i]) != 0)
  23.                 break;
  24.         }
  25.         if((j - i) == 1)
  26.             fprintf(_o, "%s\n", a[i]);
  27.     }
  28. }
  29.  
  30. int main(void){
  31.     char* a[N];
  32.     int   n;
  33.     char *i, s[] = "perl, php, js, php, ruby, js, python, ruby.";
  34.  
  35.     n = 0;
  36.     for(i = strtok(s, " ,."); i != NULL; i = strtok(NULL, " ,."))
  37.         a[n++] = i;
  38.  
  39.     out_unique(stdout, a, n);
  40.     return 0;
  41. }

Объяснение кода листинга программы

Выводим уникальные значения двухмерного символьного массива:

  1. Включаем необходимые заголовочные файлы и , также определяем размер массива N.
  2. Создаём функцию out_unique, принимающую два аргумента: файл, куда необходимо вывести результат, и отсортированный массив.
  3. В функции out_unique выполняем сортировку массива методом пузырька.
  4. Далее, с помощью двух вложенных циклов, удаляем дубликаты, оставляя только уникальные строки.
  5. Выводим результат на экран.
  6. В функции main создаём массив типа char*, инициализируем его значениями из строки s.
  7. С помощью функции strtok разделяем строку на подстроки и добавляем их в массив.
  8. Вызываем функцию out_unique, передавая в неё указатель на первый элемент массива, его размер и файл, куда необходимо вывести результат.
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы