2015-01-15 2 views
0

배열을 정렬하는 프로그램을 어떻게 텍스트 파일에 저장할 수 있습니까? 예 : 정렬 된 배열은 1, 2, 3, 4, 5입니다. 어떻게 이름을 텍스트 파일로 저장할 수 있습니까? 정렬 요소 ". 나는 여러 가지 방법을 시도했지만 정렬 된 배열은 텍스트 파일에 저장하지 않을 것입니다. 을 나는 어려운 찾을 수 있도록 내가 초보자입니다. 여기 정렬 된 배열을 텍스트 파일로 저장하는 방법은 무엇입니까?

내 코드입니다.

#include <iostream> 
using namespace std; 

int main() { 
    cout << "Enter number of element:"; 
    int n; cin >> n; 
    int a[n]; 
    for(int i=0;i<n;i++) 
    { 
     cout << "element number " << (i+1) << " : "; 
     cin >> a[i]; 
    } 
    int e=1, d=3; 
    int i, j, k, m, digit, row, col; 
    int length = sizeof(a)/sizeof(int); 
    int bmat[length][10]; 
    int c[10]; 
    for(m=1;m<=d;m++) 
    { 
     for(i=0;i<10;i++) 
     { 
      c[i]=-1; 
     } 
     for(i=0;i<length;i++) 
     { 
      digit=(a[i]/e)%10; 
      c[digit]++; 
      row=c[digit]; 
      col=digit; 
      bmat[row][col]=a[i]; 
     } 
     k=-1; 
     for(i=0;i<10;i++) 
     { 
      if(c[i]!=-1) 
      { 
       for(j=0;j<=c[i];j++) 
       { 
       k++; 
       a[k]=bmat[j][i]; 
       } 
      } 
     } 
     e=e*10; 
    } 

    cout << endl; 
    cout << "Sorted array:" << endl; 
    for(int i=0;i<n;i++) 
    { 
     cout << a[i] << " , "; 
    } 
    cout << endl; 
    system("pause"); 
    return 0; 
} 
+1

직렬화는 한 가지 방법입니다. –

+0

파일을 열고 쓰십시오. 의 정렬 기능을 사용하여 정렬 할 수 있습니다. – saadtaame

+2

'int a [n];'n '이 상수 표현이 아닐 때 * 표준 * C++이 아니다. 대신에'std :: vector'를 사용해야 할 것입니다. – crashmstr

답변

0
#include<iostream> 
#include<fstream> 
using namespace std; 

int compare(int, int); 
void sort(int[], const int); 
int compare(int x, int y){ 
    return(x > y); 
} 
void swap(int *x, int *y){ 
    int temp; 
    temp = *x; 
    *x = *y; 
    *y = temp; 
} 
void display(int array[], int n){ 
    for (int i = 0; i<n; i++) { 
     cout << array[i] << " "; 
    } 
    cout << endl; 
} 
void writeToFile(int array[], int n){ 
    ofstream myfile; 
    myfile.open("example.txt"); 
    for (int i = 0; i<n; i++) { 
     myfile << array[i]; 
     if (i != n - 1){ 
      myfile << ", "; 
     } 
    } 
    myfile.close(); 
} 
void sort(int table[], const int n) { 
    for (int i = 0; i < n; i++){ 
     for (int j = 0; j < n - 1; j++) { 
      if (compare(table[j], table[j + 1])) 
       swap(&table[j], &table[j + 1]); 
     } 
    } 
} 
int main(){ 
    int quantity; 
    int* tab; 
    ofstream outfile; 
    cout << "Enter number of element: "; 
    cin >> quantity; 
    tab = new int[quantity]; 
    cout << "Element:\n\n" << endl; 
    for (int i = 0; i < quantity; i++){ 
     int x = i; 
     cout << "#" << ++x << ":"; 
     cin >> tab[i]; 
    } 
    sort(tab, quantity); 
    cout << "The Sorted Elements are: "; 

    display(tab, quantity); 
    writeToFile(tab, quantity); 
    cout << endl; 
    getchar(); 
    getchar(); 
    //system("pause"); 
    return 0; 
} 
짧은

, 코드에이 블록을 추가합니다.

ofstream myfile; 
myfile.open("example.txt"); 
for (int i = 0; i<n; i++) { 
    myfile << array[i]; 
    if (i != n - 1){ 
     myfile << ", "; 
    } 
} 
myfile.close(); 
0

당신은 당신이 출력하고자하기 때문에, 당신이 여기 ofstream 사용할 수 있습니다, C++ fstream 클래스를 사용할 수 있습니다 당신은 일부를 교체해야합니다 코드 상태 그것의 시작에서

: ofstream 인스턴스 "COUT은"

ofstream ofs("./sorted_elem.txt", ofstream::out); 

출력하고자 :

