2016-02-26 2 views
-2

Мой учитель дал мне это, и я получил сообщение об ошибке при добавленииПочему setprecision делает ошибку? и что setprecision

«setprecision(3) <<setiosflags(ios::fixed) » 

Не могли бы вы сказать мне, почему?

#include<iostream> 
#include<math.h> 
#include<iomanip> 
using namespace std; 
main() 
{ 
    float x1,y1,x2,y2,x3,y3,x4,y4,PQ,QR,RS,SP,Keliling; 
    cout << "Masukkan koordinat empat titik berbeda (x,y) :\n"; 
    cout<< "P(x,y):" ; 
    cin >> x1>>y1 ; 
    cout <<"\n" ; 
    cout << "Q(x,y) :" ; 
    cin >> x2>>y2 ; 
    cout <<"\n" ; 
    cout << "R(x,y) :" ; 
    cin>> x3>>y3 ; 
    cout <<"\n" ; 
    cout << "S(x,y) :" ; 
    cin >>x4>>y4; 
    cout <<"\n" ; 

    PQ = sqrt(pow(x2-x1,2)+pow(y2-y1,2)); 
    QR = sqrt(pow(x3-x2,2)+pow(y3-y2,2)); 
    RS = sqrt(pow(x4-x3,2)+pow(y4-y3,2)); 
    SP = sqrt(pow(x1-x4,2)+pow(y1-y4,2)); 

    Keliling = PQ+QR+RS+SP; 
    cout << "Kelilingnya adalah " << Keliling <<" satuan"; 
    «setprecision(3) <<setiosflags(ios::fixed) » 
    return 0 ; 
} 
+1

Ваш преподаватель дал вам это, окружая код кавычками. Вы не знакомы с кавычками? – molbdnilo

ответ

3

sestprecision является манипулятором, который можно передать в cout поток, чтобы определить, сколько цифр после запятой должно отображаться так, например:

cout << setprecision(2) << 0.122312 << endl; 

приведет с

0.12 

это вызывает ошибку, потому что вы не поместили ее в поток, но в никуда - это не утверждение!

+0

, тогда что тогда означает setiosflags (ios :: fixed)? спасибо до –

+1

, что позволяет добавлять флаги формата (например, для UPPERCASE) - [взгляните на эту ссылку] (http://www.cplusplus.com/reference/iomanip/setiosflags/) - Я уверен, что вы найдете там более интересную информацию: –

4

Потому что вы неправильно поняли инструкцию. Вы не можете просто сбросить его на свою линию в коде в конце своей программы и ожидать, что он будет работать магически, и вы не сможете сохранить на нем французские кавычки.

Вам нужно логически мыслить о том, что делает ваша программа, и в каком порядке. Что вы хотите достичь, и как вы можете сказать компьютеру, как помочь вам в этом?

Хорошим началом было бы Googling setprecision, чтобы узнать, что это такое и как его использовать.

Кроме того, у вашей программы есть другие проблемы, такие как отсутствующий тип возврата для main.

+0

IIRC, если тип возврата - 'int', его можно опустить. То же самое с типами параметров 'int'. Итак, 'foo (a, b) {return a + b; } 'действительно. Редактировать: «int» пропуска из функций, кажется, все в порядке, но пропуск параметров не был кошерным. – erip

+0

@erip: Нет, не может. C++ не C. –

+0

http://ideone.com/rdaJan – erip

1

Проблемы с линией является то, что он не является допустимым заявление каст

setprecision заявления должен быть подключен к выходному потоку и так как вы используете стандартный вывод. Корректировка будет выглядеть так:

cout << setprecision(2) << fixed << endl; 

Опять же, как указано в предпочтении, ваша основная функция должна включать в себя тип возврата.

int main() 
{ 
    //code; 
} 
Смежные вопросы