Hausaufgaben C++ Zeiger



  • Hey leute ich habe zwei Datein bekommen und soll damit eine Hausaufgabe erstellen doch leider fehlt mir aktuell jeglicher Bezug dazu und ich weis auch gar nicht wie ich da ran gehen soll... Vll könnt ihr mir weiter helfen stehe echt aufn Schlauch

    HILFE 🙂

    #include <iostream>
    
    #define LINEWIDTH 50
    
    using namespace std;
    
    /*	Bei dem Array rawData (in der Datei rawdata.cpp" die per include oben eingebunden wird) handelt 
    	es sich um eine Struktur die den Speicher mit 1350 char Werten beschreibt.
    	In rawData ist ein Text gespeichert. Die einzelnen Zeilen des Textes sind genau 50 Zeichen lang.
    	Sie sollen nun mit zwei Zeigern den Inhalt des Arrays auf dem Bildschirm ausgeben.
    	Der erste Zeiger soll auf den Beginn der aktuellen Zeile innerhalb von rawData zeigen.
    	Der zweite Zeiger soll auf den Buchstaben zeigen, den Sie aktuell ausgeben wollen.
    
    	Kleine Starthilfe:
    		Sie sollten das Array rawData mit zwei Schleifen verarbeiten. Die Zählvariable der äußeren Schleife könnte
    		der Zeiger sein, der auf die aktuelle Zeile zeigt und die Abbruchbedingung könnte beinhaltet, den Zeiger nicht
    		über die Grenzen des Arrays rawData hinaus wachsen zu lassen.
    
    	Hinweis:
    		- Die Aufgabe muss durch die Verwendung von Zeigern gelöst werden
    		- Sie werden an verschiedenen Stellen um typecasts nicht herumkommen
    		- Machen Sie sich eine bildliche Vorstellung von Zeigern und Daten um
    		  auf die Lösung zu kommen.
    		- Diese Datei und die rawdata.cpp sollten sich im gleichen Verzeichnis befinden
    		  um Probleme beim include zu vermeiden
    
    */
    
    int main() 
    {
    
    	char * line;	//Sie können auch eigene Zeiger verwenden
    	char * letter;
    
    	system("pause");
    	return 0;
    }
    

    Das ist die erste Datei mit Aufgabenstellung und hier ist die zweite Datei:

    unsigned char rawData[1350] = {
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x6F, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x23, 0x23, 0x20, 0x20, 0x23,
    	0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x23, 0x23, 0x23, 0x20, 0x20,
    	0x20, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x23, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x23,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20,
    	0x20, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
    	0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23,
    	0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x23, 0x23, 0x20, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x6F, 0x23, 0x23, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x23, 0x23, 0x20, 0x23,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x20, 0x23, 0x23, 0x20,
    	0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20
    };
    

    Bitte bin echt verzweifelt.... 😞

    Mfg Nivelas



  • Wenn die das Zweidimensionale Schwierigkeiten bereitet: gehe erstmal eindimensional ran. Laufe in einer Schleife über das Array und gib die einzelnen Werte hinterienander aus.



  • In dem Programm gibt es einen umfangreichen Kommentar dazu, wie du herangehen sollst. Da ist gar keine Idee ein bisschen zu wenig. Sag wenigstens ab wo du es nicht mehr verstehst oder so.



  • wenn ich ehrlich bin hab ich das Prinzip der Zeiger hierfür bzw auch generell noch nicht ganz verstanden ....

    habe jetzt an etwas wie

    int rawdata[50];
    	 int i;
    	if(i=0, i<50 ,i++)
    

    gedacht und in die IF schleife jetzt einfach ein Cout.... aber ich denke das wird nicht an das gewünschte ergebniss herankommen ...


  • Mod

    Nivelas schrieb:

    if(i=0, i<50 ,i++)
    

    gedacht und in die IF schleife

    Ich glaube, hier fehlt noch viel mehr als nur Zeiger. Arbeite nochmal die letzten paar Kapitel nach. Das hat ja keinen Sinn sich hier mit der Aufgabe zu beschäftigen, wenn du nicht einmal einfachste Schleifen hin bekommst.

    P.S.:
    www.if-schleife.de



  • Oh Gott, falls du nicht mehr in der Schule bist belege bitte einen anderen C++ Kurs. 😮



  • Nivelas schrieb:

    habe jetzt an etwas wie

    int rawdata[50];
    	 int i;
    	if(i=0, i<50 ,i++)
    

    gedacht...

    Zeile 1: Wozu das? Es gibt schon ein Array namens rawData (mit 1350 unsigned-char-Einträgen), wozu soll dieses hier gut sein?
    Zeile 3: Das soll wohl eine for-Schleife werden? Syntax nochmal nachschlagen...

    Und dann erstmal nachdenken, was das Programm überhaupt machen soll. Zeiger "zeigen" wirklich, du kannst den Algorithmus mit zwei Fingern in dem Array rawData nachspielen ...



  • In der Aufgabenstellung ist die Lösung schon im Detail beschrieben 😕



  • Also um diese Jahreszeit hätte ich ja einen Tannenbaum o.ä. erwartet, aber nicht:

    http://ideone.com/6D8Cp6



  • So eine Verschwendung, denkt doch auch mal an die Umwelt!
    http://ideone.com/gZT5Qn



  • SeppJ schrieb:

    P.S.:
    www.if-schleife.de

    Lieber SeppJ, in C++14 könnte es if-Schleifen geben, siehe http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3587.pdf, Seite 3 oben



  • if-schleife schrieb:

    Lieber SeppJ, in C++14 könnte es if-Schleifen geben, siehe http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3587.pdf, Seite 3 oben

    Hoffentlich nicht. Auch wenn es prinzipiell nützlich wäre, die Syntax ist furchtbar.

    if for (int i = 0; i < 10; ++i)
      if (foo(i)) break;
      else bar(i);
    {
      baz(i);
    }
    else barf(i);
    

    Klar soweit?



  • Die Sprache sinnlos zu verkomplizieren, nur weil der Autor auf ein bool -Flag verzichten will, das jedem Programmierer (nicht nur C++) sofort klar wäre... Als ob C++ keine wirklichen Probleme hätte.

    Bei manchen Proposals kann man sich echt nur fragen und beten, dass sie nie umgesetzt werden. 🙄



  • for-else in Python find ich ganz nett, aber das if-for hier gefällt mir auch nicht. 😉



  • For allem löst es ein Problem das es gar nicht gibt *.
    Läst sich alles sauber mit return lösen. Ganz ohne goto, Code-Wiederholung oder pösem Overhead wegen unnötiger Kopien.

    *: OK, ich hatte auch schon manchmal Fälle wo es mit einem for-else schöner gegangen wäre. Aber minimal schöner, und diese Fälle sind - bei den Programmen die ich so schreibe - sehr sehr selten.

    @Nexus
    Ich würde da auch keine bool -Flags dafür verwenden wollen. Finde ich grässlich. (Ich verwende generell so wenig "mutable" Variablen wie möglich - veränderlicher State ist so ein Hirnverbieger.)
    Aber es gibt ja eben noch return , also kein Grund irgendwo irgendwelche Flags zu verwenden.


Anmelden zum Antworten