void Anagram::process( ) { if ( s1.empty( ) ) throw BadString( "String 1 is empty." ); if ( s2.empty( ) ) throw BadString( "String 2 is empty." ); s1processed = stringSort( lowerAlpha( s1 ) ); s2processed = stringSort( lowerAlpha( s2 ) ); return; }
int main() { //char* forsort = "abc"; char forsort[] = "abc"; stringSort(forsort); return 0; }
bool stringDescending(const DOM::Node<std::string>& n1, const DOM::Node<std::string>& n2) const { return stringSort(n1, n2, std::greater<std::string>()); } // stringAscending
int fileStringSort (const char *pFileToSort) { char pStrBuff[iSortBuffSize]={0};// массив для хранения считанной строки char **pArray; // указатель на массив указателей char *pStrArray; // указатель на строку из файла FILE *pFile; // указатель на дескриптор открытого файла int iNumStr = 0; // количество строк в файле int iStrLength; // длина строки int iCycle; // временная переменная if ((pFile = fopen (pFileToSort,"r+")) == NULL) { return 1; } while (fgets (pStrBuff, iSortBuffSize, pFile)) // подсчитываем количество строк в файле { iNumStr++; } rewind (pFile); // возвращаем указатель на начало файла pArray = new char* [iNumStr]; // выделяем память для массива указателей на строки iCycle = 0; while (fgets (pStrBuff, iSortBuffSize, pFile)) { iCycle++; iStrLength = strlen(pStrBuff); if (iCycle == iNumStr && !strstr(pStrBuff,"\n")) // проверяем наличие новой строки в конце файла { // если отсутсвует - добавляем pStrArray = new char [iStrLength+2]; strncpy(pStrArray, pStrBuff,iStrLength+1); strncat(pStrArray, "\n",1); pArray[iCycle-1] = pStrArray; break; } pStrArray = new char [iStrLength+1]; // выделяем память для хранения считанной из файла строки strncpy (pStrArray, pStrBuff,iStrLength+1); // копируем считанную строку в выделенную память pArray[iCycle-1] = pStrArray; } rewind(pFile); stringSort(pArray, iNumStr, 1); // сортируем строки в памяти for (iCycle = 0; iCycle < iNumStr; iCycle++) { fprintf (pFile,"%s",pArray[iCycle]); // записываем отсортированные строки в файл } for (iCycle = 0; iCycle < iNumStr; iCycle++) { delete []pArray[iCycle]; // освобождаем память выделенную для сортировки строк } delete []pArray; // освобождаем память выделенную для хранения массива указателей на строки fclose (pFile); return 0; }
bool stringDescending(const DOMNode& n1, const DOMNode& n2) const { return stringSort(n1, n2, std::greater<string_type>()); } // stringAscending