fehler beim array durchlaufen



  • hier ist meine angabe;

    Lesen Sie maximal 50 Zahlen (Abschluß mit 0) in ein Feld F ein, sowie einen Wert x. Teilen Sie den Inhalt des Feldes F so auf zwei weitere Felder Fg und Fk auf, dass alle Werte, die größer als x sind, in Fg liegen und alle anderen in Fk.

    Geben Sie dann abwechselnd je eine Zahl aus Fg und eine aus Fk aus, solange bis alle Zahlen ausgegeben sind.

    z.B. Eingabe: 3 14 31 7 29 10 18 15 19 0 x=10

    Fg enhält dann 14 31 29 18 15 19 und Fk 3 7 10

    Ausgabe: 14 3 31 7 29 10 18 15 19

    #include<iostream>
    using namespace std;
    
    int main(){
    
    	int a[]= {3, 14, 31, 7, 29, 10, 18, 15, 19, 0};
    
    	int fg[20];
    	int fk[10];
    	int x;
    
    	cin>>x;	
    
    	for(int i = 0, i<sizeof(a); i++){
    		if(a[i]>x){
    			for(int j = 0; j< sizeof(fg); j++){
    		fg[j] = a[i];
    			}
    		}
    		else{
    			for(int k =0; k < sizeof(fk);k++){
    				fk[k] = a[i];
    			}
    
    		}
    	}
    
    	return 0;
    
    }
    

    und es wird auf zeile 13, 15 und 20 fehler geliefert



  • Du hast in Zeile 14 ein Komma verwendet anstatt einem Semikolon.

    Um die Anzahl der Elemente im Array zu ermitteln, verwendest du sizeof.
    sizeof liefert allerdings die Größes des zu verwendeteten Speicherplatzes.

    Verwende hier lieber eine Konstante, die die Anzahl der Elemente beinhaltet.
    Alternativ bei sizeof musst du noch durch die Größes des Speicherplatzes eines Einzelelementes teilen

    sizeof(a)/sizeof(int)
    

    Da sizeof einen unsigned liefert, kommt es zu einer Warnung, weil du mit einem signed int in den Schleifen arbeitest. Nimm hier dann unsigned / unsigned int / size_t


Anmelden zum Antworten