2

さて、私は減算や乗算など、プログラムでいくつかの基本的な操作を実行しようとしています...クラスの「get」メソッドとsetメソッドを定義しました....しかし、乗算操作をdoubleとintに適用すると、次のような値を取得します:1.7e-3.17...。

ここに私のコードがあります:スペイン語ですが...私はあなたが理解すると確信しています

主要:

#include <cstdlib>
#include <iostream>
#include "Tienda.h"
#define numeroClientes 2
using namespace std;

int main(int argc, char *argv[])
{
Cliente arregloClientes[numeroClientes];
string name;
int day, amount,i;
Tienda tienda = Tienda();


for(i=0; i<numeroClientes; i++){
system("cls");
cout<<"Ingrese el nombre del cliente: ";
cin>>name;
arregloClientes[i].setNombre(name);
cout<<"Ingerese numero de garrafones: ";
cin>>amount;
arregloClientes[i].setNumeroGarrafones(amount);
cout<<"Ingrese el dia de la compra"<<endl;
cout<<"0; Lunes 1; Martes 2; Miercoles 3; Jueves 4; Viernes: ";
cin>>day;
arregloClientes[i].setDia(day);
}

//Calculo del monto a pagar
for(i=0; i<numeroClientes; i++){
tienda.calcular(arregloClientes[i]);       
}

system("cls");
//Impresion de los datos
for(i=0; i<numeroClientes; i++){
cout<<"------------------------"<<endl;
arregloClientes[i].imprimir();       
}
cout<<"------------------------"<<endl;
tienda.imprimir();

cout<<"\n\n";
system("PAUSE");
return EXIT_SUCCESS;

}

class Cliente {

  /* Atributos privados */
  private:
    string nombre;
    int numeroGarrafones;
    int dia; // 1 - 5 
    double totalCancelar;

    /* Metodos publicos */
    public:

     string getNombre();
     int getNumeroGarrafones();
     int getDia();         
     double getTotalCancelar();
     void setNombre(string nomb);
     void setNumeroGarrafones(int nG);
     void setDia(int d);
     void setTotalCancelar(double tC);
     void imprimir();
     string imprimirDia();

  }; // fin de clase Cliente

問題はここにあります:

void Tienda::calcular(Cliente persona){
 double aux,total;
  int garrafones= persona.getNumeroGarrafones();;

arregloDias[persona.getDia()]=  arregloDias[persona.getDia()] +                     persona.getNumeroGarrafones(); 

aux = garrafones * precioVenta - garrafones * precioCosto;                   

ganancia = ganancia + aux;

total = garrafones * precioVenta;

persona.setTotalCancelar(total);

 } // fin de calcular

 This one: 
aux = garrafones * precioVenta - garrafones * precioCosto;  

私が前に言ったように、操作は乗算...生成された数

誰もが何が起こるか知っていますか?

4

2 に答える 2

0

計算する前に「tienda」を使用しているのは、コンストラクターを呼び出すときだけです。そのコンストラクターでprecioVentaとprecioCostoを初期化しているかどうかを確認する必要があります。これらは固定値であり、グローバル変数でない場合は「Tienda」クラスに属していると思います(その場合はとにかく初期化する必要があります)。

于 2012-11-29T16:59:57.433 に答える
0

それは int * double の問題ではなく、ユニット化されたメンバーの問題だと思います。

対象の行に移動します。

aux = garrafones * precioVenta - garrafones * precioCosto;  

その行の前に、次のコードを追加します。

printf("--> %d %.6g %.6g\n", ガラフォン, precioVenta, precioCosto);

Tienda オブジェクトのメンバー インスタンスがユニティライズされており、「ランダムな」値が含まれていることがわかると思います。

于 2012-11-29T16:39:15.830 に答える