Πώς να αλλάξετε ένα CIN εισόδου σε ένα Επιχείρημα εισόδου γραμμής εντολών σε C ++

ψήφοι
-1

Προσπαθώ να αλλάξετε τον κωδικό μου από βγάλει την είσοδο του χρήστη CIN των x και y να χρησιμοποιούν ένα μόνο όρισμα της γραμμής εντολών με το όνομα του αρχείου. Το αρχείο έχει μια σειρά από διπλασιάζεται για x και y, ένα ζεύγος σε κάθε γραμμή διαχωρίζονται από ένα διάστημα. Καταλαβαίνω πώς να γράψει τον κώδικα, όπως έκανα εδώ, αλλά όταν πρόκειται για εντολή επιχειρήματα της γραμμής, θα μπερδευτείτε. Αν κάποιος θα μπορούσε να προσφέρει κάποιες συμβουλές ή βοήθεια στη μετατροπή του κώδικα, θα ήμουν πολύ ευγνώμων.

1 #include <iostream>
2 #include <vector>
3 #include <cmath>
4 
5 using namespace std;
6 
7 double correlation_r(const vector<double> &x, const vector<double> &y);
8 double mean(const vector<double> &x_obs);
9 double st_dev(const vector<double> &x_obs);
10 void least_squares_regression(const vector<double> &x, const vector<double> &y);
11 
12 int main(){
13     
14     double x;
15     double y;
16     vector<double> x_obs;
17     vector<double> y_obs;
18     
19     cout << Please enter two real number values for x and y: ;
20     
21     while(cin >> x >> y){
22         if (!cin.good()){
23             break;
24         } else {
25             x_obs.push_back(x);
26             y_obs.push_back(y);
27             
28             cout << Please enter two real number values for x and y or a string to terminate: ;
29         }
30     }
31     
32     if(x_obs.size()==0||x_obs.size()==1){
33         cout << The sample was too small to be useful.;
34         return 0;
35     }
36     
37     cout << The sample mean of x is  << mean(x_obs) << endl;
38     cout << The sample mean of y is  << mean(y_obs) << endl;
39     
40     cout << The sample standard deviation of x is  << st_dev(x_obs) << endl;
41     cout << The sample standard deviation of y is  << st_dev(y_obs) << endl;
42     
43     if(st_dev(x_obs)==0.0){
44         cout << The correlation is undefined. << endl;
45     } else if(st_dev(y_obs)==0.0&& st_dev(x_obs)!=0.0){
46         cout << The correlation is undefined. << endl;
47     } else {
48         cout << The sample correlation is  << correlation_r(x_obs, y_obs) << endl;
49     }
50     
51 
52     least_squares_regression(x_obs, y_obs);
53     
54     return 0;
55 }
56 void least_squares_regression(const vector<double> &x, const vector<double> &y){
57 double m;
58 double b;
59 if(st_dev(x)!=0 && st_dev(y)!=0){
60  m=correlation_r(x,y)*(st_dev(y)/st_dev(x));
61  b= mean(y)-(m*mean(x));
62  cout << The least squares regression line is y= << m << x+  << b << endl;
63 } else if(st_dev(x)==0){
64  cout<< The least squares linear regression line is undefined.<< endl;
65 } else if(st_dev(y)==0 && st_dev(x)!=0){
66  cout<< The least squares linear regression line is y= << mean(y) << endl;
67 }
68 return;
69 }
70  
71
72 double correlation_r(const vector<double> &x, const vector<double> &y){
73 double r = 0.0;
74 for(int i = 0; i < x.size(); i++){
75     r += (x[i] - mean(x))*(y[i] - mean(y))/st_dev(x)/st_dev(y);
76 }
77 return r = r / (x.size() - 1.0);
78 }
79
80
81 double mean(const vector<double> &x_obs){
82 double total = 0.0;
83 for (int i = 0; i < x_obs.size(); i++){
84  total += x_obs[i];
85 }    
86 return total/x_obs.size();
87 }
88
89 double st_dev(const vector<double> &x_obs){
90 double x_bar = mean(x_obs);
91 double total = 0.0;
92 for (double elem : x_obs){
93  total += pow(elem - x_bar, 2);
94 }
95 return pow( total/(x_obs.size() - 1.0), .5);
96 }
Δημοσιεύθηκε 07/11/2018 στις 23:51
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Θα πρέπει να αλλάξετε κύριο ορισμό σας

int main(int argc, char ** argv)

argc «Μετράνε επιχείρημα» είναι ο αριθμός των επιχειρημάτων, που χωρίζονται από κενά διαστήματα, θα περάσει στο πρόγραμμά σας

argv«Αξίας επιχείρημα» είναι μια σειρά από χορδές γ που κατέχουν τα επιχειρήματά σας. argv[0]είναι πάντα yor καλώντας προγράμματα δρόμο.

Έτσι για να κάνουμε ό, τι θέλετε να επιτύχετε, αλλάξτε κύρια σας και να λάβει τα επιχειρήματα της γραμμής εντολών για τη δημιουργία ενός fstreamή ifstreamαντικείμενο το οποίο λειτουργεί λίγο πολύ σαν πρότυπο σας istreamφίλο cinαπλά ότι διαβάζει από αρχεία αντί τηςstdin

EDIT: Θα πρέπει να πω ότι δεν μπορεί να υπερφορτώσει κύρια σας όπως σας παρακαλώ, αλλά ότι αυτοί είναι οι δύο υπογραφές για το πρότυπο κύρια διαδικασία είναι εκεί.

Απαντήθηκε 07/11/2018 στις 23:59
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more