gerade und ungerade Zahlen
-
hier die aufgabe, die ich lösen muss:
Schreiben Sie ein Programm, das eine beliebige Zahl auf x einliest und
ausgibt, ob die Zahl negativ, Null oder positiv ist, die Funktionswerte sqrt(x), 1/x und log(x) ausgibt
oder einen Hinweis, falls sie nicht definiert sind und ob sie gerade, ungerade oder keine natürliche Zahl ist.
-positiv, negativ und die rechenoperationen sind kein Problem. Ich hab Probleme bei gerade/ungerade bzw. nicht definierte Zahl.
Kann mir jemand helfen?
-
stotty schrieb:
...Kann mir jemand helfen?
Japp!
Wir warten hinter der "Habe schonmal sinnvoll angefangen und mein bisheriges Wissen eingebracht"-Linie auf Dich.
Gruß,
Simon2.
-
#include <iostream> int main() { int x = 2; std::cout << (x & 1 ? "ungerade" : "gerade") << std::endl; }
Ob die Funktionswerte definiert sind oder nicht, ergibt sich ja aus den anderen Eigenschaften.
-
also wenn du nur problem mit dem gerade/ungerade hast
schau mal nach was modulo-rechnung bedeutet ...
und wie der operator in c++ aussieht
-
naja, mit int würde ich das auch hinbekommen. aber ich brauch ja float-variablen, da die rechenoperationen das ja mehr oder weniger vorschreiben. nich?
-
stotty schrieb:
naja, mit int würde ich das auch hinbekommen. aber ich brauch ja float-variablen, da die rechenoperationen das ja mehr oder weniger vorschreiben. nich?
ist 0.1136 eine gerade oder eine ungerade zahl?
-
blinky schrieb:
ist 0.1136 eine gerade oder eine ungerade zahl?
nix davon, weils keine ganze zahl ist.
-
ok, nachvollziehbar. wie soll ich dass dann programmieren? x muss ich als int eingeben, da ich ja schaun muss, ob die zahl gerade oder ungerade ist. um aber z.b. die wurzel ausrechnen zu können, muss ich muss ich float-variablen einführen.
schreibe ich dann
y2=1/x
sagt er mir, dass ich int und float variablen nich in einer rechnung verwenden kann
-
Simon2 schrieb:
Japp!
Wir warten hinter der "Habe schonmal sinnvoll angefangen und mein bisheriges Wissen eingebracht"-Linie auf Dich.
Gruß,
Simon2.
ich entschudlige mich bei dem herren, dass ich erst jetz anfange, mir sowas anzueignen. jeder fängt mal klein an.
den saraksmus kannst du stecken lassen
-
Warum jetzt Wurzel?!
Benutz doch einfach den Modulo Operator % und gut ist.
EDIT:
Simon hat es nur gut gemeint. Es geht eben darum, dass hier viele ankommen und das Gefühl haben, dass wir ihre Hausaufgaben machen. Und das war halt eine Vorsichtsmasnahme, dass wir hier nicht zu viel Zeit verschwenden, falls du nicht gewillt bist etwas zu lernen.
-
stotty schrieb:
Schreiben Sie ein Programm, das eine beliebige Zahl auf x einliest und
ausgibt, ob die Zahl negativ, Null oder positiv ist, die Funktionswerte sqrt(x), 1/x und log(x) ausgibt
oder einen Hinweis, falls sie nicht definiert sind und ob sie gerade, ungerade oder keine natürliche Zahl ist.
?laut aufgabenstellung soll ich ja sqrt(x) ausrechnen....darum wurzel
ich weiß einfach nich, wie ich beides zusammen bringen soll.
es geht mir hier nich darum, dass ihr meine hausaufgaben macht. ich schreib nächste woche n testat und will das einfach können. und die frage kann mir irgendwie keiner beantworten. ich kanns mir nich leisten, nich zu bestehen. deswegen will ichs verstehen. ich hoffe, ihr helft mir ein wenig...
-
stotty schrieb:
x muss ich als int eingeben, da ich ja schaun muss, ob die zahl gerade oder ungerade ist. um aber z.b. die wurzel ausrechnen zu können, muss ich muss ich float-variablen einführen.
man kann float und int ineinander konvertieren.
int i = 3; float f = i; float inv = 1.0f / f;
-
Zuersteinmal würde ich die Aufgabe aufspalten:
beliebige Zahl auf x einlesen ausgeben: ob Zahl negativ, Null oder positiv ist, sqrt(x) 1/x log(x) Hinweis, falls sie nicht definiert
Jetzt gilt eigentlich nur noch zu klären, was hier beliebig heisst.
Ich gehe mal davon aus, dass es reicht, wenn du ein float einliest. (Damit auch Flieskommazahlen angegeben werden können).Den Rest kannst du ja ganz einfach per Standardfunktionen ausrechnen lassen.
-
stotty schrieb:
ich weiß einfach nich, wie ich beides zusammen bringen soll.
such doch mal bei wikipedia oder in 'nem mathelexikon, für welche bereiche sqrt(x), log(x) und 1/x erlaubt sind. ich würde jetzt raten: bei sqrt und log sind alle positiven zahlen erlaubt und bei 1/x alles, ausser 0.
-
float y1,y2,y3; int x; printf("Bitte geben Sie den Wert fuer x an:\n"); scanf_s("%i",&x); if(x<0) { y2=1/x; if(x%2==0) printf("x ist eine negative gerade Zahl. Der Kehrwert lautet %2.2f\n",y2); } else return 0;
soweit bin ich....problem: er rechnet mir den kehrwert nicht aus. er gibt immer 0.00 an.
-
stotty schrieb:
Simon2 schrieb:
Japp!
Wir warten hinter der "Habe schonmal sinnvoll angefangen und mein bisheriges Wissen eingebracht"-Linie auf Dich.
Gruß,
Simon2.
ich entschudlige mich bei dem herren, dass ich erst jetz anfange, mir sowas anzueignen. jeder fängt mal klein an.
den saraksmus kannst du stecken lassen
Das war kein Sarkasmus, sondern ein klar definierter Hinweis, wie Du sinnvolle Hilfe bekommen kannst. Willst Du nicht? Kein Problem ... zumindestens nicht meines.
stotty schrieb:
...soweit bin ich....
Wenn Du das gleich in Deinem Eingangspost geschrieben hättest, hätte man Dir gleich viel zielgerichteter antworten können.
Wenn ich das richtig sehe, liegt Dein Problem darin, dass Du die "integer-Division" durchführst, wenn Du durch ein "int" teilst (implizit: 1 ist ein int und x auch).
Probiere doch mal aus floats zu teilen:
- int Wert in ein float zu kopieren und
- statt 1 die 1.0 nehmen.Übrigens:
In C++ kann man übrigens zur Ein/Ausgabe die viel einfachereren und in vielerlei Hinsicht sichereren "cout" und "cin" nehmen:#include <iostream> using namespace std; int main() { float y1,y2,y3; int x; cout <<"Bitte geben Sie den Wert fuer x an:\n"; cin >> x; ...
Gruß,
Simon2.
-
als erstes mal: hast du C++ oder C in der Uni? dürft ihr cin, cout etc nicht nutzen etc.?
~fricky schrieb:
ich würde jetzt raten: bei sqrt und log sind alle positiven zahlen erlaubt und bei 1/x alles, ausser 0.
sqrt: alles >= 0,
log: alles > 0
/ : alles != 0übrigens:
int x; std::cin >> x; //eingabe prüfen std::cout << "1/x = " << 1.f / static_cast <float> (x) << std::endl;
mit dem static_cast dort bekommst du nen float raus - ohne würde er dir nur einen int berechnen...
log und sqrt sollten ja iwo in <cmath> definiert sein - vermutlich heißen sie dort genau so ^^
bb
-
wie gesagt, die rechnungen sind kein problem. es is nur das mit der geradheit.
und wir dürfen auch nur c++, kein c. wobei ich sagen muss, dass ich den unterschied jetz nich wirklich kenne. auf jeden fall sagen mir die befehle cin und cout nichts.
dann entschuldige ich mich bei simon. viell. sollten wir uns beide in zukunft anders ausdrücken. bei mir kam es nun mal wie ein vorwurf an. kann mit der aussage
Habe schonmal sinnvoll angefangen und mein bisheriges Wissen eingebracht
nichts anfangen....
ich werd mich dann gleich nochma an die aufgabe setzen und eure hinweise beachten
danke schonma
-
stotty schrieb:
und wir dürfen auch nur c++, kein c.
aber ihr habt bis jetzt noch nich cin und cout genutzt und immer printf/scanf/... ?
Glaub ich dir iwie nicht so ganz...bb
-
ich kann dir gern die übungen zeigen, die ich bisher mit unserem übungsleiter durch hab. ich kenn nur scanf und printf....aber ich hab eben das andere ausprobiert. geht wunderbar. danke dafür!
Die aufgabe ist nun auch komplett. danke, dass ihr mir da durch geholfen habt.