2017-04-02 6 views
-3

beim Lösen einer Frage auf Hackerearth habe ich diesen Fehler, ich habe versucht, eine Lösung zu finden, aber überall dieser Fehler auftritt, wenn 2 verschiedene Datentypen als Operanden verwendet werden in meinem Fall sowohl die Operanden vom Datentyp sama, hier mein voller Codeungültige Operanden der Typen 'double' und 'double' zu binär 'operator%'

#include <iostream> 
#include <math.h> 
using namespace std; 
int main() 
{ 
    int arr[1000]; 
    int n; 
    cin>>n; 
    double ans=1; 
    for(int i =0; i<n ;i++) 
    { 
     cin >> arr[i]; 
     ans=(ans*arr[i])%(pow(10,9)+7); 
    } 
    cout << ans; 
    return 0; 

} 

Antwort

0

Was ist die erwartete Ausgabe von 12.3 % 4.2? Wenn Sie eine Antwort dafür haben, müssen Sie auch Ihre eigene Implementierung rollen, eingebaut in operator% funktioniert nur für Integer-Typen.

Wenn es Ihnen gut geht, aber Ihre Argumente sind Gleitkommawerte, runden/flow/ceil/caste sie. z.B.:

static_cast<uint64_t>(double_value); 
0

Modul Operator (dh operator%) nicht für Gleitpunkte definiert, aber für nur ganze Zahlen ist.

Wie Sie ans als Doppel deklariert haben, wird Ihr Ausdruck ans*arr[i] als ein Doppel ausgewertet. Wenn Sie ihn in int ans ändern, wird die fehlerhafte Anweisung kompiliert (tatsächlich wird die Ganzzahl modulo zurückgegeben).

Verwandte Themen