Упорядочить слова в поле методом минимумов-максимумов - C (СИ)

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

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

В общем получил задачу :"Есть структура, одно поле которой -предложение со словами длиной 6-16 символов. Каждое слово заканчивается пробелом , запятой или точкой.Упорядочить слова в поле методом минимумов-максимумов." Насколько я понял задание мне нужно в символьном массиве организовать перестановки слов . Если есть у кого-то какие-то советы или наработки буду БЛАГОДАРЕН.

Решение задачи: «Упорядочить слова в поле методом минимумов-максимумов»

textual
Листинг программы
#include <string.h>
 
void swaps(char* psz1, char* psz2);
bool iseqkey(char* psz1, char* psz2, int pos);
 
typedef struct Words
{
    char m_szLine[256];
} WORDS;
 
int main()
{
    WORDS words;
    memset((void*)&words, 0x00, sizeof(WORDS));
 
    const char* line = "apricot, apple, strawbery, bagage, back, cranbery, count, cat, dog, dig.";
    strcpy(words.m_szLine, line);
 
    char* word = strtok(words.m_szLine, " ");
    int r = 0; char** ppsz = new char*[256];
    while ((word != NULL) && (r < 256))
    {
        ppsz[r] = new char[16];
        strcpy(ppsz[r++], word); 
        word = strtok(NULL ," ");
    }
 
    for (int q = 0; q < 16; q++)
        for (int i = 0; i < r; i++)
            for (int k = i+1; k < r; k++)
                if (ppsz[k][q] < ppsz[i][q])
                {
                    if (!iseqkey(ppsz[i],ppsz[k],q) && q > 0) 
                        continue;
                
                    swaps((char*)ppsz[k],(char*)ppsz[i]);
                }
 
    for (int n = 0; n < r; n++)
        printf("%s\n",ppsz[n]);
 
    printf("\n");
    
    return 0;
}
 
bool iseqkey(char* psz1, char* psz2, int pos)
{
    for (int i = pos-1; i >= 0; i--)
        if (psz1[i] != psz2[i])
            return false;
 
    return true;
}
 
void swaps(char* psz1, char* psz2)
{
    static char* psztemp = new char[256];
    strcpy(psztemp, psz1);
    strcpy(psz1, psz2); 
    strcpy(psz2, psztemp);
}

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы