2015-11-04 2 views
1

C++ для моего Введение в CS, конечно, я должен читать что-то вродеКак разделить координаты х и у в

N = 4 
(0.5,1) (0.6,1.5) (0.7,2) (0.8,2.5) 

и распечатать

X := [0.5, 0.6, 0.7, 0.8] 
Y := [1, 1.5, 2, 2.5] 

Мой код до сих пор выглядит

#include <iostream> 
using namespace std; 

int main() 
{ 
    int size; 
    char c; 
    double point; 

    cin >> c >> c >> size; 

    int N = size*2; 

    double *A = new double[N]; 
    for(int i = 0; i < N; ++i) 
    cin >> c >> A[i]; 
    cin >> c; 

    cout << A << endl; 
    return 0; 
} 

Это только что читается в пунктах на данный момент ... но я не могу понять, что такое двойная скобка. И остальная часть проблемы. Любая помощь будет очень признательна, спасибо!

+0

Я думаю, вы это выясните. Просто попробуйте указать полную пару в скобках в каждой итерации цикла. Совет: использование 'std :: vector' вместо сырых массивов и' new' сэкономит вам много проблем в более поздних программах. –

+0

Используйте 'std :: pair'. –

ответ

0

Прежде всего, я думаю, что все предложения использования вектора и Пара C++ stl абсолютно правильна. Однако, учитывая, что mid_code только начинает свой путь программирования, я думаю, что с использованием массивов - хороший способ попрактиковаться. Я думаю, вы могли бы использовать две двойные массивы для хранения информации о точках.

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

int main() 
{ 
    int n; 
    char c; 

    cin >> c >> c >> n; 
    // store x, y coordinates in two separated arrays. 
    double *x = new double[n]; 
    double *y = new double[n]; 
    for (int i = 0; i < n; i++) { 
     // Read x, y coordiantes and ignore the parenthesis and comma. 
     cin >> c >> x[i] >> c >> y[i] >> c; 
    } 

    cout << "X := ["; 
    for (int i = 0; i < n; i++) { 
     cout << x[i]; 
     // Here worth beginner's attention. 
     if (i < n - 1) { 
      cout << ", "; 
     } 
    } 
    cout << "]" << endl; 

    cout << "Y := ["; 
    for (int i = 0; i < n; i++) { 
     cout << y[i]; 
     if (i < n - 1) { 
      cout << ", "; 
     } 
    } 
    cout << "]" << endl; 

    return 0; 
} 
+0

Ничего себе, спасибо! Это прекрасно работает. Спасибо за этот комментарий (здесь стоит внимание новичка). Эта запятая была бы надоедливой. –

2

Вы можете попробовать это у vector и пара в C++. Вы можете узнать vector и pair.

Теперь это нормально, именно то, что вы хотите:

#include <iostream> 
#include <cstdio> 
#include <vector> 

using namespace std; 

int main() 
{ 
    vector < pair <double, double> > v; 

    int N = 4; 
    for (int i=0; i<N; i++) 
    { 
     double x,y; 
     scanf("(%lf,%lf)", &x, &y); 
     v.push_back(pair <double, double>(x,y)); 
     getchar(); 
    } 

    cout<< "X := ["<< v[0].first; 
    for (int i=1; i<N; i++) 
     cout<<" ,"<<v[i].first; 
    cout<< "]"<<endl; 

    cout<< "Y := ["<< v[0].second; 
    for (int i=1; i<N; i++) 
     cout<<" ,"<<v[i].second; 
    cout<< "]"<<endl; 

    return 0; 
} 

Вход:

(0.5,1) (0.6,1.5) (0.7,2) (0.8,2.5) 

Выход:

X := [0.5, 0.6, 0.7, 0.8] 
Y := [1, 1.5, 2, 2.5] 
Смежные вопросы