C ++查找具有第一个和最后一个相同字母的单词,并按字母顺序对它们进行排序

时间:2015-05-15 01:03:57

标签: c++ class sorting object

我不能使用相同的第一个字母和最后一个来制作从文件单词(对单词或长度没有限制)读取的程序。我使用类和对象,首先我无法阅读它们

#include <iostream>
#include <string>
#include <sstream>
#include <fstream>

using namespace std;
class Texts{

public:
    void Realding(string &All);
    void Searching(string &text, char *Word);
};
int main()
{

    Texts A;
    string Text; char word[40];
    A.Reading(Text);
    A.Searching(Text, word);
    system("PAUSE");


}

void Texts::Reading(string &All)
{
    string temp;
    ifstream read("Text.txt");
    while (getline(read, temp)) { All += temp; All += "\n"; }
    cout << All;

}

void Texts::Searching(string &text, char *Word)
{
    int i = 0;
    int j = 0;
    int letters = 0;
    int zodz = 0;
    int index = 0;
    while (1)
    {

        if (text[i] == ' ' || text[i] == '\0')
        {

            zodz++;
            if (text[0] == text[i - 1])
            {
                letters = j;
                for (int l = 0; l < letters; l++)
                {
                    //cout << text[l];
                }
                j = 0;
            }
            if (text[i + 1 - j] == text[i - 1])
            {
                letters = j;
                for (int l = i - j; l < letters; l++)
                {
                //  cout << text[l];
                }
                j = 0;
            }


        }

        if (text[i] == '\0') break;   
        else
        i++;                           
        j++;

    }
}

我无法正确地从文件中读取... Text.txt看起来像

asdfa su egze hah ktis faf

以后如何选择带有第一个和最后一个相同字母的单词分配给数组,稍后按字母顺序对它们进行排序。谢谢,如果有人帮助我。

1 个答案:

答案 0 :(得分:0)

从文件中读取:

std::ifstream in(NameOfFile);
std::string word;

while (in >> word) //will stop when word can't be read. probably bad file or end of file
{
    // do something with word
}

查找具有相同的第一个和最后一个字母的单词

if (word[0] == word[word.length() - 1])
{
    // do something with word
}

请注意,这不会处理大写字母的单词。它找不到&#34;妈妈&#34;。它可能会崩溃空话。两者都有微不足道的修复。

将单词分配给数组

array[index++] == word;

这假设您希望在插入数组后推进索引。请注意,如果阵列过满,程序将表现不佳。如果您被作业所允许,请考虑使用std::vector

对数组进行排序

std::sort(array, array + index);

这假设您可以使用std::sort。同样,如果可能的话,使用std::vector代替数组。在完成所有添加之后,假设index是上面添加示例中的索引值。如果您不被允许使用std::sort提出其他问题。这是一个冗长的话题。