Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

c++ anfänger hat probleme mit vorzeichen :-(





Frage

hallo zusammen! ich habe mir vor kurzem ein buch zum einstieg in c++ gekauft und mal nen bissle gelesen und jetzt versucht mit meinem "wissen" nen kleines prog zu bauen mit dem man einen kreis berechnen kann. soweit so gut:-) der code sieht wie folgt aus: #include <iostream.h> const float PI = 3.14159f; double x = 0; void main (void) { cout<< "Kreisradius: "; cin>> x; cout<< "Der Kreisumfang betraegt: "<< 2*PI*x<< "cm "; cout<< "oder aber: "<< (2*PI*x)/100<< "m "; cout<< "Der Flaecheninhalt des Kreises betraegt: "<< x*PI*PI<< "cm*cm "; /* im dos-fenster ging kein ² fuer ne loesung hierfuer waer´ ich auch sehr dankbar */ cout<< "oder aber: " << (x*PI*PI)/10000<<"m*m "; } naja...wie dem auch sei...bissle utopisch zwar aber wir rechnen ja immer mit dem sachlimmsten...wenn man nun(obwohl es keinen sinn macht ;-) ) eine negative zahl fuer x einsetzt kommt auch fuer umfang und inhalt etwas negatives raus, was ja nicht sein kann! nun habe ich versucht das problem mit dem signed bzw unsigned befehl zu loesen...jedoch ohne erfolg. es kommt dann die meldung dass die befehle nicht mit dem typ float bzw double funktionieren. ich wuerde das problem allerdings gerne loesen und hoffe nun auf euere hilfe! bitte die loesungen einfach halten, da ich kaum ahnung hab :- ) danke schonmal fuer euere antworten so far Noah

Antwort 1 von Tuffyfant

hi,

*anschaut*
vorab: hmm . du sollest dir eines angewöhnen: eindeutige variablenNamen vergeben (r oder radius währen hier zum beispiel sehr passend) . und du benutzt nen veralteten header gewöhn dir mal:

#include <iostream> 
using namespace std;

schon an.


ähmm . ich weiß nicht, wo dein problem ist.. ich meine, wenn du für dein radius "-2" einsetzt, was eh schon vollkommener schwachsinn ist, rechnest du für den umfang:
2*PI (wieiveil ergibt es ? "~ 9,5) und dass * -2 ergibt -19.
mathematisch doch vollkommen korrekt - physikalisch von anfang an absoluter schwachsinn, weil es keinen negativen kreisradius gibt.
Entweder du fängst deine variable sofort nach dem
cin>>x
ab, ob die zahl >0 oder <0 ist und gibts nen fehlertext (if-bedingung) aus oder du multiplizierst sie im falle x<0 mit *(-1).
oder aber du rechnest gleich mit dem betrag der eingetippten zahl weiter (funktion in mathlib).
wieso du beim flächeninhalt ne negative zahl herausbekommst, was auch mathematischer schwachsinn ist *g*, ist einfacher zu erklären: du benutzt ne falsche formel ^^
A=PI * r² bzw. A=PI *r*r und nicht A=PI² * r bzw A=PI * PI *r

*hehe* . mich haben solche Fehler immer in den Wahnsinn getrieben ^^ .. ich hoffe dir weitergeholfen zu haben.

schönen Gruß
_Tuffy

Antwort 2 von Noah

:wand: ^^

aber danke fuer deine antwort...hat mir geholfen...ich schrei nichts mehr aus dem buch ab...bloede hunde!^^

noch ne kleine frage...sowas wie den signed bzw unsingned befehl gibt es fuer float bzw double nich?

ansonsten noch...wo is der unterschied von deinem header zu meinem?

jaja ich weiss ich stell bloede fragen...aber wie schon gesagt...hab grad erst damit angefangen und wer viel fragt, lernt viel! :- )

danke schonmal fuer die antwort

so far

Noah

Antwort 3 von Noah

jetzt muss ich doch nochmal klugscheissen wenn du mich schon mit meiner formel gekriegt hast :- )

wenn pi 3,14 is dann is 2*pi gute 6 und nich 9,5!


1:1 in sachen mathe^^