I have attached a screenshot of the error on line 64 sort. The error states: identifier "sort" is undefined. Had to remove some info. due to word count. 2) Sort the 2 or 3 parallel vectors in ascending order of all_words vector.

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

I have attached a screenshot of the error on line 64 sort. The error states:  identifier "sort" is undefined.

Had to remove some info. due to word count.

2) Sort the 2 or 3 parallel vectors in ascending order of all_words vector.

Expert Answer

Given Information

Need to remove unnecessary vector from the code which is not used.

And also need to sort the 2 03 3 parallel vectors which has been used in the code. 

Using Sort on 2nd Vector

As 3rd vector is removed 2nd vector is left to be sorted, so revised code along with sorted values of all_words_counts.

#include <cassert>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
#include <cmath>

using namespace std;

const string empty_string = "";
vector<string> getWords(const string& text);
int findWord(const vector<string>& words, const string& word);
int main()
{
    vector<string> all_words;
    vector<int> all_word_counts;
    //vector<vector<int>> all_line_numbers;
    string input_file_name;
    cout << "Source file name? ";
    getline(cin, input_file_name);
    ifstream finp;
    finp.open(input_file_name);
    assert(finp.good());
    string line;
    int word_counter = 0;
    int max_word_length = 0;
    int max_word_count = 0;
    int line_number = 0;
    getline(finp, line);
    while (!finp.eof())
    {
        line_number++;
        vector<string> words = getWords(line);
        word_counter += words.size();
        for (int idx = 0; idx < words.size(); ++idx)
        {
            int widx = findWord(all_words, words[idx]);
            if (widx == -1)
            {
                cout << words[idx] << endl;
                all_words.push_back(words[idx]);
                all_word_counts.push_back(1);
                vector<int> word_line_numbers;
                word_line_numbers.push_back(line_number);
              // all_line_numbers.push_back(word_line_numbers);
                if (words[idx].length() > max_word_length)
                   max_word_length = words[idx].length();

            }
            else
            {
                all_word_counts[widx]++;
              // all_line_numbers[widx].push_back(line_number);
                if (all_word_counts[widx] > max_word_count)
                    max_word_count = all_word_counts[widx];
            }
        }
        getline(finp, line);
    }
 sort(all_word_counts.begin(),all_word_counts.end());
    finp.close();
    string output_file_name = input_file_name;
    string time_as_string = to_string(static_cast<int>(time(nullptr)));
    int period_pos = input_file_name.find_last_of('.');
    if (period_pos == -1)
        output_file_name = output_file_name + time_as_string + ".txt";
    else
        output_file_name = output_file_name.replace(period_pos, output_file_name.length() - period_pos + 1, time_as_string + ".txt");
    ofstream fout;
    fout.open(output_file_name);
    assert(fout.good());
   
    cout << word_counter << endl;
    const int word_counts_fwidth = static_cast<int>(log10(max_word_count)) + 1;
    const int line_number_fwidth = static_cast<int>(log10(line_number)) + 1;
    const int words_per_line = 36;
    //using new variable for reference
 int newindex = 0;
    for (int idx = 0; idx < all_words.size(); ++idx)
    {
        fout << setw(max_word_length) << left << all_words[idx] << ' ' << right << setw(word_counts_fwidth) << right << all_word_counts[idx] << endl;
        //for (int idx2 = 0; idx2 < all_line_numbers[idx].size(); ++idx2)

  for (int idx2 = 0; idx2 < all_word_counts[idx]; ++idx2)
        {
            if (idx2 != 0 && idx2 % words_per_line == 0)
                fout << endl;
            fout << setw(line_number_fwidth) << right << ++newindex << ' ';
        }
        fout << endl;
        fout << endl;
    }
    fout.close();
    system("pause");
    return 0;
}
int findWord(const vector<string>& words, const string& word)
{
    for (int idx = 0; idx < words.size(); ++idx)
        if (words[idx] == word)
            return idx;
    return -1;
}
vector<string> getWords(const string& text)
{
    vector<string> words;
    int start_pos = 0;
    while (start_pos < text.length())
    {
        while (start_pos < text.length() && !isalnum(text[start_pos]))
            start_pos++;
        string word = empty_string;
        while (start_pos < text.length() && (isalnum(text[start_pos])))
        {
            word += static_cast<char>(toupper(text[start_pos]));
            start_pos++;
        }
        if (word.length() > 0)
            words.push_back(word);
    }
    return words;

}

