void Calculatrice::fonctionBoutonbase16() { if (base == 2) binHex(); if (base == 8) octHex(); if (base == 10) decHex(); btnclic = true; base = 16; ligne->setValidator(valid2); bouton2->setEnabled(true); bouton3->setEnabled(true); bouton4->setEnabled(true); bouton5->setEnabled(true); bouton6->setEnabled(true); bouton7->setEnabled(true); bouton8->setEnabled(true); bouton9->setEnabled(true); boutonA->setEnabled(true); boutonB->setEnabled(true); boutonC->setEnabled(true); boutonD->setEnabled(true); boutonE->setEnabled(true); boutonF->setEnabled(true); boutonVirg->setEnabled(false); boutonSin->setEnabled(false); boutonCos->setEnabled(false); boutonTan->setEnabled(false); boutonAsin->setEnabled(false); boutonAcos->setEnabled(false); boutonAtan->setEnabled(false); boutonLn->setEnabled(false); boutonLog->setEnabled(false); boutonExp->setEnabled(false); boutonSqrt->setEnabled(false); boutonYRt->setEnabled(false); boutonPi->setEnabled(false); boutonInv->setEnabled(false); boutonInt->setEnabled(false); }
void Calculatrice::fonctionBoutonNot() { if (base == 8) octBin(); if (base == 10) decBin(); if (base == 16) hexBin(); QString nbtxt = ligne->text(); double nombre = nbtxt.toDouble(); nombre = (nombre + 1) * -1; ligne->setText(QString::number(nombre)); if (base == 8) binOct(); if (base == 10) binDec(); if (base == 16) binHex(); }
BinnedData Binner::binHex(int n, double *x, double *y, const int nBins) { // scaling constants double con1 = .25; double con2 = 1. / 3.; double c1 = (double) (nBins - 1); double c2 = c1 / sqrt(3.); int jinc = nBins; int iinc = 2 * nBins; int nBin = (nBins + 20) * (nBins + 20); int *count = new int[nBin]; double *xbin = new double[nBin]; double *ybin = new double[nBin]; // fill bins for(int i = 0; i < nBin; ++i) { count[i] = 0; xbin[i] = 0; ybin[i] = 0; } for (int i = 0; i < n; ++i) { double sx = c1 * x[i]; double sy = c2 * y[i]; int i1 = (int) (sy + .5); int j1 = (int) (sx + .5); double dy = sy - ((double) i1); double dx = sx - ((double) j1); double dist1 = dx * dx + 3. * dy * dy; int m = 0; if (dist1 < con1) { m = i1 * iinc + j1; } else if (dist1 > con2) { m = ((int) sy) * iinc + ((int) sx) + jinc; } else { int i2 = (int) sy; int j2 = (int) sx; dy = sy - ((double) i2) - .5; dx = sx - ((double) j2) - .5; double dist2 = dx * dx + 3. * dy * dy; if (dist1 <= dist2) { m = i1 * iinc + j1; } else { m = i2 * iinc + j2 + jinc; } } ++count[m]; xbin[m] += (x[i] - xbin[m]) / count[m]; ybin[m] += (y[i] - ybin[m]) / count[m]; } nBin = deleteEmptyBins(nBin, count, xbin, ybin); if (nBin > 250) { BinnedData b = binHex(n, x, y, nBins/2); return b; } int *tcount = new int[nBin]; double *xtbin = new double[nBin]; double *ytbin = new double[nBin]; for (int i =0; i < nBin; ++i) { // copy arrays by value tcount[i] = count[i]; xtbin[i] = xbin[i]; ytbin[i] = ybin[i]; } BinnedData bdata(nBin, xtbin, ytbin, tcount); return bdata; }