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

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

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

Dabei seit
15.08.2002
Beiträge
142
Alter
41
...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

Dabei seit
15.08.2002
Beiträge
142
Alter
41
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

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

Dabei seit
15.08.2002
Beiträge
142
Alter
41
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

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

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.
 

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

Dabei seit
15.08.2002
Beiträge
142
Alter
41
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

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

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

Gnoovy

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

Dabei seit
15.08.2002
Beiträge
142
Alter
41
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

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

Dabei seit
15.08.2002
Beiträge
142
Alter
41
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

Dabei seit
15.08.2002
Beiträge
142
Alter
41
...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

Threadstarter
Dabei seit
04.02.2002
Beiträge
2.182
Alter
38
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

C Programmierung Aufgaben: Hallo Community, ich brauch mal wieder etas Hilfe. Ich steig dir den Array in C nicht durch. Wir sollen in der Berufsschule ein magisches Quadrat...
C++ IGEL funktioniert nicht in Dev Cpp und VC++: Hallo, ich arbeite an einem Projekt für die Schule, indem ich Igel einsetzen soll, ein Programmteil aus dem Buch C/C++ von Ulrich Kaiser und...
GELÖST Treiber für Netzwerkcontroler Gesucht: Hallo, ich brauche dringend Hilfe. Habe mir mit meinen Notebook einen Virus eingefangen und musste eine Neuinstallation machen. Das Notebook habe...
GELÖST Neue HDD wird nicht erkannt !: Hi Leute, hab hier ein kleines Problem, und zwar habe ich mir vor kurzem ne neue HDD zugelegt, die kam heute an, aber ich habe keine Ahnung wie...
GELÖST Brauche 1gb DDR-Ram, kannst du was empfehlen ?: hi Leute, ich brauche unbedingt 1gb ram riegel. hab mich etwas umgehört und war in einigen Shops in der nähe und die meinten ddr-ram wären schon...
Oben