Вывести уникальные значения двухмерного символьного массива - 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;
}

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

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

  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
Похожие ответы