당신이 정말로 std::vector 또는 기타를 사용하려면 C++에서
ofs << "Sorted array:" << endl; 

    for(int i=0;i<n;i++) 
    { 
     ofs << a[i] << " , "; 
    } 
    ofs << endl; 
0

숫자 배열을 저장하기위한 멋진 컨테이너. 파일에 배열을 쓰려면 파일을 열고 각 요소를 파일에 모두 써야합니다 (모두 테스트되지 않았습니다).

#include <fstream> 

int main() 
{ 
    std::ifstream fp("output.txt"); 

    // todo: Determine the size of the array or guess it (don't guess it!) 
    unsigned array_size = 5; 
    int data[array_size]; 

    int n = 0; 
    while (fp.good() && n < array_size) fp >> data[n++]; 
} 

을하지만 우리는 C++를 사용하고 있기 때문에, 우리는 std::vector를 사용할 수 있습니다 :

#include <fstream> 

int main() 
{ 
    std::ofstream fp("output.txt"); 
    int data[5]; // todo: fill 

    for (unsitned i = 0; i < 5; ++i) 
    { 
    fp << data[i] << ' '; 
    } 
} 

그리고 다시 읽어

#include <fstream> 
#include <vector> 

int main() 
{ 
    std::vector<int> me(5); // todo: fill 

    std::ofstream fp("output.txt"); 

    for (size_t i = 0; i < me.size(); ++i) fp << me[i] << ' '; 

    // C++11: for (int d : me) fp << d << ' '; 
} 

그리고,

#include <fstream> 
#include <vector> 

int main() 
{ 
    std::ifstream fp("output.txt"); 

    std::vector<int> data; 
    double buf; 
    while (fp >> buf) data.push_back(buf); // no longer need to guess 
} 
1

을 당신이 할 수있는 경우 정렬 된 배열을 0123에 쓴다.이면 파일에 쓸 수 있습니다. C++에서 콘솔은 파일과 동일합니다.

main의 끝이 넣어 :

cout << "Sorted array:" << endl; 
print_array(std::cout, a, n); // Show the results to the user. 

std::ofstream save("array.txt"); // Open a new file (or overwrite). 
print_array(save, a, n); // Save the results for later. 

system("pause"); 
return 0; 
} 

main 전에 정의 할 수있는 새로운 기능에 인쇄 코드를 삽입 :

void print_array(std::ostream & s, int * a, int n) { 
for(int i=0;i<n;i++) 
{ 
    s << a[i] << " , "; 
} 
s << endl; 
} 
2
//Use this code 

#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <fstream> 
using namespace std; 



int main() 
{ 

    int n = 0; 
    cout << "Enter number of element:"; 
    cin >> n; 

    //Data Structure 
    std::vector<int> list; 
    //push back element in vector 
    for(register int i=0;i<n;++i) 
     list.push_back(rand()%10 + 1); 

    //do shuffling before sorting because rand() generates increasing order number 
    std::random_shuffle(list.begin(),list.end()); 

    std::sort(list.begin(),list.end()); 

    ofstream textfile; 
    textfile.open ("E:\\example.txt"); 
    for(size_t i= 0;i<list.size();++i) 
     textfile << list[i] <<" "; 

    textfile.close(); 
} 
+0

''rand' 이전의'srand'에 대해서는 전통적이지만'rand''의 [days] (http://www.open-std.org/jtc1/sc22/wg21/) docs/papers/2013/n3775.pdf)는 번호가 매겨져 있습니다 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3841.pdf). – Potatoswatter

+0

@Potatoswatter 고맙습니다. 도움이되는 문서. –

0

내가 생각의 지금까지는 복사 옵션이 설명되지 않았습니다.

이 코드를 확인하십시오. (귀하의 벡터를 사용할 준비가되었다고 가정하면 건너 뛴다.)

이 예제에서는 C- 배열과 벡터를 사용합니다. 가능할 때마다 나중에 코드를 사용하십시오. 그러나 복사 기능을 위해서는 다음 두 가지가 모두 가능합니다.

#include <iostream>  
#include <iterator>  
#include <vector>  
#include <algorithm>  
#include <fstream>  

int main() { 

    int a[10]={0,1,2,3,4,5,6,7,8,9}; 
    std::vector<int> v; for (int i=0; i<10; ++i)v.push_back(i*10); //0, 10, 20,... 

    std::ofstream fs_a("c:/temp/out_a.txt"); 
    //store space separated 
    std::copy (a, a+sizeof(a)/sizeof(a[0]), std::ostream_iterator<int>(fs_a, " ")); 

    //store coma-separated, as one-liner 
    std::copy (v.begin(), v.end()), std::ostream_iterator<int>(std::ofstream("c:/temp/out_v.txt"), ",")); 
    return 0; 
} 
관련 문제