• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[C++] Problem mit Formatierung und Ausgabe

Status
Für weitere Antworten geschlossen.

gollum1990

Neues Mitglied
Hallo liebes Forum,

ich habe ein kleines Programm geschrieben namens Rührei, dabei geht es um die Abläufe, ich habe das Programm mittels PAP gemacht.

Der Compiler Dev kompilt einbandfrei nur die Ausgabe ist sonderlich schlecht:

Ausgabe:
-Pfanne herausgeholt fuer Person [Fehlender Teil] $eingabe$

Aber der Haken ist, keine richtige Ausgabe und die Formatierungen werden nicht alle gesetzt. Hier der Programmcode:

PHP:
#include <cstdlib>
#include <iostream>
#include <process.h>

using namespace std;

int eingabe;

const char* pfanne_schuessel_herausholen(const char* person) {
    return cout << "\n -Pfanne herausgeholt fuer Person ", person, "\n";
}
const char* eier_aufschlagen(const char* person) {
    return cout << "\n -Eier aufgeschlagen fuer Person ", person, "\n";
}
const char* eier_in_schuessel_ruhren(const char* person) {
    return cout << "\n -Eier in Schuessel geruhrt fuer Person ", person, "\n";
}
const char* salz_holen(const char* person) {
    return cout << "\n -Salz herausholen fuer Person ", person, "\n";
}
const char* pfeffer_holen(const char* person) {
      return cout << "\n -Peffer herausholen fuer Person ", person, "\n";
}
const char* gewurze_mischen_und_zu_eier_geben(const char* person) {
      return cout << "\n -Gewuerze mischen und zu Eier geben fuer Person ", person, "\n";
}
const char* alles_in_die_pfanne_geben(const char* person) {
      return cout << "\n -Alles in die Pfanne geben fuer Person ", person, "\n";
}
const char* rueheren_dabei_herd_anstellen(const char* person) {
      return cout << "\n -Ruerhen und den Herd anstellen fuer Person ", person, "\n";
}
const char* warten(const char* person) {
      return cout << "\n -Warten bis alles fertig ist fuer Person ", person, "\n";
}
void doit(void *dummy) {
        pfanne_schuessel_herausholen((const char*)eingabe);
        eier_aufschlagen((const char*)eingabe);
        eier_in_schuessel_ruhren((const char*)eingabe);
        salz_holen((const char*)eingabe);
        pfeffer_holen((const char*)eingabe);
        gewurze_mischen_und_zu_eier_geben((const char*)eingabe);
        alles_in_die_pfanne_geben((const char*)eingabe);
        rueheren_dabei_herd_anstellen((const char*)eingabe);
        warten((const char*)eingabe);
        _endthread();
}

int main(int argc, char *argv[])
{
    cout << "\rWie viele Personen wollen Ruehreier??\n";
    cin >> eingabe;
    
    do {
        _beginthread(doit, 0, NULL);
        eingabe--;
    } while(eingabe > 0);
    
    cout << "\rProgramm beenden\n";
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Und den PAP findet ihr im Anhang dieses Postings.

Vielen Dank für eure vorraussichtliche Hilfe.

MFG gollum1990
 

Anhänge

  • Hausaufgabe_AE_Rührei_2.jpg
    Hausaufgabe_AE_Rührei_2.jpg
    41,8 KB · Aufrufe: 13
Werbung:
sry ich bin echt ein Anfänger in c++, aber ich glaube das
Code:
cout << "\n -Pfanne herausgeholt fuer Person ", person, "\n";
muss so sein
Code:
cout << "\n -Pfanne herausgeholt fuer Person "<< person<<"\n";
 
Ich würde es so machen:
Code:
cout <<"\n Panne herausgeholt für Person" << person << endl;
endl erzeugt auch einen Zeilenumbruch. Mit \n tuts natürlich auch.
 
Werbung:
Hallo,

da sind ein paar Fehler drinnen, die zwar von der C++ Syntax erlaubt sind aber nicht wirklich das gewünschte Ergebnis liefern.

Code:
[COLOR=#000000][COLOR=#007700]const [/COLOR][COLOR=#0000bb]char[/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000bb]pfanne_schuessel_herausholen[/COLOR][COLOR=#007700](const [/COLOR][COLOR=#0000bb]char[/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000bb]person[/COLOR][COLOR=#007700]) { 
    return [/COLOR][COLOR=#0000bb]cout [/COLOR][COLOR=#007700]<< [/COLOR][COLOR=#dd0000]"\n -Pfanne herausgeholt fuer Person "[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]person[/COLOR][COLOR=#007700], [/COLOR][COLOR=#dd0000]"\n"[/COLOR][COLOR=#007700]; 
}[/COLOR][/COLOR]
cout hat als Rückgabewert einen Output-Stream, nicht char*. Das funktioniert, weil du den , Operator statt dem << Operator verwendet hast. Der , Operator wird von Links her abgearbeitet, als Rückgabewert bekommst du also den Pointer auf "\n".

person, "\n" sind hier zwei leere Anweisungen. Ansonten würde das Programm auch mit einem Segmentation Fault abstürzen. Denn du castest einen Integer zu einem Pointer. Das heißt der Pointer zeigt hinterher auf die Adresse, die eingabe als Wert hatte.

Lass person als int und das ganze funktioniert.

N43
 
Das Problem besteht darin, ich musste die ganze const char* mist machen, weil der Compiler mir Fehler erzeugt. Wenn ich dann int benutze, funktioniert das mit Rückgabe nicht, aber ich schau mir mal mein Programm an und folge euren Ratschlägen. Ergebnisse sag ich euch dann später. Vielen Dank.
 
Das Problem besteht darin, ich musste die ganze const char* mist machen, weil der Compiler mir Fehler erzeugt. Wenn ich dann int benutze, funktioniert das mit Rückgabe nicht, aber ich schau mir mal mein Programm an und folge euren Ratschlägen. Ergebnisse sag ich euch dann später. Vielen Dank.
Der , Operator verursacht die falsche Ausgabe, weil dann nichts mehr an cout weitergeleitet wird. Nimm als Rückgabewert void (und schmeiß das return raus), du brauchst ja davon nichts zur Weiterverarbeitung.


N43
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben