#include <iostream>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <string>

using namespace std;

void alpha_sorting(vector<string>& a);
void swap_function(vector<string>& x,int& l);
string alpha_least(vector<string>& list,int& idx);
int min_word_index(string& min,vector<string>& listed);

int main(){
    ifstream infile;
    infile.open("words.txt");
    if(!infile.is_open()){
        cout << "Could not open the input file" << endl;
        exit(EXIT_FAILURE);
    }
    vector<string> words;
    string temp;
    while(infile >> temp){
        words.push_back(temp);
    }
    sort_words_alphabetically(words);
    cout << "Those words in alphabetical order are " << endl;

    return 0;
}

void alpha_sorting(vector<string>& a){
    int index = 0;
    while(index < a.size()){
        swap_min_to_top(a, index);
        index++;
    }
    for(int i = 0;i < a.size();i++){
        cout << a[i] << endl;
    }
}

void swap_function(vector<string>& x,int& l){
    string temporary;
    temporary = x[l];
    wrdx[loc] = minimum_word(x, l);
    int min_idx = min_word_index(x[l], x);
    x[min_idx] = temporary;
}

string alpha_least(vector<string>& list,int& idx){
    string temp = list[idx];
    for(int i = idx;i < list.size();i++){
        if(list[i] < temp){
            temp = list[i];
        }
    }
    return temp;
}

int min_word_index(string& min,vector<string>& listed){
    for(int i = 0;i < listed.size();i++){
        if(min == listed[i]){
            return i;
        }
    }
    return -1;
}


大家好,

简而言之,作业要求我们从文件中读取单词,然后按字母顺序排列所有单词并将其显示在屏幕上。

该分配明确禁止使用诸如sort等的c ++函数,并期望我们创建自己的算法来安排此向量。

我的算法在列表中找到了最小字符串(字母中的那个)(使用'
有人可以找到我的代码有什么问题吗?

最佳答案

快速浏览以下是一个问题,
swap_min_to_top中,
wrdx[loc] = minimum_word(wrdx, loc);
接着
int min_idx = min_word_index(wrdx[loc], wrdx);
这将使您的min_idx始终等于loc(因为您刚刚为其分配了)

您可能希望min_word_index从1 + idx开始处理,而不是从零开始

10-07 13:02
查看更多