[C] Referat über Funktionen und Parameterübergabe

NixVersteh

Grünschnabel
moinsen!

ich muss ein referat halten über das oben genannte. der herr informatiklehrer hat mir auch schon eine pdf file über det thema geschickt, doch ich versteh nur bahnhof....

könnte mir jemand erklären wie das funktioniert
muss das bis zum 13. fertig haben!
 
Wäre garnicht schlecht wenn du ein bisschen mehr ins detail gehen würdest!
Grundsätzlich ist eine Funktion in C folgendermaßen
aufgebaut:


<Typ des Rückgabewertes><Name>(<Parameter>){
Inhalt der Funktion;
Rückgabewert;
}

Also zu, Beispiel:

int addieren(int eins, int zwei){
int ergebniss = eins + zwei;
return ergibniss;
}

Diese Funktion würde z.B. mit addieren(3, 5) aufgerufen
werden und somit 8 zurückgeben.
Der Rückgabewert kann jeder Datentyp sein oder halt
nichts zurückgeben (void)

Greetz...
Sinac
 
ok, drück ich mich halt genauer aus.

ich muss ein referat halten über Funktionen, deren syntaktischen aufbau, datentypen, namen, parameterlisten, rückgabewerte etc!
 
Ok, das ist oben alles beschrieben und das wirste auch in jedem C/C++ Buch nachlesen können :)
 
so, hab mich nu ein bisl schlauer gemacht

wollte nun also ein beispielprogramm schreibn, einfacher rechner.

c main.c

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int zahl1, zahl2, ergebnis, wahl;

printf("1. Zahl eingeben: ");
scanf("%d", &zahl1);

printf("2. Zahl eingeben: ");
scanf("%d", &zahl2);

printf("Was wollen sie durchführen?\n");
printf("(1) 1. Zahl - 2. Zahl");
printf("(2) 1. Zahl + 2. Zahl");
printf("(3) 1. Zahl * 2. Zahl");
printf("(4) 1. Zahl / 2. Zahl");

scanf("%d", &wahl);

if(wahl == 1){
ergebnis = subtraktion(zahl1, zahl2);}

if(wahl == 2){
ergebnis = addition(zahl1, zahl2);}

if(wahl == 3){
ergebnis = multi(zahl1, zahl2);}

if(wahl == 4){
ergebnis = division(zahl1, zahl2);}

printf("Ergebnis: %d ", ergebnis);



return 0;
}

subtraktion.c

int subtraktion(int x, int y)
{
x = x - y;

return x;
}

addition.c

int addition(int x, int y)
{
x = x + y;

return x;
}

multi.c

int mulit(int x, int y)
{
x = x * y;

return x;
}

division.c

int division(int x, int y)
{
x = x / y;

return x;
}

habs der einfachheit halber erstma nur mit ints gemacht

genauso stehts da drinne. dennoch kommt er übers kompilieren nich rüber. 0 Fehler zeigt er mir an, aber executen kann ers nich?!

als prog nutz ich dat kostenlose dev C++ von Bloodsheed
 
Zuletzt bearbeitet:
NixVersteh...Da gibt es sowas nettes wie eine Netiquette, die solltest Du Dir mal kurz vor jedem Post noch einmal durchlesen und hoffentlich auch danach handeln!

by the way Selber Denken macht schlau!
 
lustig, wenn ich das alles verstehen würde würde ich ja selbst nach dem fehler suchen.

da ich das nicht wirklich verstehe und hoffe das ich es verstehen würde wenn ihr mir meinen fehler zeigt , ergo: helft mir, biddeeeee

trotzdem danke für den hinweis ;)

btw, was meinst du mit netiquette? das ich mich nich bedankt habe?

dann hol ich das hiermit nach:

@ sinac: danke!

ansonsten? keine doppelpost, beleidigungen etc, also bidde klär mich auf was ich falsch mache (in beiden fällen)!
 
öhm ja, schön.

aber könntet ihr mir bitte auch bei meinem prog helfen?

btw hab ich mal ein kürzeres versucht, jedoch es nur mit int, nicht aber mit float

<main>
#include <stdio.h>
#include <stdlib.h>


float main()
{
float a;
float b;

a = 11;

b = maximum(a, 10);

printf("%f" , b);
system("pause");
}

<unterprog>

float maximum(float x, float y)
{
if(x>y)
return x;

return y;
}

als fehler spuckt er mir
"e:\c++\test1.c: In function `main':
e:\c++\test1.c:6: warning: return type of `main' is not `int'"
dies aus. wenn ich alle floats in int umändere funktionierts!

btw, oben hatte sich ein rächtschräibfähler eingeschlichen. die funktion hieß nicht multi sonder mulit.

jetzt funktioniert es. aber sagt mir bitte warum ich keine floats verwenden darf?

wenn ich das rechenprogramm in float umschreibe kommt immer als ergebnis 1 raus.

wahl hab ich als int wert gelassen

so siehts dann aus

#include <stdio.h>
#include <stdlib.h>

int main()
{
float zahl1, zahl2, ergebnis;
int wahl;

printf("1. Zahl eingeben: ");
scanf("%f", &zahl1);

printf("2. Zahl eingeben: ");
scanf("%f", &zahl2);

...........................................................

scanf("%d", &wahl);

if(wahl == 1)
ergebnis = subtraktion(zahl1, zahl2);

if(wahl == 2)
ergebnis = addition(zahl1, zahl2);

if(wahl == 3)
ergebnis = multi(zahl1, zahl2);

if(wahl == 4)
ergebnis = division(zahl1, zahl2);

printf("Ergebnis: %f \n", ergebnis);
system("pause");
}
 
Zuletzt bearbeitet:
der Prototyp von main ist nun mal

int main(int argc , char** argv);

Bei den anderen Funktionen kannst du Floats zurück geben, bei Main wird aber verlangt ein Integer zurückzugeben (z.B.: an die Konsole die das Programm aufruft).
argc sagt wieviele argumente an der Konsole angegeben wurden, argv sind das "Stringarray" das diese hält. Das erste Argument hält immer den namen des programms selbst

<main>
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char**argv)
{
float a;
float b;
a = 11;
b = maximum(a, 10);
printf("%f" , b);
system("pause");
return 0;
}

<unterprog --- das ist eine Funktion kein Programm>

float maximum(float x, float y)
{
if(x>y)
return x;
else <--- fehlt wohl
return y; <-- was ist das !
}


btw. unter windows VC++ klappt auch void main(void)
 

Neue Beiträge

Zurück