Eine Zahl quadrieren ohne arithmetischen Operator
-
diese Funktion soll nur addieren das quadrieren soll von einer anderen Funktion gemacht werden.
die Aufgabe habe ich original so ab getippt.
-
Was bedeutet denn 'quadrieren'?
-
grinhilde2 schrieb:
diese Funktion soll nur addieren das quadrieren soll von einer anderen Funktion gemacht werden.
Das glaube ich nicht.
grinhilde2 schrieb:
die Aufgabe habe ich original so ab getippt.
Wenn das die ganze Aufgabe ist, dann kannste die eine Funktion doch nehmen, halt mehrmals aufrufen mit verschiedenen Parametern.
-
DirkB schrieb:
Was bedeutet denn 'quadrieren'?
das ist wenn man eine zahl hoch 2 nimmt.
-
grinhilde schrieb:
Also irgendwie komme ich mit dem Befehl auch nicht weiter...
folgendes ist gegeben:int calc( unsigned int e1, unsigned int e2, char op)
{
switch (op)
{
case '-': return (e1-e2);
case '': return (e1e2);
case '/': return (e1/e2);
Default:
case '+': return (e1+e2);
}
}Schreiben Sie ein C-Programm, das diese Funktion benutzt. Das Programm soll zwei
ganze Zahlen von der Tastatur einlesen (Eingabezahlen). Die einzige Ausgabe des
Programmes soll das Quadrat der Summe der Eingabezahlen sein. Diese Zahl soll das Programm berechnen, ohne dabei einen arithmetischen Operator zu benutzen!Mir persönlich macht sowas keinen Spaß....
Könnte mir vielleicht nochmal jemand helfen... DANKE!Also ich habe die Aufgabe so verstanden, dass das summieren mit der funktion passieren soll. Allerdings das quadrieren mit einer anderen Funkition welche dabei keinen arithmetischen Operator nutzt.
Wie würdet Ihr diese Aufgabe lösen?
Grüße,
Grinhilde
-
grinhilde schrieb:
das ist wenn man eine zahl hoch 2 nimmt.
Und wie rechnet man "hoch 2"?
-
int result = calc (calc(e1, e2 ,+), calc(e1, e2, +), *);
-
????
dafür bin ich jetzt zu blöd...
-
grinhilde schrieb:
????
dafür bin ich jetzt zu blöd...Hats Du denn einen Compiler? Weisst Du, wie Du Funktionen aufrufst?
Ausser der Aufgabenstellung hast Du noch nix gezeigt - insbesondere nix, was Du programmiert hast.
Nimm die
calc()
Funktion und spiel ein bisschen damit rum.
Z.B.
4+2
42
42 - 1 // Punkt vor Strich!Und zuguterletzt:
(4+2) * (4+2),
bzw. allgemeiner (a+b) * (a+b)
-
#include <stdio.h>
int main (void) {
char e1;
char e2;e1 = getchar();
e2 = getchar();putchar (e1);
putchar (e2);int calc( unsigned int e1, unsigned int e2, char op)
{
switch (op)
{
case '-': return (e1-e2);
case '': return (e1e2);
case '/': return (e1/e2);
Default:
case '+': return (e1+e2);
}
}printf("%i", calc);
return 0;
}ich hab versucht ein Programm zu bauen, mit der Funktion die ich nutzen soll.
Also ich wollte dass, das Programm die zwei zahlen aus der eingabe nimmt, mir diese ausgibt, was er auch macht.
Diese beiden zahlen soll er jetzt mit in die vorgegebene Funktion nehmen, und mit Hilfe dieser Funktion summieren.
Und zum schluss soll er einfach nochmal diese summe ausgeben.
aber dat klappt nicht
-
Furble Wurble schrieb:
grinhilde schrieb:
????
dafür bin ich jetzt zu blöd...Hats Du denn einen Compiler? Weisst Du, wie Du Funktionen aufrufst?
Ausser der Aufgabenstellung hast Du noch nix gezeigt - insbesondere nix, was Du programmiert hast.
Nimm die
calc()
Funktion und spiel ein bisschen damit rum.
Z.B.
4+2
42
42 - 1 // Punkt vor Strich!Und zuguterletzt:
(4+2) * (4+2),
bzw. allgemeiner (a+b) * (a+b)hier nimmst du aber wieder die operatoren welche nicht genutzt werden sollen.
ich nutze einen compiler von der schule....aber der sagt immer noch error error error....
-
grinhilde schrieb:
Furble Wurble schrieb:
grinhilde schrieb:
????
dafür bin ich jetzt zu blöd...Hats Du denn einen Compiler? Weisst Du, wie Du Funktionen aufrufst?
Ausser der Aufgabenstellung hast Du noch nix gezeigt - insbesondere nix, was Du programmiert hast.
Nimm die
calc()
Funktion und spiel ein bisschen damit rum.
Z.B.
4+2
42
42 - 1 // Punkt vor Strich!Und zuguterletzt:
(4+2) * (4+2),
bzw. allgemeiner (a+b) * (a+b)hier nimmst du aber wieder die operatoren welche nicht genutzt werden sollen.
ich nutze einen compiler von der schule....aber der sagt immer noch error error error....Das sollen ja nur Beispielaufgaben sein. Wie würde denn 4+2 aussehen, wenn Du die Funktion
calc()
benutzt?Du kannst auch gerne Deine Versuche hier einstellen - nimm aber bitte Code Tags für C. (unter dem
-Smiley unter Nachrichtentext Fenster...)
-
[code="c"]
#include <stdio.h>int main (void) {
int e1;
int e2;
scanf("%i", & e1);
scanf("%i",& e2);printf("%i,%i", e1, e2);
int calc( unsigned int e1, unsigned int e2, char op)
{
switch (op)
{
case '-': return (e1-e2);
case '': return (e1e2);
case '/': return (e1/e2);
Default:
case '+': return (e1+e2);
}
}printf("%i", calc);
return 0;
}oder so. allerings klappt die ausgabe nicht. der compiler sagt
format '%i' expects argument of type 'int', but argument
2 has type 'int (*)(unsigned int, unsigned int, char)' [-Wformat]
d int, char)' [-Wformat]mir aus auch erlich gesagt nicht ganz klar wie die vorgabe eingebunden wird. calc ist doch ein int oder? und wenn calc ein int ist kann ich doch %i sagen, oder?
-
calc ist eine Funktion, die ein
int
zurück gibt.Wie man die aufruft, hat AndreasBo vor 1,5 Stunden geschrieben.
In C gibt es auch keine funktionslokalen Funktionen (wie z.B. in Pascal)
D.h. die Definition von calc muss raus aus dermain
.Wie hast du denn die Funktion calc bekommen? Abgeschrieben, runter geladen oder Copy&paste?
Du musst das Code-Tag auch wieder schließen. Am einfachsten Code mit der Maus markieren und dann auf den C-Button klicken.
-
Furble Wurble schrieb:
grinhilde schrieb:
hier nimmst du aber wieder die operatoren welche nicht genutzt werden sollen.
ich nutze einen compiler von der schule....aber der sagt immer noch error error error....Das sollen ja nur Beispielaufgaben sein. Wie würde denn 4+2 aussehen, wenn Du die Funktion
calc()
benutzt?Auf jeden Fall muss man auch dafür einen operator benutzen ... wenn auch nur als Parameter für calc.
-
AndreasBo schrieb:
int result = calc (calc(e1, e2 ,+), calc(e1, e2, +), *);
also würde ich int result= und dann mein rechenweg schreiben?
nein, diese funktion war mit der aufgabe gegeben, gehört also zusammen.
ich habe die aufgabe mit funktion einfach abgetippt.
normalerweise ist es bei diesem lehrer immer so, dass die gegebenen funktionen komplett so übernommen werden und man nur ergänzen muss.mein problem ist:
-wie flechte ich diese vorgabe ein.
-wie kann ich das quadrat der summe bilden ohne einen arithmetischen operator.
wenn man eine wurzel nehmen möchte gibt es die funktion sqrt()aber hier muss ich ein quadrat bilden nur wie?
den tipp von andreasbo probiere ich gleich mal aus danke.
-
#include <stdio.h> int main (void) { int e1; int e2; scanf("%i", & e1); scanf("%i",& e2); printf("%i,%i", e1, e2); int calc( unsigned int e1, unsigned int e2, char op) { switch (op) { case '-': return (e1-e2); case '*': return (e1*e2); case '/': return (e1/e2); Default: case '+': return (e1+e2); } } return 0; }
so wenn ich das so habe, wüde ich sagen das er sofort auf default: case '+' geht. und e1+e2 rechnet. wie kann ich mir mein ergebnis also e1+e2 ausgeben lassen also printf(). ist das ergebnis calc? benutzt er die ganze funktion überhaupt weil kein op definiert ist, müßte ich ihm noch sagen
char op='+'? aber auch wenn ich das machen klappt es nicht.
-
grinhilde schrieb:
so wenn ich das so habe, wüde ich sagen das er sofort auf default: case '+' geht. und e1+e2 rechnet. wie kann ich mir mein ergebnis also e1+e2 ausgeben lassen also printf(). ist das ergebnis calc? benutzt er die ganze funktion überhaupt weil kein op definiert ist, müßte ich ihm noch sagen char op='+'? aber auch wenn ich das machen klappt es nicht.
Sei bitte so freundlich und benutz Groß- und Kleinschreibung. Auch musst Du nicht so schreiben, wie Du denkst, bzw. sprichst: Du kannst Dir ruhig ein wenig Mühe beim formulieren geben.
In Deinem Code geht es genauso wirr zu - da ist die
calc()
Funktion innerhalb dermain()
Funktion. Das geht so nicht in C.
Dein Problem ist gar nicht so sehr "Eine Zahl quadrieren ohne arithmetischen Operator", sondern eher, dass Du noch ganz am Anfang mit C stehst.
Ganz dringend nochmal in die Unterlagen schauen!Z.B.:
#include <stdio.h> /* Deklaration */ int calc( unsigned int e1, unsigned int e2, char op); /* Definition */ int main (void) { int e1; int e2; scanf("%i", & e1); scanf("%i",& e2); int sum = calc(e1, e2, '+'); printf("%i+%i=%i\n", e1, e2, sum); } /* Definition */ int calc(unsigned int e1, unsigned int e2, char op) { switch (op) { case '-': return e1-e2; case '*': return e1*e2; case '/': return e1/e2; default: /* fall through */ case '+': return e1+e2; } }
-
Beachte bei dem Program von Furble Wurble die Zeile 12. Da wird die Funktion calc aufgerufen. Alleine durch die Definition passiert das nicht.
Die einzige Funktion die automatisch aufgerufen wird, istmain
(ja, auch das ist eine Funktion)Und auch Zeile 24.
default
wird komplett klein geschrieben
-
danke für den tipp.
#include <stdio.h> #include <math.h> /* Deklaration */ int calc( unsigned int e1, unsigned int e2, char op); /* Definition */ int main (void) { int e1; int e2; scanf("%i", & e1); scanf("%i",& e2); int sum = calc(e1, e2, '+'); printf("%i+%i=%i\n", e1, e2, sum); int q; q=quad(sum); printf("%i",q); } /* Definition */ int calc(unsigned int e1, unsigned int e2, char op) { switch (op) { case '-': return e1-e2; case '*': return e1*e2; case '/': return e1/e2; default: case '+': return e1+e2; } return 0; }
Wenn ich jetzt die funktion quad() nutzen möchte klappt es nicht.
Warum?
Die fehlermeldung ist:
/tmp/ccQv1GTY.o: In functionmain': 1391029084.c:(.text+0x79): undefined reference to
quad'
collect2: ld returned 1 exit status