<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Klasse bauen]]></title><description><![CDATA[<p>servus,<br />
ich, neuling in c++, hab mir folgende kleine consolenanwendung zur berechung der quersumme mit reduktion auf eine ziffer geschrieben:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

int random() 
{ 
    int random_integer; 
    int lowest=1000, highest=9999; 
    int range=(highest-lowest)+1; 
    random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0)); 
    return (random_integer); 
}

int quer(int zahl) {
    int quer=0;
    int rest=0;

    do {
        rest = zahl%10;
        zahl = zahl/10;
        quer=quer+rest;
    } while (zahl &gt; 0);

    return quer;
}

int main()
{
    srand((unsigned)time(0));
    int a = random();
    int b = quer(a);
    cout &lt;&lt; a &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; b &lt;&lt; &quot;\n&quot;;

    do 
    {
    b = quer(b); 
    cout &lt;&lt; b &lt;&lt; &quot;\n&quot;;
    } while ( b &gt; 9);

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>funktioniert auch tadellos.</p>
<p>nun möchte ich aber diese methoden in einer klasse zusammenfassen.</p>
<p>wie stell ich sowas am besten an. und wie löse die runterbrechung auf eine ziffer eleganter?</p>
<p>später sollen auch noch weitere methoden hinzukommen, aber fürs erste reichen diese zwei.</p>
<p>bin für jede hilfe dankbar, tim</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199300/klasse-bauen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 12:53:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199300.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Nov 2007 22:53:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse bauen on Fri, 30 Nov 2007 22:55:36 GMT]]></title><description><![CDATA[<p>servus,<br />
ich, neuling in c++, hab mir folgende kleine consolenanwendung zur berechung der quersumme mit reduktion auf eine ziffer geschrieben:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

int random() 
{ 
    int random_integer; 
    int lowest=1000, highest=9999; 
    int range=(highest-lowest)+1; 
    random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0)); 
    return (random_integer); 
}

int quer(int zahl) {
    int quer=0;
    int rest=0;

    do {
        rest = zahl%10;
        zahl = zahl/10;
        quer=quer+rest;
    } while (zahl &gt; 0);

    return quer;
}

