2016-01-11 98 views
-6

編譯器不斷給int main()重定義錯誤。我不知道問題在哪裏。 MAX_CHAR也有問題。它正在寫入MAX_CHARS'未在此範圍內聲明。任何建議,評論?重新定義int main()C++

#include <iostream> // cin cout endl 
#include <fstream> // ifstream 
#include <sstream> // stringstream 
#include <stdlib.h> //exit 
#include "insertionSort.h" 
#include <vector> 
#include <climits> 

using std::cerr; 
using std::cout; 
using std::endl; 
using std::ifstream; 

const int MAX_CHAR = 500; // max length of each line to read from the input file 

template<class T> 
void readSortOutput(char* typeName, vector<T> v, ifstream &inStream); 

int main() 
{ 
    cout << "Insertion sort algorithm driver program" << endl; 

    ifstream inStream("/home/Downloads/input.txt"); 
    if(inStream.fail()) 
    { 
     cerr << "Input file opening failed.\n"; 
     exit(1); 
    } 

    vector<int> intVector; 
    readSortOutput((char*)"int", intVector, inStream); 

    vector<double> dblVector; 
    readSortOutput((char*)"double", dblVector, inStream); 

    inStream.close(); 

    return 0; 
} 

template<class T> 
void insertionSort(vector<T>& data) 
{ 
    for (size_t i = 0; i < data.size(); i++) 
     for (size_t j = i; j < data.size(); j++) 
      if (data[ j ] < data[ i ]) 
      { // swap values 
       T temp = data[ j ]; 
       data[ j ] = data[ i ]; 
       data[ i ] = temp; 
      } 

    return; 
} 

template<class T> 
void readSortOutput(char* typeName, vector<T> v, ifstream &inStream) 
{ 

    char fileLine[MAX_CHARS]; 
    std::stringstream ss; 
    inStream.getline(fileLine, MAX_CHARS); 
    ss << fileLine; 
    T elem; 
    while (ss >> elem) { 
     v.push_back(elem); 
    } 

    cout << endl << typeName << " vector before insertion sort: " << endl; 
    for (int i = 0; i < v.size(); i++) 
     cout << v[i] << " "; 
    cout << endl; 

    insertionSort(v); // the sort itself 

    cout << typeName << " vector after insertion sort: " << endl; 
    for (int i = 0; i < v.size(); i++) 
     cout << v[i] << " "; 
    cout << endl; 

    return; 
} 

InsertionSort.h

#ifndef INSERTIONSORT_H 
#define INSERTIONSORT_H 
#include <iostream> 

#include <iostream> // cin cout endl 
#include <fstream> // ifstream 
#include <sstream> // stringstream 
#include <stdlib.h> //exit 
#include "insertionSort.h" 
#include <vector> 
#include <climits> 

using namespace std; 

int main() 
{ 
    int sizee=10; 
    int v[sizee]; 
    for (int i=0;i<sizee;i++){ 
     cout<<"Sorting array: "; 
     cin>>v[i]; 
    } 
    int i,j,val; 
    for (i=1; i<sizee; i++) { 
     val=v[i]; 
     j = i-1; 
     while (j>=0 && v[j]>val) { 
      v[j+1] = v[j]; 
      j--; 
     } 
     v[j+1] = val; 
    } 
    for (int i=0;i<sizee;i++){ 
     cout<<"v["<<i<<"]="<<v[i]<<endl; 
    } 
    return 0; 
} 
+7

爲什麼你有2條主線? –

+0

有頭文件。 (InsertionSort.h) –

回答

3

你不能有2個主要的()像你現在要做的。

你做了兩次。

int main() 
{ 
    cout << "Insertion sort algorithm driver program" << endl; 

和InsertionSort.h

int main() 
{ 
    int sizee=10; 
    int v[sizee]; 
+0

解決這個問題的最好方法是什麼。第二個主要用於InsertionSort.h頭文件 –

+0

爲什麼你必須稱它爲主?沒有意義,重命名它。你只能有一個主。學習如何使用函數。 –

3

你只能在你計劃一個main()功能。你有兩個。在第一個代碼段中有一個,並且有一個在InsertionSort.h

您還有#include "insertionSort.h"InsertionSort.h,你不應該這樣做。一個文件不應該包含它自己。

+0

謝謝你的幫助。版主,請刪除這篇文章。謝謝 –

+0

@SalvatoreFerchentoGiuliano _「主持人,請刪除這篇文章。」_你已經有一些關於你的問題的票。它可能會在一段時間後被刪除。 –