Hilfe bei C++

Guten Morgen Freunde.

Wie ich bereits im anderen Thread erwähnte, habe ich so das ein oder andere Problem, Arrays/Felder bei C++ zu verstehen.

Ich wäre sehr dankbar, wenn jemand ein paar gute Anleitungen/Tutorials zum Lernen und Verwenden dieser Sachen auf Lager hätte.

Am besten sogar als Link, da mein Webmail-Account komischerweise keine Dateianhängsel oder -einfügungen unterstützt und ich hier kein Outlook auf dem Rechner habe.

Mfg & Danke
Tilo aka JJ

http://www.google.de

super, Tom! Ziemlich arrogante Antwort.

Wie ich bereits im anderen Thread erwähnte, habe ich so das ein oder andere Problem, Arrays/Felder bei C++ zu verstehen.

wie benutzt du denn dein C++? oldschool wie C oder arbeitest du objektorientiert oder machst du ein mischmasch aus beiden?

wenn du konventionell programmierst, dann kann ich die das original C-Buch von den C-schoepfern Kerningham/Ritchy aus den 70ern ans herz legen: da erfaehrst du alles: arrays, zeiger, zeiger auf zeiger, arrays als zeiger definieren (ohne dass ein vorher definiertes array existiert, auf das gezeigt wird! das geht NUR in C! das ist so geil!) etc. OO-C habe ich selbst noch nie programmiert.

ein tip: wenn du C schreiben willst, dann sind zeiger pflicht. zeiger koennen einfach alles in C.

viel spass,
Dr.HelmutKohl

super, Tom! Ziemlich arrogante Antwort.

Danke Nodens, du nimmst mir die Worte aus dem Mund.

Ich frage lieber mal hier (und im SoI-Forum auch, zugegeben), wo ich weiss, dass es Leute gibt, die sich 100%ig damit auskennen und mir gezielt weiterhelfen können, anstatt die 10.000 Ergebnisse von http://www.google.de durchzusuchen.

Ich habe hier schließlich auch zu arbeiten und nicht nur Zeit abzusitzen.



wie benutzt du denn dein C++? oldschool wie C oder arbeitest du objektorientiert oder machst du ein mischmasch aus beiden?

Das ist jetzt ein sehr gute Frage. Ich lerne anhand von C++ gerade generell das Programmieren.

Bis auf einen Grundlagenkurs mal an der VHS (DIE Kenntnisse sind so doer so schon wieder vergessen) und html-Programmierung habe ich noch genaugenommen GAR keine “Erfahrung”.

Wie soll ich dir da jetzt sagen, ob ich oldschool oder anders Programmiere?

Am besten, ich schreibe dir mal ein ganz einfaches Beispielprogramm, was ich erstellt habe hier herein:


//kreisb01.cpp
#include
using namespace std;

int main() {

// Variablen werden deklariert

const double pi = 3.14159265;
float r;
float d;
float U;
double F;
double O;
double V;


// Eingabe des Radius’

cout << "\nBitte geben sie den Radius ‘r’ des Kreises, bzw. der Kugel an: ";
cin >> r;


// Formeln werden aufgestellt

d=2r;
U=2
pir;
F=pi
rr;
O=4
pirr;
V=(4/3)pirrr;


cout << “\n\nDer Radius des Objekts wurde angegeben mit r = " << r << " [LE]”<< “\n”;
cout << “\nDaraus ergeben sich folgende Dimensionen:” << “\n\n”;


// Abmessungen des Objekts werden ausgegeben

cout << “\nDurchmesser…d = " << d << " [LE]”;
cout << “\nUmfang (Kreis)…U = " << U << " [LE]”;
cout << “\nFlaeche (Kreis)…F = " << F << " [FE]”;
cout << “\nOberflaeche (Kugel)…O = " << O << " [FE]”;
cout << “\nVolumen (Kugel)…V = " << V << " [LE^3]”;

cout << “\n\n\n(c) Tilo Franke 03092002” << “\n”;

return 0;
}


Also so sehen im Moment eigentlich alle meine Programme aus.

Kannst du mir dazu jetzt was sagen?

MfG & Danke
Tilo aka JJ

