myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C++ Array an Klasse übergeben

Willkommen

myGully

Links

Forum

 
Antwort
 
Themen-Optionen Ansicht
Ungelesen 20.09.11, 16:12   #1
KingSnakeViper
Anfänger
 
Benutzerbild von KingSnakeViper
 
Registriert seit: Mar 2010
Beiträge: 12
Bedankt: 6
KingSnakeViper ist noch neu hier! | 0 Respekt Punkte
Standard C++ Array an Klasse übergeben

Hallo Leute,

ein wenig Erfahrung in Sachen programmieren hab ich schon. Allerdings bin ich seit stunden zu gange, das Array aus dem Main unten zu der Klasse zu übergeben, damit die Methoden damit arbeiten können. Hab schon viel rumgegoogelt, ausprobiert und bekomm es einfach nicht hin.

Wenn ich das Programm anwerfe kommt da nur Murks raus. Ich weiß nicht ob das Kopieren des Arrays funktioniert und die Methoden nichts abbekommen oder ob es schon am kopieren scheitert.

Wäre nett wenn da jemand nen Blick drüber werfen könnte.

P.S.: Ich hab auch schon versucht das Array einfach direkt in den Konstruktor zu schreiben, hat aber auch nichts gebracht. Irgendwie bekomm ich das mit den Klassen einfach nicht auf die Kette.

Zitat:
#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

//------------------------------------------------------------------------------

class Liga {

public:
Liga () {}
Liga (char name [20], int pt[19][10])
{ memcpy(tab, pt, sizeof(int)*10*19);}

/* Liga (int pt[19][10]){
for (int i=0; i<10; i++){
for (int j=0; j<19; j++){
tab[j][i]=pt[j][i];
};
};
};*/

void copy(int *pt);
void platz_ausgabe();
void p_durchschnitt ();
void p_minimum ();
void anz_punkte ();

private:
int tab[19][10];

static const int platz=5;
static const int jahr=2008;

static const int platz_d=1;

static const int platz_m=16;

static const int punkte_min=70;

};

//------------------------------------------------------------------------------

void Liga:: platz_ausgabe(){
cout << "Punkte fuer Platz " << platz << " im Jahr " << jahr << " :\t" << Liga::tab[platz][jahr-2000] << endl; };

//------------------------------------------------------------------------------

void Liga:: p_durchschnitt (){
float p_durchs=0.0;
for (int i=0; i<10; i++){
p_durchs=p_durchs+Liga::tab[platz_d][i];}
cout << "Durchschnittliche Punkte fuer Platz " << platz_d << ":\t" << p_durchs/10 << endl; };

//------------------------------------------------------------------------------

void Liga:: p_minimum (){
int p_mini;
for (int i=2; i<19; i++) {
if (Liga::tab[platz_m][i]<Liga::tab[platz_m][i-1]){
p_mini=i;};
};
cout << "Minimale Punkte fuer Platz " << platz_m << ":\t" << Liga::tab[platz_m][p_mini] << endl; };

//------------------------------------------------------------------------------

void Liga::anz_punkte (){
int anz=0;
for (int i=0; i<10; i++){
for (int j=1; j<19; j++){
if (Liga::tab[j][i] <=punkte_min){
anz++;};
};
};
cout << "Anzahl der Teams mit ueber " << punkte_min << " Punkte:\t" << anz << endl;


// Testausgabe der Tabelle mit tab. Da kommen leider nur wirre Zahlen raus
for (int i=0; i<19; i++){
for (int j=1; j<10; j++){
cout << " " << Liga::tab[i][j];
};
cout << endl;
};
};

Zitat:
//------------------------------------------------------------------------------

