C -Code

Neue Frage »

Auf diesen Beitrag antworten »
Tim45 C -Code

Meine Frage:
Hallo,

ich muss diesen Code verbessern, aber weiß nicht wie.
#include<stdio.h>
int f1(int, int);
int main ()
{
int a = 5, b = 6;
printf("a+b=%d \n", f1(a,b));
printf("a+b=%d \n", f2(a,b));
printf("a+b=%d \n", f3());
return 0;
}
int f1 (int a, int b)
{
return a+b;
}
int f2 (int a, int b)
{
int a = 3, b = 2;
return a+b;
}
int f3 ()
{
return a+b;
}


Meine Ideen:
Ich hab leider keine Ideen. Ich weiß nur, dass a und b redeklariert werden. Aber nicht wie ich das Problem löse.
 
Auf diesen Beitrag antworten »
marie m RE: C -Code

Hallo!
In der f2 werden a und b doppelt deklariert und in f3 werden sie gar nicht deklariert.
Vor der main() hast du nur die Funtion f1 deklariert.
Auf diesen Beitrag antworten »
Tim45

hab das jetzt mal verbessert, aber immer noch ein Problem mit Funktion 2, was kann ich da machen? Hab die werte nämlich jetzt einfach nur entfernt...
#include<stdio.h>
int f1(int, int);
int f2(int, int);
int f3 ();
int main ()
{
int a = 5, b = 6;
printf("a+b=%d \n", f1(a,b));
printf("a+b=%d \n", f2(a,b));
printf("a+b=%d \n", f3());
return 0;
}
int f1 (int a, int b)
{
return a+b;
}
int f2 (int a, int b)
{

return a+b;
}
int f3 (int a, int b)
{
return a+b;
}
Auf diesen Beitrag antworten »
Karlito

Hallo,

ich habe deinen Code mal kommentiert.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
#include<stdio.h>
int f1(int, int);
int f2(int, int);
int f3 (); //Wenn die Implemntierung von f3 zwei Parameter enthält
           //Dann muss dies im Prototypen auch so sein
int main ()
{
	int a = 5, b = 6;
	printf("a+b=%d \n", f1(a,b));
	printf("a+b=%d \n", f2(a,b));
	printf("a+b=%d \n", f3()); //f3 ist durch den Prototypen zwar deklariert
	                           //aber nirgendwo implementiert. Die Implementierung 
	                           //fordert 2 Parameter (int a, int b)
	return 0;
}
int f1 (int a, int b)
{
	return a+b;
}
int f2 (int a, int b)
{
	return a+b;
}
int f3 (int a, int b) //ist in main nicht bekannt, da der Prototyp anders deklariert ist
{
	return a+b;
}


VG,

Karlito
 
Auf diesen Beitrag antworten »
Tim45

danke erst mal.
ist es eigentlich erlaubt hier a = 3 und b= 2 zu entfernen?
und bei mir kommt jetzt überall a+b=11 raus. hab das was du mir kommntiert hast schon verbessert

int f2 (int a, int b)
{
int a = 3, b = 2;
return a+b;
}
Auf diesen Beitrag antworten »
Karlito

Hallo Tim45,

Zitat:
Original von Tim45
ist es eigentlich erlaubt hier a = 3 und b= 2 zu entfernen?


Die Aufforderung das Programm zu verbessern lässt viel Raum für Interpretationen. Prinzipiell spricht erstmal nichts dagegen, die Neudeklaration und Wertezuweisung zu entfernen. Damit nicht einfach nur 3 mal das selbe da steht, würde ich an deiner Stelle das Programm ein wenig modifizieren. Also kannst du zum Beispiel in f2 a*2 + b*3 berechnen und in f3 einfach 25^2 oder eine Zufallszahl ausgeben (dafür keinen Parameter annehmen, also f3 als f3() belassen). Dementsprechend würde ich noch die Ausgabe durch printf anpassen.

VG,

Karlito
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »