fragen über array , switch und zeiger



  • Hi leute,
    zuerst möchte ich mich für die zahlreiche hilfe bedanken

    1. wenn ich von tastatur array eingeben möchte und eingabe soll mit 0 beendet, wie kann ich das tun?

    2)wenn ich zum beispiel array definiere int a[20]; und dann von tastatur 10 zahlen eingebe wird dann a wieder die grösse 20 haben oder?

    #include <iostream>
    using namespace std;
    intmain()
    {
    for(intk=4; k>0; k=k-1) {
    switch (k) {
    case 1: cout<< k;
    break;
    case 2: k = k -1;
    case 3: cout<< '-';
    break;
    default: cout<< k + 5;
    }
    }
    return 0;
    }
    

    warum ist die ausgabe 9-- und nicht 9-1?

    1. ich kapiere überhaupt nicht über zeiger und adressen. kennt ihr irgendein deutschsprachige link wo es gut erklhrt ist?

    danke vielmals
    lg nata



    1. wenn ich von tastatur array eingeben möchte und eingabe soll mit 0 beendet, wie kann ich das tun?

    Indem du in einer while-Schleife solange Zahlen einliest bis eine 0 eingegeben wird.
    Dabei muss du darauf achten, dass du nicht mehr Zahlen Eingibst als deine Array lang ist. Verwende am besten vector statt Arrays, die sind Komfortabler. Ein Minibeispiel dazu:

    #include <vector>
    #include <iostream>
    int main() {
    	vector<int> Zahlensammlung; //"Array" erstellen dessen Inhalt ints sind.
    	Zahlensammlung.push_back(10); //10 der "Array" hinzufügen
    	Zahlensammlung.push_back(20); //20 der "Array" hinzufügen
    	Zahlensammlung.push_back(30); //30 der "Array" hinzufügen
    	cout<<Zahlensammlung[1]<<Zahlensammlung[0]<<Zahlensammlung[2];//Ausgabe: 201030
    	return 0;
    }
    
    1. wenn ich zum beispiel array definiere int a[20]; und dann von tastatur 10 zahlen eingebe wird dann a wieder die grösse 20 haben oder?

    In diesem Fall wird a wird immer die Größe 20 haben, die letzten 10 Einträge sind dann irgendwas.

    Die Ausgabe ist 9-- weil du bei k=2 das k um 1 verringerst aber nicht ausgibst(Zeile 9 bei dir) und es fehlt ein break, damit wird "case 3:" abgearbeitet, daher bekommst du dein 2tes '-'.

    So würdest du die Ausgabe 9-1 bekommen:

    int main() {
    	for(int k=4; k>0; k=k-1) {
    		switch (k) {
    			case 1: 
    				cout<< k;
    				break;
    			case 2: 
    				k = k-1; //Hier könnte auch k-- stehen.
    				cout<<k; 
    				break;
    			case 3: 
    				cout<< '-';
    				break;
    			default: cout<< k + 5;
    		}
    	}
    	return 0;
    }
    

    Dabei sollte dir aber klar werden, dass "case 1:" nicht eintreten wird, wenn "case 2:" eingetreten ist.
    Gewöhn dir an Einrückungen zu machen damit kann man den Code viel besser lesen und man endeckt schneller Fehler wie z.B. Klammer vergessen oder break fehlt.


Anmelden zum Antworten