Hi, ich hab ma auf die schnelle geguckt
Da steht viel und ist glaub ich ganz ok für Anfänger. Allerdings Wird da nicht vertieft auf Sachen eingegangen.

C++ Grundwissen

Ich hoffe das hilft dir ein wenig

Also ich weiss nicht was du jetzt zu deinem Programm wissen willst aber n Array kommt da nicht vor :smiley:

Da werden wie du schon im Kommentar geschrieben hast einfach Variabeln angelegt, dann der Radius eingelesen, darauf hin werden nun die anderen Variabeln mit hilfe des Radius berechnet und dann einfach wieder ausgegeben, nichts wirklich schlimmes bei.

Wenn dich die “[” Klammern da irritieren: Das is auch nur Ausgabe und steht dann halt für FE: Flächen Einheiten und LE: Längen Einheiten würd ich ma sagen

das /n am Anfang steht immer für einen Zeilenumbruch (sorry falls du dir verarscht vorkommst, weiss ja nicht wie weit du bist :smiley:)

guck dir einfach mal die Lektion 3 von meinem Link oben an, da steht alles zum cout Befehl was man am Anfang wissen muss.

Ich lerne anhand von C++ gerade generell das Programmieren.

dein beispiel ist konventionell. :wink:

wenn du generel programmieren lernen willst, dann ist C eine harte nuss. allerdings: wenn du C kannst, dann kannst du auch jede andere sprache relativ leicht lernen. :sunglasses:

ich wuerde sir daher dringend raten, dich erst mal mit der sprache selbst vertraut zu machen, bevor du arrays programmierst. gerade C gibt dir unendlich viele moeglichkeiten dazu, aber auch unendlich viele moeglichkeiten, fehler zu machen (ich habe mal den rechner so zum absturz gebracht, dass nicht mal mehr der reset-button funktionierte)

du brauchst ein gutes buch, das die basics erklaert & ein nachschlageverzeichnis bietet. alles andere macht dich nur krank im kopf.

so long,
Dr.HelmutKohl

Jo, der normale Weg ist auch erstmal, C an sich zu verstehen. Ohne den ganzen objektorientierten Kram.

Und Kohl hat vollkommen Recht. Verstehe C und Du verstehst jede Sprache. Grob gesagt.

C ist mit die restriktivste Sprache, die es gibt. Da musst Du jedes kleinste Fitzelchen deklarieren, definieren. Dagegen sind Sprachen wie php geradezu luxurioes.

Zu Arrays generell kann ich denke ich schon helfen. Hau mich halt mal an ueber icq oder mail mit einem konkreten Problem. Habe ueber die Jahre eine Menge mit C gemacht. Und habe auch ein hervorragendes Buch ueber C an sich. Mein Standardnachschlagewerk, immer greifbar, immer direkt neben dem Monitor :grin:

Ansonsten ist natuerlich auch Programmieren unter C++ immer ein Mischmasch. Man kann zwar ohne ++ programmieren. Aber ohne C gehts halt nicht :wink:
Ueber C++ spezifische Sachen darf man mich nix fragen. Hab die ganzen objektorientierten Sachen nie gelernt.
Aber wie eben schon gesagt. C an sich kenne ich schon sehr gut.

Beorn

@ Giang:

Danke erstmal für den Link.

Also ich weiss nicht was du jetzt zu deinem Programm wissen willst aber n Array kommt da nicht vor…

Das liegt wohl daran, dass ich keine Arrays KANN. Das programm an sich IST auch von mir, wie man unschwer am copyright unten erkennt g Daher irritieren mich die eckigen Klammern auch ned (genaus wie alles andere am Programm :wink: ), weil ich die ja selber gesetzt habe.

Das sollte auch nur dazu dienen, Kohl zu verdeutlichen, wie meine Programme im Allgemeinen aussehen.

Konntest du aber ned wissen, oki :wink:


@ Kohl

ich wuerde sir daher dringend raten, dich erst mal mit der sprache selbst vertraut zu machen, bevor du arrays programmierst…

Erwähnte ich, dass ich anhand eines Buches lerne, von Helmut Erlenkötter “C++, objektorientiertes Programmieren von Anfang an”? :wink:
Dort bin ich jetzt in Kapitel ‘3.1.5 Felder und Zeichenketten’ angelangt und Thema dieses Kapitels sind numal Arrays.

Also alles was vorher kommt, scheine ich bereits gemacht zu haben.

(Es GIBT aber auch noch ein Buch von H.Erlenkötter, das heisst nur ‘C Programmieren von Anfang an’ und eines, das heisst ‘C# - C Sharp, Universell Programmieren von Anfang an’)

@ Beorn

Und habe auch ein hervorragendes Buch ueber C an sich. Mein Standardnachschlagewerk, immer greifbar, immer direkt neben dem Monitor

Wie heisst das Buch denn mein lieber Beorn? :wink:

Danke mal wieder und bis nachher
Tilo aka JJ

Hier mal mein erstes laufendes Array-Programm:

//test0001.cpp
#include
using namespace std;

int main() {

int test[2][3][4];
test[0][0][0]=1;
test[0][0][1]=2;
test[0][0][2]=3;
test[0][0][3]=4;
test[0][1][0]=5;
test[0][1][1]=6;
test[0][1][2]=7;
test[0][1][3]=8;
test[0][2][0]=9;
test[0][2][1]=10;
test[0][2][2]=11;
test[0][2][3]=12;
test[1][0][0]=13;
test[1][0][1]=14;
test[1][0][2]=15;
test[1][0][3]=16;
test[1][1][0]=17;
test[1][1][1]=18;
test[1][1][2]=19;
test[1][1][3]=20;
test[1][2][0]=21;
test[1][2][1]=22;
test[1][2][2]=23;
test[1][2][3]=24;

cout << “\n”;
cout << " " << int (test[0][0][0]);
cout << " " << int (test[0][0][1]);
cout << " " << int (test[0][0][2]);
cout << " " << int (test[0][0][3]);
cout << " " << int (test[0][1][0]);
cout << " " << int (test[0][1][1]);
cout << " " << int (test[0][1][2]);
cout << " " << int (test[0][1][3]);
cout << " " << int (test[0][2][0]);
cout << " " << int (test[0][2][1]);
cout << " " << int (test[0][2][2]);
cout << " " << int (test[0][2][3]);
cout << " " << int (test[1][0][0]);
cout << " " << int (test[1][0][1]);
cout << " " << int (test[1][0][2]);
cout << " " << int (test[1][0][3]);
cout << " " << int (test[1][1][0]);
cout << " " << int (test[1][1][1]);
cout << " " << int (test[1][1][2]);
cout << " " << int (test[1][1][3]);
cout << " " << int (test[1][2][0]);
cout << " " << int (test[1][2][1]);
cout << " " << int (test[1][2][2]);
cout << " " << int (test[1][2][3]);
return 0;
}

Ausgabe: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24


Das ist noch von gestern Spätnachmittag. Konstruieren geht, wofür ich das brauche: KEINEN SCHIMMER!


Das hier ist mein zweites laufendes Array-Programm:


//test0002.cpp
#include
using namespace std;

int main() {

char test1[2][8]={‘D’, ‘a’, ‘s’, ’ ', ‘i’, ‘s’, ‘t’, ’ ', ‘e’, ‘i’, ‘n’, ’ ', ‘T’, ‘e’, ‘s’, ‘t’};

cout << “\n”;
cout << char (test1[0][0]);
cout << char (test1[0][1]);
cout << char (test1[0][2]);
cout << char (test1[0][3]);
cout << char (test1[0][4]);
cout << char (test1[0][5]);
cout << char (test1[0][6]);
cout << char (test1[0][7]);
cout << char (test1[1][0]);
cout << char (test1[1][1]);
cout << char (test1[1][2]);
cout << char (test1[1][3]);
cout << char (test1[1][4]);
cout << char (test1[1][5]);
cout << char (test1[1][6]);
cout << char (test1[1][7]);
return 0;
}


Das ist von jetzt gerade. Hier war schon die Konstruktion ein Problem. Und wofür ich das brauche? NOCH WENIGER SCHIMMER!

MfG & Danke an alle Helfer
Tilo aka JJ

Letztes vergiss erstmal fuer den Anfang. C Sharp ist ja noch brandneu. Nachfolger von C++ und eine Verschmelzung aus J++ und C++.
Es sei denn euer Verein da verwendet schon das neueste .net Visual Studio.

Kann ich Dir nachher sagen wenn ich zuhause bin. Auswendig weiss ich das jetzt nicht.

Verstehe die Frage nicht. Wofuer man Arrays braucht? Also sicherlich natuerlich nicht fuer die Faelle die Du hier mal getestet hast.
Arrays werden vorrangig zur Matrizenberechnung verwendet, aber auch als Datentabelle (vergleichen wir es mal grob mit Excel).
Prinzipiell verwendet man auch immer Arrays, wenn man mehrere zusammengehoerige Werte oder Strings in einer “Variable” speichern will.
Vektorberechnung z.B. (x,y,z-Werte).
Fuer all sowas halt.

Wenn das ueberhaupt die Frage war :wink:

Beorn

bist du evtl an ein paar kleinen beispielprogrammen interessiert?

habe die klausur auch erst vor 2 semestern geschrieben und hab da noch ein paar einfache progs zu.
ich hab das erst an beispielen alles gerafft. fande die synthax in buechern sehr bescheiden ohne vorhandene (teilweise sehr fortgeschrittene), oder beorns :smiley: kentnisse zu verstehen.

nochma danke an fasti und vorallem auch an beorn

Ja, die Programme hab ich auch alle noch rumfliegen.

Aber die helfen JarJar kaum, da keine objektorientierten Parts drin sind. Nicht dass die jetzt so unglaublich von Noeten waeren. Aber er lernt ja schon mit den aktuellen Ausgabeverfahren. Da wird nicht mehr geprintet, sonder ge"cout"et :wink:

Hab mir eben auch das erste Beispielprogramm in seinem Buch mal zeigen lassen. Tss. Es wird alles immer komplexer.
Da wird nicht mehr wie vor 15 Jahren ein einfaches “Hello World” auf den Bildschirm gezaubert, nee, da muss man schon direkt 11+5 berechnen… :wink:

Beorn

Da wird nicht mehr wie vor 15 Jahren ein einfaches “Hello World” auf den Bildschirm gezaubert

ich hatte letztens son hello world-programm in JAVA aufs auge gedrueckt bekommen - da musste man ´ne eigene klasse fuer anlegen…

KRANK DAS ALLES!

hehe, ja das Beispiel kenne ich… das war dann auch schon der Anfang vom Ende meiner Karriere als objektorientierter Hobbyprogrammierer. Darauf hatte ich dann doch keinen Bock.

Aber es wird alles immer schlimmer.

Da baut jemand ne Index-html-page mit Word (klar, ich wuerde auch nicht auf die Idee kommen :wink: ).
Einfach schwarzer Hintergrund und ein 3D-Schriftzug “Blablub Blubsen”.

Und der Quellcode??? Da bekommt man das kalte Grauen!! Der geht ueber 5 (!!!) Bildschirmseiten mit WILDESTEN Definitionen und jede Menge Krams. Jooonas, da ist mir ja nix mehr eingefallen. Sowas nennt sich dann XML.

Die Sachen moegen zwar im Detaill mehr koennen. Aber die einfachen Dinge werden dadurch so erschwert und komplex gestaltet, dass einem Hoeren und Sehen vergeht, aber vor Allem das Lesen des Codes…

Ich brauche fuer so ne Seite 8 Zeilen HTML Code, wenn ich Zeilenumbrueche setze, um die Lesbarkeit zu erhoehen.
Ok, dann hab ich ein GIF Bild drin, in dem der 3D Schriftzug abgelegt ist. Aber wenigstens ist dann der Code noch lesbar.

Also ob das alles so richtig ist :roll_eyes:

Oder Programmieren in C. Da baut man ein Programm, das einem bei der Berechnung eines Ellipsoiden hilft. Im Konsolenprogramm hacke ich da meine 50 Zeilen hin. Dann kompilieren, ausfuehren, werte eingeben. Ausgabefile mit einem Plotprogramm ausdrucken. Fertig.
In Visual C bin ich erst mal 20min. damit beschaeftigt, jede Menge Klassen, Methoden und Formen einzubinden, damit ich ne feche Windows Applikation habe, in der ich halt die Werte in ein schoenes grafisches Formular eingeben kann.

Verrueckte Welt…

Beorn

@ Macke&Beorn:

Beispiel Programme helfen mir bestimmt weiter, die Befehle kann ich schlicht durch die neuen ersetzen nehme ich an. Ich lerne am bessten an konkreten Beispielen, nicht sowas wie… test[1][2][3], etc.

@ Beorn:

  • Was zur Himmelspforte sind Matrizen?
  • Ich kann kein Excel :slightly_frowning_face:

–Das mit der Vektorrechnung verstehe ich, ist ja einleuchtend. Nur verstehe ich nicht, WIE das dann gehen soll.


Ich lese mal ein paar nette Sachen, die ich noch so gesagt bekommen habe. Hört aber bitte nicht auf, mir mehr Input zu geben.

Mit einem andauernden 360° Input verstehe ich das dann alles vielleicht auch mal.


BTW: Soll ich am Montag meinem “Chef” sagen, dass ich C++ einfahc zu schwer zum Einsteigen ist und ich mit C anfangen will?

MfG & Danke
Tilo aka JJ

  • Was zur Himmelspforte sind Matrizen?

das ist jetzt spass, oder?

10 20 30
5 17 2 → das ist eine 3x3 Matrix, das sind 3 gleichungen
12 0 9 mit 3 unbekannten

Soll ich am Montag meinem “Chef” sagen, dass ich C++ einfahc zu schwer zum Einsteigen ist und ich mit C anfangen will?

C++ IST C, erweitert um objektorientierung

Jo das stimmt sicherlich. Ich schau nachher mal was ich so da habe.

Du hast aber ABI ja? SCNR
Matrizen: Man kann zum Beispiel eine Waermeverteilung in einer Matrix abspeichern. Also man hat in Spalten und in Zeilen Werte in °C

Spalten in x-Richtung
Spalte 0 → 0cm
Spalte 1 → 1cm
.
.
.

Zeilen in y-Richtung
Zeile 0 → 0cm
Zeile 1 → 1cm
.
.
.

Und so weiter.

Dann hast Du praktisch eine Flaeche vor Dir. Die Werte in den Feldern geben Dir dann die Temperatur an dieser Stelle x,y an.
Und damit kann man dann rumrechnen.

Besseres Beispiel mit Vektoren.

Du hast Vektor a (x,y,z) und Vektor b (x,y,z) und willst dann das Kreuzprodukt berechnen.
Das machste dann mit Matrizen ganz einfach.

c ist der Ergebnisvektor:

c[0]=(a[1]*b[2] - a[2]*b[1])
c[1]=(a[2]*b[0] - a[0]*b[2])
c[2]=(a[0]*b[1] - a[1]*b[0])

c ist der Vektor, der senkrecht auf der Ebene steht, die von a und b aufgespannt wird.
In der Physik berechnet man so z.B. den Drallvektor (aus Radius und Geschwindigkeit).

Nur mal so als Beispiel.


Hmm, nicht so schnell die Flinte ins Korn werfen :smiley: Nur Mut. Das wird schon. Ausserdem denke ich schon, dass Dein Chef einfach C++ sehen will und nix anderes. Aber letzten Endes musst Du das natuerlich wissen…

Beorn

Ja auch ein schoenes Beispiel:

Du hast dann in den Spalten die Unbekannten (f,g,h z.B.).
Normalerweise noch einen Ergebnisvektor:

Nehmen wir also:
Die oben stehende Matrix. Und einen Ergebnisvektor (1 2 3).

Dann heissen die 3 Gleichungen:

  1. 10f + 20g + 30*h = 1
  2. 05f + 17g + 02*h = 2
  3. 12f + 00g + 09*h = 3

Drei Gleichungen mit 3 Unbekannten sind diskret und damit loesbar. Mit einem Algorithmus wie Gauss ganz einfach. Und sowas uebernimmt dann Dein C-Programm. Berechnet die Dreiecksmatrix und daraus dann die Werte der Unbekannten. So einfach ist das :wink:

C++ IST C, erweitert um objektorientierung

Schon, aber wenn er einen Wuerfel zeichnen soll, der sich dreht, dann geht das nicht ohne Methoden und Klassen. Und das ist tiefstes ++ bei C.
So hab ich seine Aufgabe da verstanden. Natuerlich nicht auf den Wuerfel fixiert. Aber vom Prinzip her.

Beorn