2010-10-11 2 views
2

я написал следующий код:C++ зсапЕ/Printf массива

int main() { 
    double A[2]; 
    printf("Enter coordinates of the point (x,y):\n"); 
    scanf("%d,%d", &A[0], &A[1]); 

    printf("Coordinates of the point: %d, %d", A[0], A[1]); 
    return 0; 
} 

Он действует как это:

Введите координаты точки (х, у):

3 , 5

Координаты точки: 3, 2673912

Как возможно, что 5 конвертирует в 2673912 ??

+1

Почему вы используете зсап/Printf в том, что должен быть программой C++? –

ответ

8

Вы читаете двойные значения, используя десятичный целочисленный формат (% d). Попробуйте использовать двойной формат (% LF) вместо того, чтобы ...

scanf("%lf,%lf", &A[0], &A[1]) 
+3

Не забудьте 'printf (« Координаты точки:% lf,% lf », A [0], A [1]);' – dgnorton

+0

Спасибо, вот и все! Но можно ли как-то изменить тип обратно в двойное, чтобы иметь возможность работать (+, *, -, /, ...) с этими цифрами? Каков тип% lf? –

+0

@ Radek A [0] и A [1] являются двойными. Нет необходимости «менять тип обратно на двойной». +, *, ... будет просто отлично. % lf, сообщает scanf, что аргумент является «длинным плавающим», то есть двойным. Также обратите внимание на комментарий dgnorton относительно использования% lf в printf –