2017-07-23 4 views
-5

Hey Leute ich versuche, einen C++ Code zu schreiben, um die Anzahl der gesetzten Bits in einem Array von Zahlen zu überprüfen.brauche Hilfe in einfachen C++ Code

zum beispiel zuerst ich frage wie viele zahlen ich will und dann ich diese nummern in einem array dann ich loop durch jede nummer im array und wandeln sie in binär. Wenn alle Bits für eine Zahl gesetzt sind, muss ich JA drucken und wenn nicht, dann NEIN. z. B. 7 ist 111, daher sind alle Bits gesetzt, also drucke ich JA.

aber ich bekomme einen Kompilierfehler, der ist: 'x' wurde in diesem Bereich nicht deklariert und erwartet, oder; vor {sowohl die Fehler in Zeile 9, die das hier ‚int checkbit(x){‘ ist mein Code

#include <iostream> 
#include <conio.h> 
#include<math.h> 
#include<stdlib.h> 

using namespace std; 
int b[20],c[50]; 

int checkbit(x){ 
    int z, i=0; 
    while(x>1){ 
     if(x==1) 
     c[i]==x; 
     z=x%2; 
     x=x/2; 
     c[i]=z; 
     ++i; 
    } 
    while(i>=0){ 
     z= c[i]; 
     if(z==0) 
     return -1; 
     --i; 
    } 
    return 0; 
} 

int main(void){ 
    int a; 
    cout<<"Enter the quantity of numbers you want"; 
    cin>>a; 
    cout<<"Now Enter all the numbers you want"; 
    for(int i=0;i<a;i++) 
    cin>>b[i]; 
    cout<<"Checking for set bits please wait"; 
    for(int i=0;i<a;i++){ 
     if(checkbit(b[i])==-1) 
     cout<<"NO"; 
     cout<<"YES"; 
    } 
    return 0; 
} 

mir bitte sagen, was los ist, und mein Code auch richtig

+0

Nur um zu klären, ist diese Zeile 9 'x = x/2;'? Was ist auch der Zweck dieses 'if (x == 1) c [i] == x;' Wollen Sie die Werte vergleichen oder zuordnen? – PeskyPotato

+0

Zeile Nr. 9 ist das "int checkbit (x) {" und wie für wenn (x == 1) c [i] == x; Ich möchte die while unterbrechen, wenn x 1 erreicht, weil ich neben dem Modul auch x durch 2 dividiere. Wenn x am Ende 1 erreicht, möchte ich das im Array speichern und die while-Schleife durchbrechen –

+0

Nun, in diesem Fall @ Mikael-faust wie andere unten erwähnt haben sollte es "int checkbit (int x) {'. Das erste "int" ist der Rückgabetyp der Methode und das zweite "int" ist der Typ des übergebenen Parameters. – PeskyPotato

Antwort

2

Die Parameter in einer Funktion Signatur sind sollen ihre Typen vor sich haben.

Also, das:

int checkbit(x)

eigentlich sein sollte:

int checkbit(int x)

Es sei denn, Sie dies tun, kann der Compiler nicht die Deklaration von x im Rahmen checkbit finden, und daher der Fehler.

0

Ihnen fehlt eine Typdeklaration für Ihren Funktionsparameter. Sie haben eine Typdeklaration für die Rückgabe, aber nicht für den Parameter.

Linie 9 sollte lauten:

int Prüfbit (int x) {

Das Ihre Compiler-Fehler beheben.

+0

ja genau ich kann nicht glauben, dass ich einen so dummen Fehler gemacht habe, vielen Dank guysss !!!! um so schnell zu antworten –