Expert Answer

Step 2

I am able to run this program without making any changes successfully without any error or issue.

the red line under sort is not an error, if you will run the program it will run successfully without any error. possible reason of the line under the sort word is because you might be using old version of c++ compiler. you can suppress these warning in IDE or you can ignore this one altogether.

if you still face the issue. please post the screenshot of the error also.

omework12Problem1
(Global Scope)
61
62
getline(finp, line);
63
sort (all_word_counts.begin(), all_word_counts.end());
fi
identifier "sort" is undefined
st
64
65
input_file_name;
string(static_castcint>(time(nullptr)));
name. find_last_of('.');
66
st Search Online
ir
if (period pos -1)
output_file_name - output_file_name + time_as_string + ".txt";
else
67
68
69
70
71
output_file_name = output_file_name.replace(period_pos, output_file_name.length() - period_pos + 1, time_as_string + ".txt");
ofstrean fout;
fout.open(output_file_name);
assert(fout.good());
72
73
74
75
76
77
cout « word_counter « endl;
const int word_counts_fwidth = static_cast<int>(log18(max_word_count)) + 1;
const int line_number_fwidth - static_cast<int>(log10(line_number)) + 1;
const int words_per_line - 36;
//using new variable for reference
int newindex = e;
for (int idx - 0; idx < all_words.size(); +idx)
78
79
80
81
82
83
84
fout « setw(max_word_length) « left <« all_words[idx] « '' « right « setw(word_counts_fwidth) « right « al1_word_counts[idx] <« endl;
//for (int idx2 = 0; idx2 < all_line_numbers[idx].size(); +idx2)
85
86
87
for (int idx2 = 0; idx2 < all_word_counts[idx]; ++idx2)
{
if (idx2 !- 0 88 idx2 % words_per_line -- 0)
fout « endl;
88
89
90
91
92
fout « setw(line_number_fwidth) « right « ++newindex «
93
fout « endl;
fout « endl;
94
95
01 A0
Ln: 3 Ch: 1 SPC
CRLF
Transcribed Image Text:omework12Problem1 (Global Scope) 61 62 getline(finp, line); 63 sort (all_word_counts.begin(), all_word_counts.end()); fi identifier "sort" is undefined st 64 65 input_file_name; string(static_castcint>(time(nullptr))); name. find_last_of('.'); 66 st Search Online ir if (period pos -1) output_file_name - output_file_name + time_as_string + ".txt"; else 67 68 69 70 71 output_file_name = output_file_name.replace(period_pos, output_file_name.length() - period_pos + 1, time_as_string + ".txt"); ofstrean fout; fout.open(output_file_name); assert(fout.good()); 72 73 74 75 76 77 cout « word_counter « endl; const int word_counts_fwidth = static_cast<int>(log18(max_word_count)) + 1; const int line_number_fwidth - static_cast<int>(log10(line_number)) + 1; const int words_per_line - 36; //using new variable for reference int newindex = e; for (int idx - 0; idx < all_words.size(); +idx) 78 79 80 81 82 83 84 fout « setw(max_word_length) « left <« all_words[idx] « '' « right « setw(word_counts_fwidth) « right « al1_word_counts[idx] <« endl; //for (int idx2 = 0; idx2 < all_line_numbers[idx].size(); +idx2) 85 86 87 for (int idx2 = 0; idx2 < all_word_counts[idx]; ++idx2) { if (idx2 !- 0 88 idx2 % words_per_line -- 0) fout « endl; 88 89 90 91 92 fout « setw(line_number_fwidth) « right « ++newindex « 93 fout « endl; fout « endl; 94 95 01 A0 Ln: 3 Ch: 1 SPC CRLF
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Similar questions
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY