Anfänger: schwierigkeiten beim quadrieren eines floats (gelöst)
-
Ich bekomm von meinem Compiler den Fehler "no matching function for call to `pow(float&)'"
Die betroffene Zeile ist 140: und soll nichts anderes tun, als einen float zu quadrieren und ihn dann durch einen anderen zu teilen.
Da dies mein erster Beitrag in diesem Forum ist, bitte ich dich ebenfalls, mich auf Dinge hin zu weisen, die hier nicht gern gesehen werden ...man möchte sich ja nicht gleich unmöglich machen ^^Quelltext folgt:
//Ein Programm zur Berechnung von U (Spannung) R (Widerstand) I (Strom) und P (Leistung) //calcURIP rev 0.04 prealpha //This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. //This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. //You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/licenses/. #include <cstdlib> #include <iostream> #include <string> #include <math.h> using namespace std; int main(int argc, char *argv[]) { //Haupt-Schleife bool b_close(false); do{ system("cls"); //Initialisierung der Rechenwert-floats float f_USER_IN_1; float f_USER_IN_2; ///Initialisierung der häufig benötigten UI Strings string s_ident = "CalcURIP v.0.04 prealpha. (C) [2009] [Marcus Wiech] GPL\n---------------------------------------------------------------------------\n"; string s_ueingabe = "\n\nUngueltige Eingabe!"; string s_rohm = "R in Ohm"; string s_iamp = "I in Ampere"; string s_uvol = "U in Ampere"; string s_pwat = "P in Watt"; string s_nenth = "\nDiese Funktion ist leider noch nicht enthalten.\n\n\n"; //Hauptauswahlmenü cout << s_ident << endl; cout << "---URIP" << endl; cout << "[1]: U in Volt" << endl; cout << "[2]: R in Ohm" << endl; cout << "[3]: I in Ampere" << endl; cout << "[4]: P in Watt\n" << endl; cout << "[0]: Programm Beenden\n" << endl; cout << "BEACHTE!!! Kommas sind durch Punkte zu ersetzen und alle\nGroessen sind in Volt, Ampere, Ohm und Watt anzugeben !!!" << endl; int short i_USER_CHOICE_MAIN; //Eingabe der Auswahl cout << "\n\nOption:"; cin >> i_USER_CHOICE_MAIN; //HAUPT-SWITCH-ANWEISUNG switch (i_USER_CHOICE_MAIN) { //Programm beenden case 0: return EXIT_SUCCESS; break; case 1: // Spannung in Volt system("cls"); cout << s_ident << endl; cout << s_uvol << endl; int short i_USER_CHOICE_U; cout << "[1]: R I" << endl; cout << "[2]: P I" << endl; cout << "[3]: P R" << endl; cout << "\n\nOption:"; cin >> i_USER_CHOICE_U; switch (i_USER_CHOICE_U) { case 1: //geg Widerstand und Strom system("cls"); cout << s_ident << endl; cout << s_uvol << endl; cout << "R:"; cin >> f_USER_IN_1; cout << "I:"; cin >> f_USER_IN_2; cout << "\nU=" << f_USER_IN_1 * f_USER_IN_2 << " Volt\n\n\n" << endl; break; case 2: //geg Leistung und Strom system("cls"); cout << s_ident << endl; cout << s_uvol << endl; cout << "P:"; cin >> f_USER_IN_1; cout << "I:"; cin >> f_USER_IN_2; cout << "\nU=" << f_USER_IN_1/f_USER_IN_2 << " Volt\n\n\n" << endl; break; case 3: //geg Leistung und Widerstand system("cls"); cout << s_ident << endl; cout << s_uvol << endl; cout << "P:"; cin >> f_USER_IN_1; cout << "R:"; cin >> f_USER_IN_2; cout << "\nU=" << sqrt (f_USER_IN_1*f_USER_IN_2) << " Volt\n\n\n" << endl; break; default: system("cls"); cout << s_ident << endl; cout << s_ueingabe << endl; } break; case 2: //Widerstand in Ohm system("cls"); cout << s_ident << endl; cout << s_rohm << endl; int short i_USER_CHOICE_R; cout << "[1]: U I" << endl; cout << "[2]: U P" << endl; cout << "[3]: P I" << endl; cout << "\n\nOption:"; cin >> i_USER_CHOICE_R; switch (i_USER_CHOICE_R) { case 1: //geg Spannung und Strom system("cls"); cout << s_ident << endl; cout << s_rohm << endl; cout << "U:"; cin >> f_USER_IN_1; cout << "I:"; cin >> f_USER_IN_1; cout << "\nR=" << f_USER_IN_1/f_USER_IN_2 << " Ohm\n\n\n" << endl; break; case 2: //geg Spannung und Leistung system("cls"); cout << s_ident << endl; cout << s_rohm << endl; cout << s_nenth; cout << "U:"; cin >> f_USER_IN_1; cout << "P:"; cin >> f_USER_IN_2; cout << "\nU=" << pow(f_USER_IN_1) / f_USER_IN_2 << " Volt\n\n\n" << endl; break; case 3: //geg Leistung und Strom system("cls"); cout << s_ident << endl; cout << s_rohm << endl; //cout << "P:"; //cin >> USER_IN_1; //cout << "I:"; //cin >> USER_IN_2; cout << s_nenth; break; default: system("cls"); cout << s_ident << endl; cout << s_ueingabe << endl; } break; case 3: //Strom in Ampere system("cls"); cout << s_ident << endl; cout << s_iamp << endl; int short USER_CHOICE_I; cout << "[1]: U R" << endl; cout << "[2]: P U" << endl; cout << "[3]: P R" << endl; cout << "\n\nOption:"; cin >> USER_CHOICE_I; switch (USER_CHOICE_I) { case 1: //geg Spannung und Widerstand system("cls"); cout << s_ident << endl; cout << s_iamp << endl; cout << "U:"; cin >> f_USER_IN_1; cout << "R:"; cin >> f_USER_IN_2; cout << "\nI=" << f_USER_IN_1/f_USER_IN_2 << " Ampere\n\n\n" << endl; break; case 2: //geg Leistung und Spannung system("cls"); cout << s_ident << endl; cout << s_iamp << endl; cout << "P:"; cin >> f_USER_IN_1; cout << "U:"; cin >> f_USER_IN_2; cout << "\nI=" << f_USER_IN_1/f_USER_IN_2 << " Ampere\n\n\n" << endl; break; case 3: //geg Leistung und Widerstand system("cls"); cout << s_ident << endl; cout << s_iamp << endl; cout << "P:"; cin >> f_USER_IN_1; cout << "R:"; cin >> f_USER_IN_2; cout << "\nU=" << sqrt (f_USER_IN_1/f_USER_IN_2) << " Volt\n\n\n" << endl; break; default: system("cls"); cout << s_ident << endl; cout << s_ueingabe << endl; } break; case 4: //Leistung in Watt system("cls"); cout << s_ident << endl; cout << s_pwat << endl; int short i_USER_CHOICE_P; cout << "[1]: U I" << endl; cout << "[2]: R I" << endl; cout << "[3]: U R" << endl; cout << "\n\nOption:"; cin >> i_USER_CHOICE_P; switch (i_USER_CHOICE_P) { case 1: //geg Spannung und Strom system("cls"); cout << s_ident << endl; cout << s_pwat << endl; //cout << "U:"; //cin >> USER_IN_1; //cout << "I:"; //cin >> USER_IN_2; cout << s_nenth; break; case 2: //geg Widerstand und Strom system("cls"); cout << s_ident << endl; cout << s_pwat << endl; // cout << "R:"; // cin >> USER_IN_1; // cout << "I:"; // cin >> USER_IN_2; cout << s_nenth; break; case 3: //geg Spannung und Widerstand system("cls"); cout << s_ident << endl; cout << s_pwat << endl; //cout << "U:"; //cin >> USER_IN_1; //cout << "R:"; //cin >> USER_IN_2; cout << s_nenth; break; default: system("cls"); cout << s_ident << endl; cout << s_ueingabe << endl; } break; default: system("cls"); cout << s_ident << endl; cout << s_ueingabe << endl; } system("PAUSE"); //Ende der Haupt-Schleife }while(b_close=true); }
f_USER_IN_1 soll quadriert und anschließend durch f_USER_IN_2 geteilt werden.
der komplette Quelltext kann auch unter https://sourceforge.net/projects/calcurip/files/ eingesehen werden.vielen Dank für jede Hilfe.
-
Vielleicht liest du dir einfach mal an, was pow macht und wozu es da ist.
-
Hmmm ja, soweit ich das verstanden und gelesen habe,
kann ich mit pow quadrieren. Anscheinend ist das ja so, wie oben Umgesetzt, nicht der Fall ....Es geht also eher darum, dass mir evtl. jemand, der sich einem blutigen C++ Einsteiger annimmt erklärt, wie ich einen Wert quadriere, und diesen dann durch einen 2. Teilen kann.
-
-
Genau auf die Seite bin ich bereits gestoßen, als ich nach einer möglichkeit gesucht habe, den Wert zu quadrieren ....
Ich versteh aber das Beispiel nicht ....
-
Laß pow weiterschlafen.
cout << "\nU=" << f_USER_IN_1 * f_USER_IN_1 / f_USER_IN_2 << " Volt\n\n\n" << endl;
-
Na gut.
pow benötigt zwei Argumente und pow(x,y) = $$x^y$$
Jetzt klar, wie man quadriert?Eine andere, meiner Meinung nach vorzuziehende Variante ist allerdings die Multiplikation mit sich selbst: x*x
-
das hilft mir doch schon sehr viel weiter,
Danke