int main(void) {

Liga Bliga;
Bliga.platz_ausgabe();
Bliga.p_durchschnitt();
Bliga.p_minimum();
Bliga.anz_punkte();

// Jahr 2000 01 02 03 04 05 06 07 08 09
int pt [19][10]= {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Dummy
{63, 70, 75, 74, 77, 75, 70, 76, 69, 70}, // Platz 01
{62, 69, 59, 68, 63, 70, 68, 66, 67, 65}, // Platz 02
{58, 68, 58, 65, 59, 68, 66, 64, 64, 61}, // Platz 03
{57, 61, 56, 64, 58, 61, 60, 54, 63, 59}, // Platz 04
{56, 61, 54, 56, 58, 52, 51, 54, 61, 57}, // Platz 05
{55, 56, 52, 55, 57, 48, 48, 52, 59, 55}, // Platz 06
{53, 56, 49, 50, 55, 46, 45, 51, 55, 52}, // Platz 07
{50, 50, 46, 49, 51, 44, 45, 49, 50, 50}, // Platz 08
{47, 50, 45, 44, 48, 43, 44, 46, 49, 47}, // Platz 09
{46, 46, 45, 42, 45, 42, 44, 44, 45, 46}, // Platz 10
{44, 40, 43, 39, 43, 38, 44, 43, 40, 42}, // Platz 11
{43, 39, 42, 39, 42, 38, 42, 41, 39, 39}, // Platz 12
{41, 35, 41, 38, 40, 37, 41, 40, 33, 38}, // Platz 13
{39, 34, 40, 37, 38, 36, 40, 36, 32, 35}, // Platz 14
{38, 34, 40, 36, 36, 34, 37, 34, 31, 33}, // Platz 15
{35, 30, 36, 32, 35, 33, 34, 31, 30, 31}, // Platz 16
{35, 29, 30, 32, 30, 30, 34, 30, 29, 28}, // Platz 17
{27, 22, 30, 23, 18, 27, 26, 29, 28, 24}};// Platz 18

// Testausgabe der Tabelle mit pt
for (int i=0; i<19; i++){
for (int j=1; j<10; j++){
cout << " " << pt[i][j];
};
cout << endl;
};

system("pause");
};

//------------------------------------------------------------------------------
KingSnakeViper ist offline   Mit Zitat antworten
Ungelesen 21.09.11, 08:49   #2
HappyMike34
Erfahrenes Mitglied
 
Registriert seit: Mar 2010
Beiträge: 676
Bedankt: 655
HappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt Punkte
Standard

Sinnvoller und objektorientierter wäre auch die Verwendung von std:vector statt arrays.
HappyMike34 ist offline   Mit Zitat antworten
Ungelesen 21.09.11, 11:26   #3
Mint
Ist öfter hier
 
Benutzerbild von Mint
 
Registriert seit: Dec 2009
Beiträge: 245
Bedankt: 80
Mint gewöhnt sich langsam dran | 48 Respekt Punkte
Standard

Besser lesbar wäre dein Code in den
Code:
Code-Tags, die
    nämlich die Formatierung
        beibehalten! ;)
mfg, Mint.
__________________
Zitat:
Zitat von John Lennon
Musik gehört allen. Nur die Plattenfirmen denken, dass man sie besitzen kann.

Mint ist offline   Mit Zitat antworten
Ungelesen 21.09.11, 20:41   #4
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Code:
class Bla
{
public:
	void setPt(int pt[19][10])
	{	
		memcpy(m_pt, pt, sizeof(int)*10*19);
	}

protected:
	int m_pt[19][10];
};


int main() 
{
	int pt [19][10] = { 1, 2, 3 };
	
	Bla bla;
	bla.setPt(pt);

}
Dein Versuch ins Saubere übertragen, funktioniert sicher.
germgerm ist offline   Mit Zitat antworten
Ungelesen 25.09.11, 14:57   #5
Pennywise1911
Anfänger
 
Registriert seit: Aug 2008
Beiträge: 11
Bedankt: 1
Pennywise1911 ist noch neu hier! | 0 Respekt Punkte
Standard

Ich bin zwar kein C++ programmierer aber ich bin mir relativ sicher, dass [][] in C++ bei meinen versuchen nicht funktioniert hat. Nach massenhaft "Nimm nen Vector" Antworten kam dann sowas:

Code:
int** pt = new int*[19];
for (int i = 0; i < 19; i++) {
   pt[i] = new int[10];
}
Dann solltest du einen 19x10 Array haben. Da ein Array nur ein Pointer ist sollte int** _pt als Methodenparameter funktionieren.

Aber wie schon gesagt. Ich bin kein C++ Dev und ich hasse C++ wie die Pest und würde nie auf den Gedanken kommen es zu benutzen.
Pennywise1911 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 Uhr.


Sitemap

().