int main()
{
    srand((unsigned)time(0));
    int a = random();
    int b = quer(a);
    cout &lt;&lt; a &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; b &lt;&lt; &quot;\n&quot;;

    do 
    {
    b = quer(b); 
    cout &lt;&lt; b &lt;&lt; &quot;\n&quot;;
    } while ( b &gt; 9);

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>funktioniert auch tadellos.</p>
<p>nun möchte ich aber diese methoden in einer klasse zusammenfassen.</p>
<p>wie stell ich sowas am besten an. und wie löse die runterbrechung auf eine ziffer eleganter?</p>
<p>später sollen auch noch weitere methoden hinzukommen, aber fürs erste reichen diese zwei.</p>
<p>bin für jede hilfe dankbar, tim</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413186</guid><dc:creator><![CDATA[tize]]></dc:creator><pubDate>Fri, 30 Nov 2007 22:55:36 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 00:42:15 GMT]]></title><description><![CDATA[<p>ich habe mir jetzt deinen code garnicht angeschaut, aber so in etwa siehts dann aus, ist natürlich nicht getestet, nur vom prinzip her, blablabla! sind auch ein paar unsauberheiten drinne, aber so fürn anfang reichts. im netz findest du aber auch wirklich viel material zum lesen etc..</p>
<p>ob es sinn macht eine &quot;quersummen-klasse&quot; zu machen sei da mal so hingestellt. eher vielleicht als methode einer klasse die für berechnungen vorhanden ist oder so. lies dir mal was zum thema sinn einer klasse etc. durch.</p>
<p>header-datei</p>
<pre><code class="language-cpp">// tool.h
#ifndef _PROGRAMM_
#define _PROGRAMM_

#include &lt;iostream&gt;

// oft sinnvoll
namespace util {
	// Klassenbezeichnung
	class CCalc {
		public:
			// Konstruktor
			CQuer();

			//Destruktor
			~CQuer();

			// Zufallsmethode für int
			int random()

			// Methode für Quersumme (int)
			int quer(int zahl);

			// setzt variable bspl
			void setBspl(int wert);

			// liefert variable bspl
			int getBspl();

		private:
			// hier kommt geschütztes zeugs rein
			// .. zugriff von außen nur über public
			// beispiel bspl kann nur über getter/setter methode verändert werden.
			int m_bspl;
	};
}

#endif // _PROGRAMM_
</code></pre>
<p>source-datei</p>
<pre><code class="language-cpp">// tool.cpp
#include &quot;datei.h&quot;

//konstruktor
util::CQuer::CQuer() {
	// hier was zum initialisieren etc.
}

//destruktor
util::CQuer::~CQuer() {
	// hier was vorm zerstören des objekts
}

//zufall
int util::CQuer::random() {
	// inhalt etc.
	int rand = ... usw
	return rand;
}

//quer
int util::CQuer::quer(int zahl) {
	int quersumme;
	//quersumme von wert bilden

	return quersumme;
}

//setzt variable m_bspl
void util::CQuer::setBspl(int wert) {
	m_bspl = wert;
}

//liefert variable m_bspl
int util::CQuer::getBspl() {
	return m_bspl;
}
</code></pre>
<p>&quot;start&quot; datei</p>
<pre><code class="language-cpp">// main.cpp
#include &quot;tool.h&quot;

int main() {
	CQuer q;

	cout &lt;&lt; &quot;quersumme aus 123: &quot; &lt;&lt; q.quer(123) &lt;&lt; endl &lt;&lt; &quot;zufallszahl: &quot; &lt;&lt; q.random() &lt;&lt; endl;

	// geht natürlich auch:
	// int quersumme = q.quer(123);
	// int zufall = q.random();

	delete q;

	return 0;
}
</code></pre>
<p>so, aber links raussuchen hab ich jetzt keine lust mehr.<br />
viel spaß und bis dann</p>
<p>ps gewöhn dir EXIT_SUCCES mal schnell wieder ab und nimm einfach ne 0, es sei denn du hast deine eigenen &quot;fehlercodes&quot;, aber davon geh ich mal nicht aus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413216</guid><dc:creator><![CDATA[tester]]></dc:creator><pubDate>Sat, 01 Dec 2007 00:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 09:21:55 GMT]]></title><description><![CDATA[<p>Das return EXIT_SUCCESS; ist soweit ich weiß legitim, im Gegensatz zu einigen Teilen deiner Beispiele <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
</code></pre>
<p>Ist zwar im Header ok, aber ich würde es doch eher in die start-Datei verschieben, da es nur dort verwendet wird.</p>
<p>Bei</p>
<pre><code class="language-cpp">int random()
</code></pre>
<p>fehlt ein Semikolon am Ende <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Dann liegen cout und endl im Namensraum std::, d.h. entweder musst du std:: davor setzen, oder an den Anfang der Datei wo du es benutzen willst using namespace std; schreiben. (Ersteres vorzuziehen, und bitte niemals ein using in headern)</p>
<p>Zu guter letzt versuchst du mit</p>
<pre><code class="language-cpp">delete q;
</code></pre>
<p>ein Objekt was *nicht* mit new erzeugt wurde zu löschen, was einen Compilerfehler geben müsste.</p>
<p>Merke: Nur mit new erzeugte Objekte müssen mit delete; gelöscht werden, gleiches gilt für new[] und delete[].</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413252</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Sat, 01 Dec 2007 09:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 10:12:46 GMT]]></title><description><![CDATA[<p>Und Klassenname und Konstruktor/Destruktor müssen übereinstimmen:</p>
<pre><code class="language-cpp">class CQuer
{
   CQuer();
   ~CQuer();
};
</code></pre>
<p>Sonst verwirrst du ihn noch mehr...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413271</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 01 Dec 2007 10:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 11:19:11 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>Und Klassenname und Konstruktor/Destruktor müssen übereinstimmen:</p>
<pre><code class="language-cpp">class CQuer
{
   CQuer();
   ~CQuer();
};
</code></pre>
<p>Sonst verwirrst du ihn noch mehr...</p>
</blockquote>
<p>vollkommen richtig, das hätte mir noch auffalen müssen..<br />
der rest den kenny anzumerken hat is mit den worten</p>
<pre><code>ist natürlich nicht getestet, nur vom prinzip her, blablabla! sind auch ein paar unsauberheiten drinne, aber so fürn anfang reichts.
</code></pre>
<p>zu beantworten.. gut, das delete kann wirklich weg, aber hier in diesem textfeld kann man ja auch mal was übersehen und ich hatte vorher halt ne version mit new.</p>
<p>kenny, natürlich hast du recht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413283</guid><dc:creator><![CDATA[tester]]></dc:creator><pubDate>Sat, 01 Dec 2007 11:19:11 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 11:25:14 GMT]]></title><description><![CDATA[<p>vielen dank für eure hilfe und tipps. ich werd das jetzt ma zusammenfrimmeln und wenns zu fehlern kommt meld ich mich wieder.<br />
tim</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413287</guid><dc:creator><![CDATA[tize]]></dc:creator><pubDate>Sat, 01 Dec 2007 11:25:14 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 11:30:56 GMT]]></title><description><![CDATA[<p>Naja also in eine Klasse das zu packen wäre eigtl. in dem Fall nicht so sehr sinvoll ...</p>
<p><strong>math.hpp</strong></p>
<pre><code class="language-cpp">#if !defined MATH_HPP__INCLUDED
#define MATH_HPP__INCLUDED

#if (_MSC_VER &gt;= 1300)
#pragma once
#endif // (_MSC_VER &gt;= 1300)

#include &lt;cstdlib&gt;
#include &lt;ctime&gt;

namespace math
{
    int random(int min = 0, int max = 1000)
    {
        return min + static_cast&lt;int&gt;(((max - min) + 1) * std::rand() / (RAND_MAX + 1.0));
    }
    void random_init() { std::srand(static_cast&lt;unsigned&gt;(std::time(0))); }
    unsigned int checksum(int integer)
    {
        unsigned int result(0);
        for (; integer &gt; 0; integer /= 10)
            result += integer % 10;
        return result;
    }
};

#endif // MATH_HPP__INCLUDED
</code></pre>
<p>So wäre das evtl. sinnvoll. Einfach in einen Namensraum legen und die Funktion am besten möglichst wiederverwandbar machen und bsw. min und max bei random nicht statisch setzen ...</p>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;math.hpp&quot;

int main()
{
    math::random_init();
    int integer(math::random());
    std::cout &lt;&lt; &quot;- Integer: &quot; &lt;&lt; integer &lt;&lt; &quot;\n&quot;
              &lt;&lt; &quot;* Checksum: &quot; &lt;&lt; math::checksum(integer) &lt;&lt; std::endl;
    std::cin.get();
}
</code></pre>
<p>... so hat das vieel mehr style <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413292</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 01 Dec 2007 11:30:56 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 12:16:07 GMT]]></title><description><![CDATA[<p>also was soll ich nun machen?</p>
<p>dann fass ich ma kurz zusammen was ich damit überhaupt machen will:</p>
<p>ziel der ganzen übung ist es einen zahlencode zu generieren:</p>
<p>1234 5678 9012 3456</p>
<p>in dieser form etwa.</p>
<p>die quersumme der ersten 4 ziffern soll mir rückschlüsse über den anbieter geben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>die quersumme der addition der 3 quersummen der anderen ziffern soll mir den wert des codes liefern. beispiel:</p>
<p>quersumme1 = 1 --&gt; Anbieter A</p>
<p>quersumme2 = 8<br />
quersumme3 = 3<br />
quersumme4 = 9</p>
<p>summe = 20 -&gt; quersumme = 2 --&gt; wert = 30 euro</p>
<p>die quersummen sollen vorgegeben sein, so dass solange ein code generiert wird bis er auf die quersummen passt.</p>
<p>also es soll ne methode in der klasse ausgeführt werden mit 2 quersummen als vorgabe</p>
<pre><code class="language-cpp">keygen(int quer1, int quer2)
    ...
    return (code);
</code></pre>
<p>dieser gefundene code soll dann in einer txt datei abgeleget werden.</p>
<p>später, wenn der benutzer den code einlösen will, muss der eingegebene code mit der txt abgegliechen werden. wenn der code gefunden wurde, wird der wert gutgeschrieben und zu gleich aus der txt gelöscht.</p>
<p>also, ich muss da noch nen paar methoden schreiben, und deswegen dacht ich is ne klasse da ganz angebracht? oder bin ich da auf'n falschen weg?</p>
<p>bin für jede hilfe dankbar, tim</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413314</guid><dc:creator><![CDATA[tize]]></dc:creator><pubDate>Sat, 01 Dec 2007 12:16:07 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 15:59:20 GMT]]></title><description><![CDATA[<p>Ich sehe das so: Aus Sicht des Softwareentwicklers sind Klassen vor allem auch &quot;Baupläne&quot; für Objekte. Also was ist und bewirkt dieses Objekt? Beschreibe es an deinem konkreten Beispiel mit seinen Attributen und Methoden. Dann kann man über den Sinn einer Abstrahierung (Klasse) nachdenken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413417</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sat, 01 Dec 2007 15:59:20 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse bauen on Sat, 01 Dec 2007 16:54:24 GMT]]></title><description><![CDATA[<p>so hab das jetzt soweit ma gemacht. jetzt fehlt mir nur noch eine methode zum kontrollieren ob der code schon in der txt existiert und dann den code da ablegt</p>
<pre><code class="language-cpp">int random()
{
    int random_integer;
    int lowest=1000, highest=9999;
    int range=(highest-lowest)+1;
    random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
    return (random_integer);
}

int quer(int zahl) {
    int quer=0;
    int rest=0;

    while (zahl &gt; 9)
    {

    do {
        rest = zahl%10;
        zahl = zahl/10;
        quer = quer+rest;
    } while (zahl &gt; 0);

    zahl = quer;
    quer=0;
    rest=0;

    } ;

    return zahl;
}

int code (int check)
           {
           int code = 0;
           while ( quer(code) != check)
                 {
                 code = random();
                 };
                 return (code);
           }

int ziffer(int zahl, int stelle)
    {
    if (stelle == 1)
       {     
               zahl = zahl / 1000;
               return (zahl%10);
               }
    else if (stelle == 2)
         {
                    zahl = zahl / 100;
                    return (zahl%10);
                    }
    else if (stelle == 3)
         {
                    zahl = zahl / 10;
                    return (zahl%10);
                    }
    else if (stelle == 4)
         {
                    return (zahl%10);
                    }
    }

AnsiString keygen(int provider, int cash)
     {
                  int a = code(provider);
                  int swap = 0;

                  do{
                       swap = code(cash);
                      } while(ziffer(swap,1) == 0 || ziffer(swap,2) == 0 || ziffer(swap,3) == 0 || ziffer(swap,4) == 0);

                  int b = code(ziffer(swap,1));
                  int c = code(ziffer(swap,2));
                  int d = code(ziffer(swap,3));
                  int e = code(ziffer(swap,4));

                  AnsiString key;
                  key = IntToStr(a) + &quot; &quot; +
                        IntToStr(b) + &quot; &quot; +
                        IntToStr(c) + &quot; &quot; +
                        IntToStr(d) + &quot; &quot; +
                        IntToStr(e);

                  return (key);
     }
</code></pre>
<p>zur zeit ruf ich funktion per button auf</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1-&gt;Text = keygen(StrToInt(Edit2-&gt;Text),StrToInt(Edit3-&gt;Text));
}
</code></pre>
<p>Erhard Henkes schrieb:</p>
<blockquote>
<p>Also was ist und bewirkt dieses Objekt? Beschreibe es an deinem konkreten Beispiel mit seinen Attributen und Methoden. Dann kann man über den Sinn einer Abstrahierung (Klasse) nachdenken.</p>
</blockquote>
<p>was genau meinst du damit??? werd nich schlau daraus!</p>
<p>tim</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413448</guid><dc:creator><![CDATA[tize]]></dc:creator><pubDate>Sat, 01 Dec 2007 16:54:24 GMT</pubDate></item></channel></rss>