c++ programmierung

Diskutiere c++ programmierung im Programmierung Forum im Bereich Software Forum; hi leutz, meine frage: ich möchte in c++ kreise rechtecke und linien programmieren. von unserer schule haben wir nur arbeitsblätter bekommen...
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
hi leutz,



meine frage: ich möchte in c++ kreise rechtecke und linien programmieren. von unserer schule haben wir nur arbeitsblätter bekommen, in denen drinnsteht: " ein kreis wird mit ellipse(int x, int y, int x2, int y2, int c1, int c2)" gemacht. hoffe ich habe das jetzt auswendig richtig geschrieben. aber es wird ja so nicht erklärt, welche berechnung man machen muss, oder? ich hoffe mir kann da jemand helfen.
 
stpe

stpe

Dabei seit
14.11.2001
Beiträge
2.729
verstehe Dein problem nicht so ganz. was meinst Du mit "welche berechnungen man machen muss"?

aus welcher library kommt diese funktion ellipse() denn?
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
...du brauchst netuerlich die formel der ellipse...

nimm irgend ein geometrie buch, schlag die seite mit der ellipse formel auf, du wirst sehen dass all diese variablen benoetigt werden....schreibe diese um, und schluss.
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
falls ellipse() bereits implementiert, nimm x fuer x1,x2, y fuer y1,y2 und der radius fuer c1,c2....

....weiss ansonsten auch nicht was du genau meinst
 
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
jo vielen dank erstmal ihr habt mir sehr geholfen und ich hab das programm auch hinbekommen nun mal wieder die nächste frage. mein ausbilder hat mir ne aufgabe gegeben ein c++ programm mit klassen zu programmieren. das programm soll artikel, artikelnummer und vk-preis aufnehmen und anschließend wieder ausgeben. hat alles an für sich geklappt. jetzt soll ich mal probieren den new operator neu zu definieren. könnt ihr mir sagen was damit gemeint ist. vielleicht der delete - operator, um den speicher wieder freizugeben?
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
wenn du den aufruf new verwendest, findet eine instanzierung des objektes statt, d.h: im hintergrund wird arbeitsspeicher fuer den objekt reserviert(und dies alles mit new)....

dein arbeitsgeber(toent schon richtig geil), will sehr wahrscheinlich, dass du die vorgehensweise von new kapierst.... findest du leicht heraus, jetzt wo du weisst was du machen musst :)

an die arbeit!

:)
 
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
jo ok das wusste ich schon, aber wie definiere ich denn den new operator neu, kann mir darunter ehrlich gesagt nicht so viel vorstellen. hat dieser delete operator was damit zu tun? durch den wird ja der speicher wieder freigegeben, gelle?
 
stpe

stpe

Dabei seit
14.11.2001
Beiträge
2.729
vielleicht meint er, Du sollst den konstruktor der klasse aendern, der wird naemlich ausgefuehrt, wenn Du eine instanz der klasse mit "new" anlegst.
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
...oder overloaden?
 
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
und wie geht das?


habe folgenden new - befehl ausgeführt. meine klasse heißt artikel, also habe ich gemacht: artikel *einlesen=new artikel[auswahl], wie kann ich diesen nun neu definieren?
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
hab das sternchen uebersehen....

