#include "iostream" #include "fstream" #include "iomanip" #include "stdio.h" #include "stdlib.h" #include "cmath" #include "string.h" #include "sstream" #include "vector" #define ADD "-a" #define MINUS "-m" #define RANGE "-r" #define INTERVAL "-i" #define OUTFILE "-o" #define BOLDRED "\033[1m\033[31m" #define RESET "\033[0m" #define MAX 1e+30 using namespace std; typedef vector _1dArray; int xyz_add_minus(char* filename1, char* filename2, char* outname, double* range, double* interval, int caltype) { string temp_str; stringstream temp_ss; double xmin,xmax,ymin,ymax,dx,dy; double x,y,data; xmin = *range; xmax = *(range+1); ymin = *(range+2); ymax = *(range+3); dx = *interval; dy = *(interval+1); int M = int (xmax - xmin)/dx + 1; int N = int (ymax - ymin)/dy + 1; double** data1 = new double* [M]; for (int i=0;i> x >> y >> data) { data1[int ((x - xmin)/dx)][int ((y - ymin)/dy)] = data; } else cout << "wrong enterence of " << filename1 << ": " << temp_str << endl; } } for (int i = 0; i < M*N; i++) { getline(infile2,temp_str); if (*(temp_str.begin()) == '#') continue; else { temp_ss.clear(); temp_ss << temp_str; if (temp_ss >> x >> y >> data) { data2[int ((x - xmin)/dx)][int ((y - ymin)/dy)] = data; } else cout << "wrong enterence of " << filename2 << ": " << temp_str << endl; } } infile1.close(); infile2.close(); ofstream outfile(outname); if (caltype==1) { for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { outfile << xmin+dx*i << " " << ymin+dy*j << " " << setprecision(16) << data1[i][j] - data2[i][j] << endl; } } } else if (caltype==2) { for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { outfile << xmin+dx*i << " " << ymin+dy*j << " " << setprecision(16) << data1[i][j] + data2[i][j] << endl; } } } else { cout<<"error - wrong caltype"<> temp_x >> temp_y >> temp_data) { x.push_back(temp_x); y.push_back(temp_y); data.push_back(temp_data); } else cout << "wrong enterence of " << filename1 << ": " << temp_str << endl; } } while(getline(infile2,temp_str)) { if (*(temp_str.begin()) == '#') continue; else { temp_ss.clear(); temp_ss << temp_str; if (temp_ss >> temp_x >> temp_y >> temp_data) { x.push_back(temp_x); y.push_back(temp_y); data2.push_back(temp_data); } else cout << "wrong enterence of " << filename2 << ": " << temp_str << endl; } } infile1.close(); infile2.close(); ofstream outfile(outname); if (caltype==1) { for (int i = 0; i < data.size(); i++) { outfile << x.at(i) << " " << y.at(i) << " " << setprecision(16) << data.at(i) - data2.at(i) << endl; } } else if (caltype==2) { for (int i = 0; i < data.size(); i++) { outfile << x.at(i) << " " << y.at(i) << " " << setprecision(16) << data.at(i) + data2.at(i) << endl; } } else { cout<<"error - wrong caltype"<