Von Konsole in Forms



  • Hallo Leute,

    hoffe ich bin hier richtig...
    Wir sind in der Schule grad bei Funktionen...
    Der Lehrer hat uns eine Konsolen - Funktion gegeben und wir sollen das nun
    in Windows Forms umsetzen...

    Hier das Konsolenprogramm

    #include <iostream>
    using namespace std;
    float umrechne(float);		// Funktionsprototyp
    
    int main()
    {
    	float Fahrenheit;		//Definition der Variable Fahrenheit
    	float Celsius;			//Definition der Variable Celsius
    
    	// Eingabe
    	cout << " Bitte Temperatur in Celsius angeben: ";
    	cin >> Celsius;
    
    	// Verarbeitung
       	Fahrenheit = umrechne (Celsius);
    
    	// Ausgabe
    	cout << "\nDie Temperatur in Fahrenheit ist: " << Fahrenheit << endl;
    
    	return 0;
    }
    
    // Aufruf der Funktion
    float umrechne (float TemperaturC)
    {
    	float TemperaturF;
    	TemperaturF =  (( TemperaturC * 9.0 ) / 5.0 ) + 32;
    
    	return TemperaturF;
    }
    

    und hier was ich schon gemacht habe...Der Compiler sagt: lokale Funktionsdefinition nicht erlaubt...was muss ich bei Funktionen in Forms beachten??

    Hier die Windows Form

    #pragma once
    
    namespace UmrechnungCelsius_Fahrenheit
    {
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    
    	/// <summary> 
    	/// Zusammenfassung für Form1
    	///
    	/// Achtung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie die Eigenschaft
    	///          'Ressourcendateiname' für das Compilertool für verwaltete Ressourcen ändern, 
    	///          das allen .resx-Dateien zugewiesen ist, von denen diese Klasse abhängt. 
    	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
    	///          arbeiten, die diesem Formular zugewiesen sind.
    	/// </summary>
    	public __gc class Form1 : public System::Windows::Forms::Form
    	{	
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    		}
    
    	protected:
    		void Dispose(Boolean disposing)
    		{
    			if (disposing && components)
    			{
    				components->Dispose();
    			}
    			__super::Dispose(disposing);
    		}
    	private: System::Windows::Forms::Label *  lbAusgabe;
    	private: System::Windows::Forms::TextBox *  tbEinheit;
    	private: System::Windows::Forms::Button *  btFahrenheit;
    	private: System::Windows::Forms::Button *  btCelsius;
    
    	private:
    		/// <summary>
    		/// Erforderliche Designervariable.
    		/// </summary>
    		System::ComponentModel::Container * components;
    
    		/// <summary>
    		/// Erforderliche Methode für die Designerunterstützung. 
    		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->lbAusgabe = new System::Windows::Forms::Label();
    			this->tbEinheit = new System::Windows::Forms::TextBox();
    			this->btFahrenheit = new System::Windows::Forms::Button();
    			this->btCelsius = new System::Windows::Forms::Button();
    			this->SuspendLayout();
    			// 
    			// lbAusgabe
    			// 
    			this->lbAusgabe->Location = System::Drawing::Point(104, 104);
    			this->lbAusgabe->Name = S"lbAusgabe";
    			this->lbAusgabe->Size = System::Drawing::Size(200, 32);
    			this->lbAusgabe->TabIndex = 0;
    			// 
    			// tbEinheit
    			// 
    			this->tbEinheit->Location = System::Drawing::Point(152, 40);
    			this->tbEinheit->Name = S"tbEinheit";
    			this->tbEinheit->Size = System::Drawing::Size(88, 20);
    			this->tbEinheit->TabIndex = 1;
    			this->tbEinheit->Text = S"";
    			// 
    			// btFahrenheit
    			// 
    			this->btFahrenheit->Location = System::Drawing::Point(56, 200);
    			this->btFahrenheit->Name = S"btFahrenheit";
    			this->btFahrenheit->Size = System::Drawing::Size(112, 32);
    			this->btFahrenheit->TabIndex = 2;
    			this->btFahrenheit->Text = S"Berechne Fahrenheit";
    			this->btFahrenheit->Click += new System::EventHandler(this, btFahrenheit_Click);
    			// 
    			// btCelsius
    			// 
    			this->btCelsius->Location = System::Drawing::Point(240, 200);
    			this->btCelsius->Name = S"btCelsius";
    			this->btCelsius->Size = System::Drawing::Size(104, 32);
    			this->btCelsius->TabIndex = 3;
    			this->btCelsius->Text = S"Berechne Grad Celsius";
    			// 
    			// Form1
    			// 
    			this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
    			this->ClientSize = System::Drawing::Size(432, 266);
    			this->Controls->Add(this->btCelsius);
    			this->Controls->Add(this->btFahrenheit);
    			this->Controls->Add(this->tbEinheit);
    			this->Controls->Add(this->lbAusgabe);
    			this->Name = S"Form1";
    			this->Text = S"Form1";
    			this->ResumeLayout(false);
    
    		}	
    	private: System::Void btFahrenheit_Click(System::Object *  sender, System::EventArgs *  e)
    
    			 {
    				 double CtoF(double TemperaturC) 
      { 
        double TemperaturF; 
        TemperaturF = (( TemperaturC * 9 ) / 5 ) + 32;         
        return TemperaturF; 
      } 
    
      void AusgabeF(void) 
      { 
        double TemperaturC, TemperaturF; 
        TemperaturC = Convert::ToDouble(tbEinheit->Text); 
        TemperaturF = CtoF(TemperaturC); 
        lbAusgabe->Text = Convert::ToString(TemperaturF); 
        return void; 
      } 
    			 }
    
    	};
    }
    

    VIelen Dank 😕



  • Du definierst "double CtoF(double TemperaturC)" innerhalb einer anderen Funktion. Das geht natürlich nicht. Mach es ausserhalb der Funktion "btFahrenheit_Click"...



  • Soll ich das einfach vor die Funktion Schreiben? Muss ich da nix deklarieren 0der so??? Kannst du das Programm kopieren und mir zeigen wie dus meinst???

    Danke



  • private: 
    System::Void btFahrenheit_Click(System::Object *  sender, System::EventArgs *  e) 
    { 
      AusgabeF();
    } 
    double CtoF(double TemperaturC) 
    { 
      double TemperaturF; 
      TemperaturF = (( TemperaturC * 9 ) / 5 ) + 32;         
      return TemperaturF; 
    } 
    
    void AusgabeF(void) 
    { 
      double TemperaturC, TemperaturF; 
      TemperaturC = Convert::ToDouble(tbEinheit->Text); 
      TemperaturF = CtoF(TemperaturC); 
      lbAusgabe->Text = Convert::ToString(TemperaturF); 
      return void; 
    }
    


  • VIelen Dank für deine Hilfe!
    Es klappt.... 👍


Anmelden zum Antworten