falls du einen neuen konstruktor kreieren willst(also auch artikel), kannst du den einfach dazu definieren, einziges was du anders machen musst, sind andere parameter zu definieren(der compilator merkt, dass es sich um eine andere signatur handelt(da andere parameter) und tut der konstruktor dazu kreieren, dann hast du also zwei konstruktoren mit demselben namen, das nennt man overloaden, c++ und java moeglich.... c aber nicht.
 
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
das heißt wenn ich den befehl artikel *einlesen=new artikel[auswahl] habe, könnte ich danach z.B. den befehl artikel *einlesen2=new artikel[auswahl] machen? wie muss ich das dann im programm einbauen? habe in meinem programm zwei for-schleifen, die eine zu den eingaben, die andere zu den ausgaben
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
gib mal den code und sag mir genau was du machen willst! wir sind glaub ich nicht auf derselben laengenwelle...
 
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
also hier mal das programm:


//Reinert.cpp -> Uebung zu Klassen




#include<iostream>
#include<cstring>


using namespace std;


class artikel
{


private:


char name[30];
int artikelnummer;
double preis;


public:

void info(void);
void nameeinlesen(void);
void artikeleinlesen(void);
void preiseinlesen(void);
void ausgabe(void);




};







void artikel::info(void)
{


cout <<"\nProgramm zur Artikelverwaltung";
}



void artikel::nameeinlesen(void)
{


cout <<"\n---------------------";

cout <<"\nBitte geben Sie einen Artikel ein: ";
cin >>name;

cout <<"\n---------------------";
}

void artikel::artikeleinlesen(void)
{

cout <<"\n---------------------";

cout <<"\nBitte geben Sie eine Artikelnummer ein: ";
cin >>artikelnummer;

cout <<"\n---------------------";
}


void artikel::preiseinlesen(void)
{

cout <<"\n---------------------";

cout <<"\nBitte geben Sie einen VK ein: ";
cin >>preis;

cout <<"\n---------------------";

}



void artikel::ausgabe(void)
{

cout <<"\n|------------------------|";
cout <<"\n|Ausgabe der For-Schleife|";
cout <<"\n|------------------------|";


cout <<"\n---------------------";

cout <<"\nAusgabe Artikel: " <<name;

cout <<"\n---------------------";

cout <<"\nAusgabe Artikelnummer: " <<artikelnummer;

cout <<"\n---------------------";

cout <<"\nAusgabe Artikelpreis " <<preis;

cout <<"\n---------------------";


}




int main()
{

int wieoft=0;
int zaehler=0;
char auswahl;
int entscheidung;


cout <<"\nWie oft Wollen Sie Eingaben taetigen?";
cin >>wieoft;

artikel *einlesen=new artikel[wieoft];


for(zaehler=0;zaehler<wieoft;zaehler++)
{
einlesen[zaehler].nameeinlesen();
einlesen[zaehler].artikeleinlesen();
einlesen[zaehler].preiseinlesen();

}


cout <<"\n---------------------";
cout <<"\nWollen Sie an einem Artikel den namen veraendern? [j] [n]";
cin >>auswahl;
cout <<"\n---------------------";


if(auswahl=='j')
{

cout <<"\n---------------------";
cout <<"\nVon welcher Eingabe?";
cin >>entscheidung;
cout <<"\n---------------------";
cout <<"\n---------------------";
einlesen[entscheidung-1].nameeinlesen();
}

cout <<"\n---------------------";
cout <<"\nWollen Sie an einer Artikelnummer veraendern? [j] [n]";
cin >>auswahl;


if(auswahl=='j')
{

cout <<"\n---------------------";
cout <<"\nVon welcher Eingabe?";
cin >>entscheidung;
cout <<"\n---------------------";
cout <<"\n---------------------";
einlesen[entscheidung-1].artikeleinlesen();
}

cout <<"\n---------------------";
cout <<"\nWollen Sie einen Preis veraendern? [j] [n]";
cin >>auswahl;

if(auswahl=='j')
{

cout <<"\n---------------------";
cout <<"\nVon welcher Eingabe?";
cin >>entscheidung;
cout <<"\n---------------------";
cout <<"\n---------------------";
einlesen[entscheidung-1].preiseinlesen();
cout <<"\n---------------------";
}



for(zaehler=0;zaehler<wieoft;zaehler++)
{

einlesen[zaehler].ausgabe();

}





return 0;
}



wie muss ich nun hier den new operator neu definieren?
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
du sorry aber..... ich moechte dir wirklich gerne helfen, ich versteh aber nicht was du machen sollst, falls dir dein arbeitsgeber doch eine fragestellung gegeben hat, bitte schreib auf was er genau geschrieben hat, was will er mit dem new? new allociert einfach neuer speicherplatz fuer die instanzierung deines objekts....(also hier artikel).... will er, dass du dieses manuell machst? also mit malloc? oder will er dass du eine methoder schreibst (wie z.Bsp createartikel()) der dies alles uebernimmt?

moment..... hast du eigendlich einen konstruktor kreiiert? sowas wie
class Artikel{
.
public:
artikel artikel(...parameter)
.
.
artikel (parameter)

{ //instanzierung der parameter EINES objektes-> ein artikel}

/*...damit du dann*/ artikel1= new artikel(parameter) //eingeben kannst.

ist es das? (alles pseudo code.... meine staerke liegt eher bei java und c als c++ ........ :) aber sollte in etwa dasselbe sein....
 
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
ja genau so was will er. jedenfalls hab ich das so verstanden he... aber wie müsste ich denn das mit dem konstruktor denn machen? hab da schon alles mögliche probiert. irgendwo hab ich da einen gedankenfehler drin

wüsstest du wie das geht? ;D
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
ja :) ... nur eben c++ code ist mir ziemlich fremd, pass es einfach an...

ochmals zu erklaerung.

du machst eine klasse, names artikel, die instanzierung deiner klasse ergibt das objekt, artikel. du kannst dir dies so am besten vorstellen, du besitzt innerhalb deine klasse einen bauplan, dieser waer der konstruktor, und dieser hat derselbe name wie deine klasse. ich habe eine klasse names haus, und innerhalb der klasse der bauplan haus. wenn ich dann ein objekt kreiere, also ein haus bauen will, (mit meinhaus= new haus(........)), ensteht mein haus per hilfe des konstruktors. genau so ist es mit deinen artikeln. implementiere in deiner klasse artikel also die methode artikel der dann automatisch zum konstruktor wird, da der compiler weiss: aha methodenname = classe -> konstruktor.

diese methode konstruiert also einen neuen objekt artikel, dem du ein namen geben musst, damit er sie von anderen artikeln unterscheiden kann. falls u mit c erfahrung hast, ein struct... oder typedef entspricht einem objekt, nur eben dass es mit c++ mit einer methode->objekt erschaffen wird.

in deinem konstruktor gibst du dann an, was dieses objekt so enthalten muss. am besten definiert du private variabeln, die dann lokal jedem objekt zugeteilt werden. fuer jede variabel, zum beispiel preis... kannst du beliebigen algorithmus zufuegen. es hoert sich vielleich kompliziert an, aber sobald du alles verstanden hast was ich oben geschrieben habe, wirst du es checken.....

mit der implementation kann ich dir nicht helfen..... ausser du willst es in java seheh :)

viel glueck
 
jolie

jolie

Dabei seit
15.08.2002
Beiträge
142
Alter
40
...noch was, ich denke, dass du da was nicht ganz verstehst.....

dein hauptprogramm, also dort wo du deinen artikeln parameter geben wirst, hat mit der klasse nichts zu tun!!!

das kommt spaeter, denke daran, classe-> bauplan+methoden nicht gleich instanzierung, mache einfach alles schoen getrennt. :)
 
