"Prüfungsaufgebe C++" Bitte um Hilfe



  • Hallo miteinander,
    ich hätte dringend eine Frage bezüglich einer Prüfungsaufgebe. Diese lautet wie folgt;

    Gegeben sie ein C String der Maximalen Nutzlänge 32, der nur aus den Zeichen "0" und "1" zusammengesetzt ist. Deser String werde als Dualzahl verstanden. (Bsp "011001100")

    Schreiben Sie folgende Funktionen die auf dieser Zahlendarstellung arbeiten:

    a) Funktion "Komplement": Sie überführt den gegebenen String in die Darstellung der komplementären zahl (1- Komplement)

    Hier ist nun mein Code dazu (komplettes Programm)

    #include <iostream>
    using namespace std;
    
    char string2[32];  //Globale Wariablen sind aber nicht erlaubt 
    char string1[32];
    
    void komplement(char * string1)
    {
    	char *p1=&string1[0], *p2=&string2[0];
    
    	while (*p1 != '\0')
    	{														  
    		if (*p1 = '1') *p2='0';
    		else if (*p1 ='0') *p2='1';
    		p1++;
    		p2++;
    	}
    
    	*p2='\0';
    	cout<<"Das 1 Komplement lautet: "<<string2<<endl<<endl;
    
    }
    
    // Test
    void main()
    {
    
    	char array[]={'1','1','1','0','0'};
    	cout<<"Der String bzw die Dualzahl :";
    
    		for(int a=0;0<5; a++)
    	{
    		cout<<array[a]<<" ";
    	}
    
    	cout<<endl<<komplement(array);
    }
    

    Es dürften Übrigens keine globalen Variablen vorkommen (ich weis aber nicht wie ich das hier machen soll). Das Prgramm sollte zB aus der Zahl 000111001 die Zahl 111000110 ausgeben also das 1 Komplement. Das Funktioneiert aber nicht.

    Wie definiere ich überhaupt einen solchen String und wo liegt der Fehler im Progamm ? (Die Benutzung einer Funktion aus einer C Bibliothek ist nicht erlaubt ". Ich binn ein C++ Einsteiger und bitte Euch dringend um Hilfe

    Danke schon mal im voraus !

    <hume sagt>Bitte Code-Tags verwenden!</hume sagt>



  • Michael_B schrieb:

    Es dürften Übrigens keine globalen Variablen vorkommen (ich weis aber nicht wie ich das hier machen soll).

    Bei deinen Variablen blicke ich nicht ganz durch: Du deklarierst string1 zweimal und initialisierst string2 und den globalen string1 nicht. Ich weiß nicht, wieso du überhaupt die globalen Variablen verwendest.

    Übrigens sind deine Arrays um ein char zu klein (du hast das abschließende '\0' vergessen).

    Michael_B schrieb:

    wo liegt der Fehler im Progamm ?

    [cpp]if (*p1 = '1') *p2='0';[/cpp]
    Fällt dir was auf?

    Außerdem würde ich die Rückgabe von komplement überprüfen (du hast die Funktion als void deklariert, willst in der zweitletzten Zeile aber dennoch einen Rückgabewert).

    Insgesamt hast du viele unnötige Variablen benutzt. Für string1, string2, string1, p1 und p2 reicht eine einzige Variable.

    Michael_B schrieb:

    Gegeben sie ein C String der Maximalen Nutzlänge 32

    Das fehlt noch.


Anmelden zum Antworten