2016-06-03 7 views
-3

Ich schreibe Code von ACM-Problem, in dem wir die Möglichkeiten der verschiedenen Elemente überprüfen müssen. Es ist ein kleiner Fehler im Code.Fehler in C++ - Code

#include<iostream> 
using namespace std; 
void CheckPossibilities(int numItems, int maxWeights) 
{ 
    if(numItems <= 0 ) 
    { 
     cout << "Invalid Items"; 

    } 

    if (maxWeights <= 0) 
    { 
     cout << "Impossible"; 

    } 

    while(maxWeights > 0) 
    { 
     if(numItems%2==0)    //for even 
     { 
     numItems = numItems/2; 
     maxWeights--; 
     } 
     else 
     { 
      numItems = (numItems -1)/ 2;  //for odd 
      maxWeights--; 
     } 

    } 

    if(numItems <= 1) 
    { 
     cout << "Possible"; 
    } 
    else 
    { 
     cout << "Impossible"; 
    } 

} 

void main() 
{ 

    int numItems1,maxWeights1; 
    cout<<"enter numItems"<<endl; 
    cin>>numItems1; 
    cout<<"maxWeights"<<endl; 
    cin>>maxWeights1; 
    cout<<numItems1 "AND" maxWeights1<<endl; 
cout<<CheckPossibilities(numItems1, maxWeights1); 
} 
+0

"Impossible" (Wortspiel beabsichtigt) – SergeyA

+0

was? sorry, ich habe dich nicht –

+7

* Alle Code-Logik ist korrekt. Es ist ein kleiner Fehler im Code * entweder die ganze Logik ist korrekt * oder * es ist ein Fehler im Code. Du kannst nicht beides haben. – Borgleader

Antwort

1

Ihre Fehler wurden versucht, mehrere Strings in einer Zeile zu streichen, ohne sie in irgendeiner Weise, entweder mit einem < < oder einem + zu verbinden. Sie können auch eine Void-Funktion nicht aufrufen, weil sie versucht, void auszugeben, Sie müssen sie nur aufrufen und die Ausgabe von der Funktion ausführen lassen. Mit Fehler der Haupt sollte fixiert

sein
int main() 
{ 

    int numItems1,maxWeights1; 
    cout<<"enter numItems"<<endl; 
    cin>>numItems1; 
    cout<<"maxWeights"<<endl; 
    cin>>maxWeights1; 
    cout<<numItems1+"AND"+maxWeights1<<endl; 
    CheckPossibilities(numItems1, maxWeights1); 
    return 0; 
} 

Das nächste Mal sehen, was die Leitung der Fehler wird ausgelöst, wenn die Erstellung und diese spezifischen Fehler suchen, weil diese waren wirklich einfache und spezifische Syntaxfehler, die leicht durch eine Google-Suche gefunden werden konnte .

+0

Danke, dass es funktioniert –

-3
void main() 
{ 

    int numItems1, maxWeights1; 
    cout << "enter numItems" << endl; 
    cin >> numItems1; 
    cout << "maxWeights" << endl; 
    cin >> maxWeights1; 
    cout << numItems1 << "AND" << maxWeights1 << endl; 
    CheckPossibilities(numItems1, maxWeights1); 
} 

Sie dies nie tun können: cout<<CheckPossibilities(numItems1, maxWeights1); Standardausgabe cout nehmen, nicht funktioniert. Und auch Sie haben vergessen, < < in cout << numItems1 << "AND" << maxWeights1 << endl; in dieser Form, Ihren Code bauen erfolgreich.

+1

Diese Antwort ist irreführend, das Problem ist nicht, dass cout * keine Funktionen *, das Problem ist, dass der Rückgabewert der Funktion ungültig ist. Und offensichtlich macht das Drucken void nicht viel Sinn Hätte die Funktion einen int oder einen std :: string zurückgegeben, wäre diese Anweisung korrekt gewesen. – Borgleader

+3

Wirklich, 'void main()'? Wenn Sie zeigen wollen, wie ein "main" aussehen soll, holen Sie sich wenigstens die Signatur richtig –