Упорядочить слова в поле методом минимумов-максимумов - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д