Kode C++ untuk Membaca dan Menghitung Data dalam File


Karena suatu kebutuhan, penulis diminta membuatkan kode program bahasa C++ untuk membuka file dan menghitung nilai rata-rata data yang ada di dalamnya.

Dimisalkan data tersebut tersimpan dalam file data.txt, terdiri dari dua kolom data yaitu data sumbu x dan y seperti di bawah ini:

File data.txt
0 0.01
1 0.1
2 0.19
3 0.28
4 0.37
5 0.46
6 0.55
7 0.64
8 0.73
9 0.82
10 0.91
11 1
12 1.09
13 1.18
14 1.27
15 1.36
16 1.45
17 1.54
18 1.63
19 1.72

Tugas kode program itu adalah menghitung nilai rata-rata data kolom sumbu y.

Dengan menggunakan library fstream dan nama file diorientasikan sebagai input argv untuk mempermudah penggunaan program.

Disebabkan pembacaan menjadi tipe data string, untuk keperluan perhitungan, diperlukan konfersi

Berikut ini adalah kode program untuk menyelesaikan kasus diatas.

#include <iostream> 
#include <fstream> 
#include <string> 
#include <stdio.h> 
 
using namespace std; 
 
int getNumData(string a) 
{ 
 int num=0; 
 string line; 
 ifstream myfile(a); 
 if (myfile.is_open()){ 
  while (myfile.good()) 
  { 
    getline(myfile,line); 
    if(line.length()>0)num++; 
  } 
  myfile.close(); 
 } 
 return num; 
} 
 
int main(int argc, char *argv[]) 
{ 
 double *x,*y; 
 bool PASSED=true; 

 //opening and initialize data 
 int n=getNumData(argv[1]); 
 if(n==0)PASSED=false; 

 string line; 
 x=new (nothrow)double[n]; 
 y=new (nothrow)double[n]; 
 ifstream myfile(argv[1]); 
 if (myfile.is_open()){ 
  int i=0; 
  while (myfile.good()) 
  { 
   getline(myfile,line); 
   if(line.length()>0){ 
    string word = ""; 
    int j=0; 
    for (auto a : line) 
    { 
       if (a == ' ') 
       { 
        if(j==0){ 
         x[i]=atof(word.c_str()); 
        }else{ 
         y[i]=atof(word.c_str()); 
        } 
        word = ""; 
        j++; 
       }else{ 
        word = word + a; 
       } 
    } 
    if(j==0){ 
       x[i]=atof(word.c_str()); 
    }else{ 
       y[i]=atof(word.c_str()); 
    } 
    i++; 
   } 
  } 
  myfile.close(); 
 }else cout << "Unable to open file"; 

 //calculate 
 if(!PASSED)return 0; 

 double sum=0; 
 for(int i=0;i<n;i++){ 
  sum+=y[i]; 
 } 
 double ave=sum/n; 
 cout<<"Average y : "<<sum<<endl; 

 return 0; 
} 

Untuk kompilasinya penulis menggunakan compiler MinGW, yang dijalankan pada Operating System (OS) Windows 8.

Dan output hasil perhitungannya adalah sebagaimana terlihat dalam gambar paling atas.

Komentar



Postingan populer dari blog ini

Apps Script untuk Cetak Sertifikat

Jasa Penjadwalan Semester, UTS dan UAS Perguruan Tinggi menggunakan Google Sheet

Peringatan: Aksi Penipuan Skimming Melalui Aplikasi Android M-Pajak

Checking Data yang Belum Dimasukkan dalam Daftar Menggunakan Query Google Sheet

Menambahkan Random Key sebagai ID Pembeda di Google Sheet dengan Apps Script

Menyikapi Ucapan AI Pejabat

Generate Karakter Acak dan Menempatkannya di Sel Google Sheets dengan Apps Script

Menyembunyikan Failed Load Images di Blogger

Kebodohan Karyawan Menyalahkan Sistem

Menambahkan Konfirmasi Email di Google Form