Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Maininhalt vs Funktionen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.02.2019, 13:39 Uhr
Hubes



Guten Tag zusammen,

ich hoffe, mein Belang ist hier richtig angelegt.
Falls nicht, bitte ich um Nachsicht und Berichtigung dessen.

Informationen:
OS: Windows 10
IDE: Visual Studio 2017
Kenntnisstand: Anfänger

Ich hatte mich der öffentlich zugänglichen Aufgabe einen Schaltjahresermittler zu Programmieren angenommen.

Die Ausgabe erfolgt über die Konsole.

Erstelle ich das Programm allein in der C++ "main-Funktion" gelingt die Bearbeitung der Benutzereingabe fehlerfrei.
Versuche ich jedoch das Programm über einzelne Funktionen zu erstellen, sind alle Benutzereingaben Schaltjahre.


Main-Funktion:

#include <iostream>


int main()
{
std::cout << "------------------------------------------------- Schaltjahresrechner -------------------------------------------------" << std::endl;
std::cout << std::endl;

std::cout << "Bitte geben Sie die aktuelle Jahreszahl ein und bestaetigen Sie mit der Entertaste." << std::endl;

int actualYear = 0;
std::cin >> actualYear;
if (actualYear % 4 == 0 && actualYear % 100 != 0 || actualYear % 400 == 0)

{
std::cout << actualYear << " ist ein Schaltjahr." << std::endl;

}
else
{
std::cout << actualYear << " ist kein Schaltjahr." << std::endl;

}

system("pause");
return 0;
}



Über einzelne Funktionen:

#include <iostream>
void PrintHeaderTextOut();
void PrintUserRequestTextOut();
int SaveUserInput(int actualYear);
void TestUserInputIfItIsALeapyear(int actualYear);



int main()
{
int actualYear = 0;
PrintHeaderTextOut();
PrintUserRequestTextOut();
SaveUserInput(actualYear);
TestUserInputIfItIsALeapyear(actualYear);


system("pause");
return 0;
}


void PrintHeaderTextOut()
{
std::cout << "------------------------------------------------- Schaltjahresrechner -------------------------------------------------" << std::endl;
std::cout << std::endl;
}

void PrintUserRequestTextOut()
{
std::cout << "Bitte geben Sie die aktuelle Jahreszahl ein und bestaetigen Sie mit der Entertaste." << std::endl;
}

int SaveUserInput(int actualYear)
{
std::cin >> actualYear;

return actualYear;
}

void TestUserInputIfItIsALeapyear(int actualYear)
{
if (actualYear % 4 == 0 && actualYear % 100 != 0 || actualYear % 400 == 0)
{
std::cout << actualYear << " ist ein Schaltjahr." << std::endl;
}
else
{
std::cout << actualYear << " ist kein Schaltjahr." << std::endl;
}
}


Auch nach der Suche in diverser Fachliteratur konnte ich mir die Lösung nicht selbst erarbeiten und hoffe hier auf Hinweise bzw. einen Lösungsansatz.

Vielen Dank im Voraus.

Mit freundlichen Grüßen

Hubes
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.02.2019, 14:00 Uhr
ao

(Operator)


Du musst dafür sorgen, dass actualYear durch SaveUserInput() tatsächlich verändert wird. Das erreichst du so:

C++:
int main()
{
int actualYear = 0;
PrintHeaderTextOut();
PrintUserRequestTextOut();
actualYear = SaveUserInput(actualYear);    // <----- Rueckgabewert verwenden
TestUserInputIfItIsALeapyear(actualYear);


system("pause");
return 0;
}



oder so:


C++:
#include <iostream>
void PrintHeaderTextOut();
void PrintUserRequestTextOut();
int SaveUserInput(int & actualYear);    // <------- Referenz-Parameter
void TestUserInputIfItIsALeapyear(int actualYear);

/* Mittelteil unverändert */

int SaveUserInput(int & actualYear)   // <------- Referenz-Parameter
{
std::cin >> actualYear;

return actualYear;
}



Was das alles bedeutet (Funktionen mit Rückgabewert, Referenzparameter), das solltest du dir selber anlesen.

Allgemein solltest du nicht dir einzelne Aufgaben herauspicken und die zu lösen versuchen, weil du wahrscheinlich noch gar nicht überblicken kannst, was du für die Lösung brauchst und was nicht. Langes Herumstochern im Nebel ist die Folge, wenn dich die Lösung nicht durch pures Glück anspringt.

Es ist in der Regel besser, sich von einem guten Buch oder Tutorial führen zu lassen. Wobei ich noch kein Tutorial gesehen habe, dem ich das Etikett "gut" aufkleben würde.

Dieser Post wurde am 11.02.2019 um 14:01 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.02.2019, 14:23 Uhr
Hubes



Guten Tag ao,

vielen Dank für die rasche Antwort.
Ich kann die Aufgabe nun zwar durch einen Abgleich lösen, dass Wissen über Referenzierungen muss ich mir jedoch erst noch aneignen.

Vielen Dank auch für die Tipps, wie sich ein Anfänger einarbeiten sollte.
Mein Ziel ist es diese Sprache zu lernen, also ist ein "herumspielen" ausgeschlossen.

Kannst Du Fachliteratur empfehlen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.02.2019, 16:04 Uhr
ao

(Operator)


"Der C++-Programmierer" von Ulrich Breymann. Dicke Bibel, aber jeden Euro wert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.02.2019, 09:22 Uhr
Hubes



Guten Morgen,

ein fabelhafter Hinweis!
Das Buch ist im Gegensatz zu einigen Tutorials wesentlich besser.

Ich bin seit gestern Abend im Besitz dieser "Bibel" und bin sehr begeistert davon. Es strukturiert und vertieft das bereits vorhandene Wissen.

Herzlichen Dank nochmals.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.02.2019, 18:59 Uhr
Hans
Library Walker
(Operator)



Zitat von ao:
"Der C++-Programmierer" von Ulrich Breymann. Dicke Bibel, aber jeden Euro wert.


Ist Off-topic, passt aber gerade:
Ich hab "nur" die 2. Auflage von dem Buch, die ist von 2011. - Hälst du es für Sinnvoll, eine aktualisierte Neuauflage zu kaufen, oder sollte ich es als Gelegenheitsprogrammierer eher lassen?
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.02.2019, 20:29 Uhr
ao

(Operator)



Zitat von Hans:
Hälst du es für Sinnvoll, eine aktualisierte Neuauflage zu kaufen, oder sollte ich es als Gelegenheitsprogrammierer eher lassen?

Bin nicht sicher. Ich kann nur das Inhaltsverzeichnis finden, und dem ist nicht eindeutig zu entnehmen, ob die 2011er Ausgabe den 2011er Sprachstandard (C++11) behandelt. Wenn ja, könnte man sagen, das reicht. Wenn nein, würde ich ein Update in Betracht ziehen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: