Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » Unterprogramme in C » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Unterprogramme in C
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Yoshee
Grünschnabel


Dabei seit: 23.10.2006
Beiträge: 4

Unterprogramme in C Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi, ich habe folgendes Progamm:

int main (void)
{

int jahr, gebjahr, alter;
printf ("\nAktuelles Jahr: ");
scanf ("%d", &jahr);
printf ("\nGeburtsjahr: ");
scanf ("%d", &gebjahr);
alter = jahr - gebjahr;
AusgabeAlter (alter);
return (0);
}
void AusgabeAlter (int a) {
printf("\nDas Alter betraegt %d Jahre\n\n",a);
}

Das AusgabeAlter habe ich ja schon als Unterprogamm geschrieben, jetzt will ich auch das Eingabe Jahr als Unterprogamm schreiben, möglichst mit
eigener variable. Das Unterprogamm hab ich:

int Eingabe Jahr(void) {
int year;
printf ("\nAktuelles Jahr: ");
scanf ("%d", &year);
return (year);
}
Ich weiß jetzt nicht, wie ich das Pogramm "einleite". Ich hab schon alles mögliche probiert, kann mir bitte jemand helfen?
danke

Yoshee

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Yoshee: 23.10.2006 05:02.

23.10.2006 05:01 Yoshee ist offline E-Mail an Yoshee senden Beiträge von Yoshee suchen Nehmen Sie Yoshee in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Um den Rückgabewert zu erhalten musst du das Ergebnis der Funktion der Variable zuweisen. Der Funktionsname sollte aus nur einem Wort bestehen.
Es ist auch nicht verkehrt, sich schon bei kleineren Programmen anzugewöhnen Kommentare zu Unterprogrammen einzufügen.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
int main (void)
{
   int jahr, gebjahr, alter;
   jahr=Eingabe_Jahr();
   ...
}


// Eingabe_Jahr liest eine Jahreszahl von der Tastatur ein.

int Eingabe_Jahr(void) 
{
   int year; 
   printf ("\nAktuelles Jahr: ");
   scanf ("%d", &year);
   return (year);
}



Gruss,
ED
23.10.2006 11:41 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
Yoshee
Grünschnabel


Dabei seit: 23.10.2006
Beiträge: 4

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

mhh, jetzt krieg ich folgende Fehlermeldung:

\quell.cpp(8) : error C2065: 'year': nichtdeklarierter Bezeichner
.\quell.cpp(8) : error C3861: "Zusatz": Bezeichner wurde nicht gefunden.
.\quell.cpp(18) : error C2365: "Zusatz": Erneute Definition; vorherige Definition war "Ehemals unbekannter Bezeichner".

Ich versteh auch nicht woher das Programm weiß, dass Variable year= Variable jahr ist...
23.10.2006 11:58 Yoshee ist offline E-Mail an Yoshee senden Beiträge von Yoshee suchen Nehmen Sie Yoshee in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Yoshee
mhh, jetzt krieg ich folgende Fehlermeldung:

\quell.cpp(8) : error C2065: 'year': nichtdeklarierter Bezeichner
.\quell.cpp(8) : error C3861: "Zusatz": Bezeichner wurde nicht gefunden.
.\quell.cpp(18) : error C2365: "Zusatz": Erneute Definition; vorherige Definition war "Ehemals unbekannter Bezeichner".

Ich versteh auch nicht woher das Programm weiß, dass Variable year= Variable jahr ist...


Sorry das war ein Flüchtigkeitsfehler, ich meinte jahr statt year oben.
Ich änder das mal oben.

Aber ich halte es für keine gute Idee plain-C als C++ zu kompilieren. Das würde ich sauberer Trennen (hab mal an einem Projekt gesponnen, daß C und C++ wild gemischt hat, das war wirklich furchbar).

Gruss,
ED

PS: Aber woher das Wort "Zusatz" kommt, ist mir schleierhaft.
23.10.2006 12:27 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
Yoshee
Grünschnabel


Dabei seit: 23.10.2006
Beiträge: 4

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

achso, das war ein Flüchtigkeitsfehler von mir, ich hab das Unterprogramm "zusatz" genannt.... Augenzwinkern

ähm, kann ich mit microsoft vc++ in c kompilieren? oder mss ich jetzt alles umscheiben?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Yoshee: 23.10.2006 12:33.

23.10.2006 12:30 Yoshee ist offline E-Mail an Yoshee senden Beiträge von Yoshee suchen Nehmen Sie Yoshee in Ihre Freundesliste auf
Yoshee
Grünschnabel


Dabei seit: 23.10.2006
Beiträge: 4

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok, ich habs jetzt in C hinbekommen.
Nächste Frage:
Ich soll folgende Korektur einbauen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
int Korr (int j) {
	if (j < 20) {
		j = j +2000;
	}
	else {
		if (j < 100) {
			j = j + 1900;
		}
	}
	return (j );}


Ich hab
code:
1:
alter = Korr();

und
code:
1:
Korr (alter);

probiert, aber das scheint ja beides falsch zu sein...
kann mir jemand beim aufrufen helfen?
24.10.2006 00:19 Yoshee ist offline E-Mail an Yoshee senden Beiträge von Yoshee suchen Nehmen Sie Yoshee in Ihre Freundesliste auf
evok
Grünschnabel


Dabei seit: 02.10.2006
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Yoshee
Ok, ich habs jetzt in C hinbekommen.
Nächste Frage:
Ich soll folgende Korektur einbauen:

Ich hab
code:
1:
alter = Korr();

in diesem fall gibst du deiner Funktion Korr nichts mit, woher soll sie also wissen welchen wert das j hat, (geschweige denn dass es mit einem compiler error abgebrochen ist)
Zitat:

und
code:
1:
Korr (alter);


in diesem fall gibst du zwar das aktuelle alter in die funktion mit, rechnest in der Funktion auch prima damit, lieferst es auch prima zurück heraus, jedoch weist du den zurückgelieferten wert niemals deiner ursprünglichen variable im Hauptprogramm zu.

Verstehst du was ich meine?
Wenn du eine Funktion haben willst, die einen Wert verändert hast du zwei Möglichkeiten:
die eine wären Pointer (aber da ich annehme dass du das noch nicht kannst nehmen wir die zweite und dies läuft über den Return value, nur solange du den Return value keiner anderen Variable im Hauptprogramm zuweist arbeitet dein Unterprogramm/Funktion zwar munter vor sich hin, aber leider interessiert sich niemand für das Ergebnis, also den Rückgabewert.
Quintessenz dieses elend langen Bandwurmsatzes ist die Funktion mit dem Parameter Alter aufzurufen und gleichzeitig dem Alter zuzweisen.
Ich poste die Lösung bewusst nicht weil ich sehn will ob du verstanden hast was ich meine

lg
h
24.10.2006 20:16 evok ist offline E-Mail an evok senden Beiträge von evok suchen Nehmen Sie evok in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » Unterprogramme in C