[Gelöst] Pythagoras Programm zur Berechnung der Längen



  • Also erst mal vorweg: Ich bin Azubi im ersten Lehrjahr und mache eine Ausbildung zum Systemintegrator. Programmieren ist für mich ein absolut neues Land und ich kann kaum etwas. Nur ist mein Problem, dass ich es können muss! Ob ich nun will oder nicht. Es interessiert mich sehr und ich wünschte mir nichts lieber als C++ flüssig zu beherrschen, aber im Moment bin ich ein Amateur.

    Nun habe ich neulich angefangen ein Programm in c++ zu schreiben, welches mir die Katheten/Hypothenusen berechnen soll. Dazu habe ich das Programm erstmals in der Konsole geschrieben. Es hat funktioniert. So weit so gut. Nun wollte ich einen Schritt weiter gehen und es in einer Windows Forms Anwedung schreiben. Ich scheitere jedoch an der Konvertierung und der Abfrage der Checkboxen.

    So sollte es zum Schluss aussehen und funktionieren.
    http://imageshack.us/photo/my-images/813/phytagoras.jpg

    Mein bischeriger Code sieht so aus:

    #pragma once
    
    namespace pytagoras {
    
    	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
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Button^  btnRechnen;
    	protected: 
    
    	private: System::Windows::Forms::Button^  btnClear;
    
    	private: System::Windows::Forms::TextBox^  txt1;
    	private: System::Windows::Forms::TextBox^  txt2;
    
    	protected: 
    
    	private: System::Windows::Forms::Label^  label1;
    	private: System::Windows::Forms::TextBox^  txt3;
    
    	private: System::Windows::Forms::Label^  label2;
    	private: System::Windows::Forms::CheckBox^  chkBox1;
    	private: System::Windows::Forms::CheckBox^  chkBox2;
    
    	private:
    		/// <summary>
    		/// Erforderliche Designervariable.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    		/// <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->btnRechnen = (gcnew System::Windows::Forms::Button());
    			this->btnClear = (gcnew System::Windows::Forms::Button());
    			this->txt1 = (gcnew System::Windows::Forms::TextBox());
    			this->txt2 = (gcnew System::Windows::Forms::TextBox());
    			this->label1 = (gcnew System::Windows::Forms::Label());
    			this->txt3 = (gcnew System::Windows::Forms::TextBox());
    			this->label2 = (gcnew System::Windows::Forms::Label());
    			this->chkBox1 = (gcnew System::Windows::Forms::CheckBox());
    			this->chkBox2 = (gcnew System::Windows::Forms::CheckBox());
    			this->SuspendLayout();
    			// 
    			// btnRechnen
    			// 
    			this->btnRechnen->Location = System::Drawing::Point(35, 96);
    			this->btnRechnen->Name = L"btnRechnen";
    			this->btnRechnen->Size = System::Drawing::Size(75, 23);
    			this->btnRechnen->TabIndex = 0;
    			this->btnRechnen->Text = L"Rechnen";
    			this->btnRechnen->UseVisualStyleBackColor = true;
    			this->btnRechnen->Click += gcnew System::EventHandler(this, &Form1::btnRechnen_Click);
    			// 
    			// btnClear
    			// 
    			this->btnClear->Location = System::Drawing::Point(155, 96);
    			this->btnClear->Name = L"btnClear";
    			this->btnClear->Size = System::Drawing::Size(75, 23);
    			this->btnClear->TabIndex = 1;
    			this->btnClear->Text = L"Löschen!";
    			this->btnClear->UseVisualStyleBackColor = true;
    			// 
    			// txt1
    			// 
    			this->txt1->Location = System::Drawing::Point(35, 52);
    			this->txt1->Name = L"txt1";
    			this->txt1->Size = System::Drawing::Size(75, 20);
    			this->txt1->TabIndex = 3;
    			// 
    			// txt2
    			// 
    			this->txt2->Location = System::Drawing::Point(145, 52);
    			this->txt2->Name = L"txt2";
    			this->txt2->Size = System::Drawing::Size(75, 20);
    			this->txt2->TabIndex = 4;
    			// 
    			// txt3
    			// 
    			this->txt3->Location = System::Drawing::Point(87, 210);
    			this->txt3->Name = L"txt3";
    			this->txt3->Size = System::Drawing::Size(100, 20);
    			this->txt3->TabIndex = 6;
    			// 
    			// label1
    			// 
    			this->label1->AutoSize = true;
    			this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 10, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
    				static_cast<System::Byte>(0)));
    			this->label1->Location = System::Drawing::Point(41, 12);
    			this->label1->Name = L"label1";
    			this->label1->Size = System::Drawing::Size(57, 17);
    			this->label1->TabIndex = 5;
    			this->label1->Text = L"Kathete";
    			// 
    			// label2
    			// 
    			this->label2->AutoSize = true;
    			this->label2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 12, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
    				static_cast<System::Byte>(0)));
    			this->label2->Location = System::Drawing::Point(99, 187);
    			this->label2->Name = L"label2";
    			this->label2->Size = System::Drawing::Size(72, 20);
    			this->label2->TabIndex = 7;
    			this->label2->Text = L"Ergebnis";
    			// 
    			// chkBox1
    			// 
    			this->chkBox1->AutoSize = true;
    			this->chkBox1->Location = System::Drawing::Point(145, 13);
    			this->chkBox1->Name = L"chkBox1";
    			this->chkBox1->Size = System::Drawing::Size(63, 17);
    			this->chkBox1->TabIndex = 8;
    			this->chkBox1->Text = L"Kathete";
    			this->chkBox1->UseVisualStyleBackColor = true;
    			// 
    			// chkBox2
    			// 
    			this->chkBox2->AutoSize = true;
    			this->chkBox2->Location = System::Drawing::Point(145, 37);
    			this->chkBox2->Name = L"chkBox2";
    			this->chkBox2->Size = System::Drawing::Size(89, 17);
    			this->chkBox2->TabIndex = 9;
    			this->chkBox2->Text = L"Hypothenuse";
    			this->chkBox2->UseVisualStyleBackColor = true;
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(284, 262);
    			this->Controls->Add(this->chkBox2);
    			this->Controls->Add(this->chkBox1);
    			this->Controls->Add(this->label2);
    			this->Controls->Add(this->txt3);
    			this->Controls->Add(this->label1);
    			this->Controls->Add(this->txt2);
    			this->Controls->Add(this->txt1);
    			this->Controls->Add(this->btnClear);
    			this->Controls->Add(this->btnRechnen);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->ResumeLayout(false);
    			this->PerformLayout();
    
    		}
    #pragma endregion
    	private: System::Void btnRechnen_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    			int intInputValue=Convert::ToInt32(txt1->Text);
    			int txt1=0;
    			int txt2=0;
    			int txt3=0;
    			bool blAuswahl = true;
    
    			if (chkBox1->Checked)
    			{
    				int d;
    				d=(txt1*txt1)+(txt2*txt2);
    				txt3->Text=unsigned int sqrt(d);
    			}
    
    		 }
    private: System::Void btnClear_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    			txt1->Clear();
    			txt2->Clear();
    			txt3->Clear();
    
    		 }
    };
    }
    

    Wäre jemand so freundlich mir zu erklären, wie ich das ganze in float oder double konvertiere und wie ich die Checkbox abfrage richtig mache? Ich weiß im Moment einfach nicht mehr weiter... Von daher bitte ich dringend um Hilfe. Danke schon mal im Vorraus.



  • AnonKira schrieb:

    Also erst mal vorweg: Ich bin Azubi im ersten Lehrjahr und mache eine Ausbildung zum Systemintegrator. Programmieren ist für mich ein absolut neues Land und ich kann kaum etwas. Nur ist mein Problem, dass ich es können muss! Ob ich nun will oder nicht. Es interessiert mich sehr und ich wünschte mir nichts lieber als C++ flüssig zu beherrschen, aber im Moment bin ich ein Amateur.

    Ich hoffe du fliegst jetzt nicht vom Stuhl, aber das was du da machst, ist kein C++, sondern C++/CLI, etwas ganz anders.



  • Also habe ich das in den falschen Topic gepostet? oO



  • AnonKira schrieb:

    Also habe ich das in den falschen Topic gepostet? oO

    Jop, du hast das falsche Unterforum erwischt, aber ein Moderator ist bestimmt so freundlich und verschiebt deinen Thread gleich.



  • AnonKira schrieb:

    Also habe ich das in den falschen Topic gepostet? oO

    Das ist das kleinere Problem für dich. Dein viel größeres ist, dass das kein C++ ist, sondern eine Microsoft-Sprache.



  • o.o Jetzt bin ich komplett verwirrt. Bitte nochmal langsam und auf Deutsch...



  • Das was du da betreibst, ist die Sprache C++/CLI, die von Microsoft für .NET Interop erfunden wurde. Mit ISO-Standard C++ hat das nichts am Hut.



  • Bitte verschieben in C++/CLI.



  • Du verstehst mich nicht. Du willst vermutlich nicht C++/CLI lernen, sondern Standard C++.



  • 314159265358979 schrieb:

    Du verstehst mich nicht. Du willst vermutlich nicht C++/CLI lernen, sondern Standard C++.

    Warum sollte er das, wenn er eine Windows Forms Anwendung schreiben will?



  • Das will er doch vermutlich nicht. Er weiß es nur nicht.



  • AnonKira schrieb:

    Nun wollte ich einen Schritt weiter gehen und es in einer Windows Forms Anwedung schreiben.



  • Er weiß doch nicht mal, was Winforms überhaupt ist. Wie soll er da wissen, ob er das will?



  • 9796543 schrieb:

    314159265358979 schrieb:

    Du verstehst mich nicht. Du willst vermutlich nicht C++/CLI lernen, sondern Standard C++.

    Warum sollte er das, wenn er eine Windows Forms Anwendung schreiben will?

    Wenn er eine Windows Forms Anwendung schreiben will, dann soll er C# verwenden, C++/CLI ist dafür absolut ungeeignet...



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich muss genau das lernen was ich geschrieben habe. Ich schreibe demnächst eine Klausur darüber und wollte mich an dem Programm versuchen. Ich muss leider genau diese Sprache können. Ich hoffe ihr könnt mir helfen.



  • wo genau liegt gerade dein problem du hast doch eigentlich schon alles verwendet was du brauchst.

    die checkbox abfrage hast du schon verwendet und das convert auch ?

    if (chkBox1->Checked) 
                { 
                    double d;  
                    d=sqrt((txt1*txt1)+(txt2*txt2)); 
                    txt3->Text= Convert::ToString(d) 
                }
    

    das einzige kleine problem was ich bei dir grade sehe ist das deine variablen txt1,txt2,txt3 einmal als int und einmal als textbox verben sind... das funktioniert zwar aber solte man trotzdem vermeiden.



  • und wenn du die textbox als double einlesen wilst geht das genauso wie du sie als int eingelesen hast.

    double doubleInputValue= Convert::ToDouble(txt1->Text)



  • AnonKira schrieb:

    Ich muss genau das lernen was ich geschrieben habe. Ich schreibe demnächst eine Klausur darüber und wollte mich an dem Programm versuchen.

    Du schreibst eine Klausur über WinForms mit C++/CLI? wtf? Bist du dir da sicher?
    Was für eine Schule/Uni ist das?



  • Berufsschule für Wirtschaft und Verwaltung. Ich mache eine Ausbildung zum Systemintegrator und wir haben ein halbes Jahr lang C++ gemacht und haben nach den Winterferien mit C++/CLI mit .NET angefangen und ich blicke da im Moment einfach nicht durch...



  • Sion schrieb:

    wo genau liegt gerade dein problem du hast doch eigentlich schon alles verwendet was du brauchst.

    die checkbox abfrage hast du schon verwendet und das convert auch ?

    if (chkBox1->Checked) 
                { 
                    double d;  
                    d=sqrt((txt1*txt1)+(txt2*txt2)); 
                    txt3->Text= Convert::ToString(d) 
                }
    

    das einzige kleine problem was ich bei dir grade sehe ist das deine variablen txt1,txt2,txt3 einmal als int und einmal als textbox verben sind... das funktioniert zwar aber solte man trotzdem vermeiden.

    Wenn ich das mache, wirft er mir folgenenden Fehler aus:

    1>c:\users\amarseuti.houndjasper\documents\visual studio 2010\projects\pytagoras\pytagoras\Form1.h(195): error C3861: "sqrt": Bezeichner wurde nicht gefunden.
    1>c:\users\amarseuti.houndjasper\documents\visual studio 2010\projects\pytagoras\pytagoras\Form1.h(196): error C2227: Links von "->Text" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
    

    Edit:
    Im Moment sieht der Code wie folgt aus:

    double doubleInputValue= Convert::ToDouble(txt1->Text);
    			int txt1=0;
    			int txt2=0;
    			int txt3=0;
    			bool blAuswahl = true;
    
    			if (chkBox1->Checked)
    			{
    				double d;  
                    d=sqrt((txt1*txt1)+(txt2*txt2));
                    txt3->Text= Convert::ToString(d);
    			}
    

    Der Fehler ist dennoch der selbe...


Anmelden zum Antworten