Gnoovy

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.179
Alter
37
ok erstmal supi vielen dank. an für sich hab ich das alles schon so verstanden, hab nur ein problem, dass wenn ich in meinem konstruktor beispielsweise die syntax artikel *einlesen=new atikel[10] reinschreibe, wie ich diese syntax dan in meinem int main(), sprich also hauptprogramm oder besser gesagt eigentliches programm implementiere.
 
Thema:

c++ programmierung

c++ programmierung - Ähnliche Themen

  • Programmierung

    Programmierung: var bufferp:array[0..511] of byte; . . . c:='\\.\PhysicalDrive1'+chr(0)...
  • Ich finde meinen Fehler

    Ich finde meinen Fehler: Bin grade bei der Entschlüsselung und immer kommt genau das gleiche bei Raus habt ihr nen Plan wo der Fehler ist FOR /F "skip=%skip%" %%A IN...
  • Programmierung

    Programmierung: Ich programiere unter VS2010(C#). Seit Tagen versuche ich aus einer alten IB-Datenbank Blob-Felder auszulesen. Das ist aber nicht das Thema, da...
  • Batch Programmierung

    Batch Programmierung: Guten Nabend miteinander. Also ich darf für meinen Chef ein kleines Programm schreiben welches Die Namen aus einer Textdatei ausliest und danach...
  • Ähnliche Themen
  • Programmierung

    Programmierung: var bufferp:array[0..511] of byte; . . . c:='\\.\PhysicalDrive1'+chr(0)...
  • Ich finde meinen Fehler

    Ich finde meinen Fehler: Bin grade bei der Entschlüsselung und immer kommt genau das gleiche bei Raus habt ihr nen Plan wo der Fehler ist FOR /F "skip=%skip%" %%A IN...
  • Programmierung

    Programmierung: Ich programiere unter VS2010(C#). Seit Tagen versuche ich aus einer alten IB-Datenbank Blob-Felder auszulesen. Das ist aber nicht das Thema, da...
  • Batch Programmierung

    Batch Programmierung: Guten Nabend miteinander. Also ich darf für meinen Chef ein kleines Programm schreiben welches Die Namen aus einer Textdatei ausliest und danach...
  • Oben