所以,这是我的问题,我的“cene”总是不是一个真实的数字,它总是有一个字符'e'...我不知道我做错了什么。这是我的代码:
#include <iostream> //Vkljucitev knjiznice iostream
#include <string> //Vkljucitev knjiznice string
#include <stdlib.h> //Vkljucitev knjiznice stdlib.h
#include <windows.h> //Vkljucitev knjiznice windows.h
using namespace std; //Uporaba std::
//Razred za datum, kasneje vsiljen
class datum
{
public:
int leto;
int mesec;
int dan;
};
//Razred za racun
class racun
{
private:
string naslov; //Rezervacija string, za ime racuna
float cena[500]; // Skupna cena na računu
int i; // Števec
public:
datum izdaje; //datum izdaje za racun
void nastavi_izracunaj_izpisi() //Podprogram za nastavitev, izracun in izpis racuna
{
//_______________________________________________________________________________________________________________
cout<<"Podaj naslov racuna"<<endl;
getline(cin,naslov);
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
izdaje.dan = rand() % 30 + 1; //Dan
izdaje.mesec = rand() % 12 + 1; //Mesec
izdaje.leto = rand() % 30 + 1985; //Leto
i = rand() % 99 + 1; // Koliko računov smo imeli.
int produkti; //rezervacija za vse produkte
produkti = i + rand() % 199 + 1; //Koliko produktov smo imeli
cout<<"Produkti= "<<produkti<<endl;
float produkt1[500]; //cena prvega produkta
float produkt2[500]; //cena drugega produkta
int a; //števec produktov
a=0; //ki ga nastavimo na nič
//_________________________________________________________________________________________________________________
//Zanka za pridobitev dveh produktov
do
{
produkt1[a] = rand() % 199 +1;
produkt2[a] = rand() % 199 +1;
a=a+1;
}while(a!=produkti);
//Kateri produkt naj izpise
int b; //kateri produkt bo izpisalo
b = rand() % 199 +1;
//____________________________________________________________________________________________________________________
//Zanka za pridobitev cene
int h;
h=0;
do
{
cout<<"Cena: "<<cena[h]<<endl;
cout<<"Produkt1: "<<produkt1[b]<<endl;
cout<<"Produkt2: "<<produkt2[b]<<endl;
cout<<"H: "<<h<<endl;
system("PAUSE");
cena[h]=produkt1[b] + produkt2[b];
h=h+1;
}while(h!= produkti);
//______________________________________________________________________________________________________________________
//DDV
float ddv = 1.12797374897; //DDV vrednost
float cena2; //DDV cene
float cenaddv; //cena z DDV-jem
cena2=cena[h]/ddv; //izracun za DDV cene
cenaddv=cena[h]+cena2; //izracun za ceno z DDV-jem
//________________________________________________________________________________________________________________________
//izpis
cout<<naslov<<endl<<endl;
cout<<endl<<"Dan: "<<izdaje.dan<<endl<<"Mesec: "<<izdaje.mesec<<endl<<"Leto: "<<izdaje.leto<<endl;
cout<<"Produkt1 = "<<produkt1[b]<<"$"<<endl<<"Produkt2 = "<<produkt2[b]<<"$"<<endl;
cout<<"Kupili ste: "<<produkti<<" produktov"<<endl; //izpis za produkte
cout<<"Cena brez ddv: "<<cena[h]<<"$"<<endl<<"DDV: "<<cena2<<"$"<<endl<<"Cena z DDV: "<<cenaddv<<"$"<<endl;
}
};
//Glavni program
int main()
{
racun nekaj; //Rezervacija objekta
nekaj.nastavi_izracunaj_izpisi(); //Izpis metode
system("PAUSE"); //Zamrzni zaslon
return 0; //Koncaj program
}
有人可以解释我该怎么办吗? 附:该计划在斯洛文尼亚语。
修改
我解决了......而不是这样做:
//Zanka za pridobitev cene
int h;
h=0;
do
{
cout<<"Cena: "<<cena[h]<<endl;
cout<<"Produkt1: "<<produkt1[b]<<endl;
cout<<"Produkt2: "<<produkt2[b]<<endl;
cout<<"H: "<<h<<endl;
system("PAUSE");
cena[h]=produkt1[b] + produkt2[b];
h=h+1;
}while(h!= produkti);
我这样做了:
cena = produkti*(produkt1[b]+produkt2[b]);
答案 0 :(得分:2)
您已将cena
声明为浮点数。您在输出中看到的e
(例如1.035e2
)是科学记数法的一部分。
如果需要以特定格式输出浮点数,请查找C ++标准标题iostream
和iomanip
中定义的操作以控制格式。这个页面也可能是一个好的开始:http://en.cppreference.com/w/cpp/io/manip
编辑:另外,看看这个循环:
do
{
cout<<"Cena: "<<cena[h]<<endl;
cout<<"Produkt1: "<<produkt1[b]<<endl;
cout<<"Produkt2: "<<produkt2[b]<<endl;
cout<<"H: "<<h<<endl;
system("PAUSE");
cena[h]=produkt1[b] + produkt2[b];
h=h+1;
}while(h!= produkti);
看来这是写入cena[]
的第一段代码,但在向其写入新值之前会打印cena[h]
。因此,首先cout
会在将cena[]
设置为新值之前写出{{1}}中未初始化的值。
这似乎是不正确的逻辑。您确定要在计算之前打印出该值吗?