Neulingsfrage... ;) (Arrays)

RlDdLeR schrieb:
Es überrascht mich, dass man aus einem Dirk lOuis Buch eigentlich so gutes Wissen bekommen kann. Ich habe ein anderes Buch von ihm, in dem so wichtige Sachen wie Pointer einfach ausgelassen wurden. Vielleicht hat sich der Gute ja gewandelt ;) Ich hab hier noch C++ Entwicklung mit Linux von Thomas Wieland, auch ein sehr sehr gutes Buch.

*räusper* also das mit den Pointern musste ich mir auch erst ergooglen... aber für die ersten Schritte reicht das Buch vollkommen, denk ich :) C++-Entwicklung mit Linux ist auch ein interessantes Thema für mich, das ist aber nicht das Buch vom Data Becker-Verlag oder? Da hab ich die Rezensionen gelesen, die waren vernichtend...
 
sphreak schrieb:
Hm.. das Buch kenn ich nicht, aber ist bestimmt besser als der Volkard Kurs, den mag ich nämlich auch nicht, musste mich aber in der Schule damit rumschlagen.
Wünsche dir dann noch viel Spaß mit C++ :)

danke, den hab ich schon :) programmiere gerade ein unsinniges Programm mit endlosen Gemeinheiten und dem einzigen Ziel, den User zu quälen und ihm seine Zeit zu stehlen :D sowas wäre interessant für Windows-User *duck* die kennen ewige Nachfragen wie "Wollen Sie wirklich beenden? Ganz wirklich? Echt? Kommen Sie... das können Sie nicht machen..." doch sowieso schon ;)
 
folgendes buch kann ich noch empfehlen, ist aber eher was für C umsteiger, aber trotzdem gut: LINK
 
GeekGirl schrieb:
*räusper* also das mit den Pointern musste ich mir auch erst ergooglen... aber für die ersten Schritte reicht das Buch vollkommen, denk ich :) C++-Entwicklung mit Linux ist auch ein interessantes Thema für mich, das ist aber nicht das Buch vom Data Becker-Verlag oder? Da hab ich die Rezensionen gelesen, die waren vernichtend...

Nein, das Buch was ich meine ist vom dpunkt.verlag , gibt inzwíschen glaube schon eine zweite auflage, hab noch die erste, ist jedenfalls ein sehr schönes buch, obwohl man nicht denken sollte das man dort gleich auf seite 3 anfängt zu prograsmmieren, das kommt erst ab etwa seite 150 ;)
 
Erstmal hallo, bin neu.

Ich würd folgende Bücher vorschlagen, in dieser Reihenfolge:

- C++ lernen und professionell anwenden
- C++ Entpackt
- C++ Primer

MfG, vola.

PS:
Achso, es gibt kein ANSI C++ wie oben gesagt wurde.
Es gibt ANSI C und ISO C++.
 
Zuletzt bearbeitet:
Also ich möchte mir hier keine Feinde machen, aber sie hat nicht nach Buchtipps gefragt(sie hat schon zwei Bücher) und sie würde es auch nicht fragen, weil sie vorher mit der Boardsuche genug Bücher gefunden hätte ;) Und wenn sie gefragt hätte, dann würde sie nach C++ nicht nach C bÜcher fragen:)
 
Schon klar...

Wenn sie keine Zeiger kann ist es aber wohl Zeit für ein gutes Buch.
 
außerdem sind buchtips immer eine nette ergänzung. falls mal jemand die sufu nutzt und auf diesen thread stößt, hat er gleich eine liste netter books ;)
 
Oh ein Archer, hi! ^^

Jup, seh ich genauso.
Schaut euch nur mal die Bewertungen bei z.B. amazon.de zum ersten von mir genannten Buch an...

vola'
 
snax schrieb:
außerdem sind buchtips immer eine nette ergänzung. falls mal jemand die sufu nutzt und auf diesen thread stößt, hat er gleich eine liste netter books ;)

Soweit ich mich erinnern kann, gibt es schon so einen Buchthread :) Und bei jeder C++ Frage direkt eine ganze Liste mit C++ Büchenr zu posten ist auch nicht das Wahre:)

vola schrieb:
Wenn sie keine Zeiger kann ist es aber wohl Zeit für ein gutes Buch.
Sie hat C++ vor kurzem erst angefangen zu lernen. Ausserdem hat RIDDLER gesagt, dass ihn seinem Buch keine Zeiger vorkamen

So ich sag aber nix mehr dazu, dass macht hier nur den Thread kaputt.. Vielleicht sollte man die letzen Posts löschen:)
 
Um diesen Thread doch noch zu retten... Etwas Konstruktives!
Das ist ungetesteter C-Code... printf=cout, scanf=cin, stdio.h=iostream usw. Mit ein bisschen "gefrickel" sollte das klappen.

Du definierst dabei das (eindimensionale) Array feld und zwar genauso gross wie der Benutzer es haben will. Dann füllst es mit den Werten der Variable wert (wer hätte das jetzt gedacht).

#include <stdio.h>

main()
{
int groesse, wert, i, mittel, gesamt;
printf ("Geben Sie die Groesse des Feldes an:\n");
scanf ("%i", &groesse);
int feld[groesse];
for (i=1; i<=groesse; i++)
{
printf ("Geben Sie einen Wert ein:\n");
scanf ("%i", &wert);
feld = wert;
gesamt += feld;
}
mittel = gesamt / groesse;
printf ("Der Mittelwert betraegt: %i .\n", mittel);
}

Ich hoffe du hast das in etwa so gemeint.
In C/C++ bin ich auch etwas wackelig aber pointer sind ein Muss ... auf die Dauer.

P.S. : malloc, calloc und realloc sind sehr wohl Funktionen sowohl von C als auch von C++..

Niels
 
nikster77 schrieb:
Um diesen Thread doch noch zu retten... Etwas Konstruktives!
Das ist ungetesteter C-Code... printf=cout, scanf=cin, stdio.h=iostream usw. Mit ein bisschen "gefrickel" sollte das klappen.

Du definierst dabei das (eindimensionale) Array feld und zwar genauso gross wie der Benutzer es haben will. Dann füllst es mit den Werten der Variable wert (wer hätte das jetzt gedacht).

#include <stdio.h>

main()
{
int groesse, wert, i, mittel, gesamt;
printf ("Geben Sie die Groesse des Feldes an:\n");
scanf ("%i", &groesse);
int feld[groesse];
for (i=1; i<=groesse; i++)
{
printf ("Geben Sie einen Wert ein:\n");
scanf ("%i", &wert);
feld = wert;
gesamt += feld;
}
mittel = gesamt / groesse;
printf ("Der Mittelwert betraegt: %i .\n", mittel);
}

Ich hoffe du hast das in etwa so gemeint.
In C/C++ bin ich auch etwas wackelig aber pointer sind ein Muss ... auf die Dauer.

P.S. : malloc, calloc und realloc sind sehr wohl Funktionen sowohl von C als auch von C++..

Niels


ehrlich gesagt, komme ich mit diesem Beispiel nicht zurecht; egal, ob ich es
umstricke auf iostream etc., oder den Code so belasse, das Ergebnis ist immer ein Wert im Millionenbereich und das Programm handelt auch sonst recht unlogisch...

Danke aber trotzdem und überhaupt danke an alle für die guten Buchtipps ;) Das eine oder andere habe ich mir rausgepickt.

Viele liebe Grüße & nen schönen Sonntag
von GeekGirl (jetzt mit Mathelernen für Klausur beschäftigt)
 
nikster77 schrieb:
P.S. : malloc, calloc und realloc sind sehr wohl Funktionen sowohl von C als auch von C++..

Das habe ich garnicht bestritten, aber man sollte malloc und free nicht benutzen, einfach aus dem Grund, da sie keinerlei Ahnung von Konstruktoren und Destruktoren haben. Merkst du was ich meine? Wenn ich malloc in einem objektorientierten Programm verwende (was eigentlich auch der Sinn von C++ ist), dann wird keiner der ne gewonnenen Elemente konstruiert, somit ist das Schrott.
Desselbe gilt für free, wenn ich ein Objekt mit free vernichten will, dann wird es nicht dekonstruiert, d.h. kein Destruktor wird aufgerufen.

Zitieren wir mal sinngemäß das Buch "Effektiv C++ programmieren" von Scott Meyers (Addison-Wesley): Viel Code ist in C geschrieben, aber gerade den mit mallac und free drin, gilt es eigentlich weniger in C++ wiederzuverwenden, aus den oben genannten Gründen.

Ich glaube du würdest du Objektorientiertheit erschüttern wenn du sagen würdest das stimmt nicht ;)

Ich will keinen hier bekehren, aber wenn C++ Code gefragt ist, dann sollte schon C++ Code dastehen, nicht #include <iostream> und mittendrin dann malloc oder umgekehrt gilt dasselbe für C (nur das C mit new und delete nicht klarkommen würde).

@ vola: huch? was haben wir denn hier: http://www.cplusplus.com/doc/ansi/hfiles.html

Just my 2 cents.
 
Zuletzt bearbeitet:
naja.. @nikster77, korrekter C-code ist das nicht.. eher ein mischmasch aus C und C++.. ein C compiler duerfte da auch seine probleme bekommen ;)

@GeekGirl: um ein array zur laufzeit eine bestimmte Groesse zuzuordnen, benutzt du am besten new..
bsp:
Code:
cout << "Gib Groesse ein: ";
cin >> groesse;
double *werte = new double[groesse];
am ende natuerlich mit delete[] freigeben ;)

auf bald
oenone
 
scanf ("%i", &groesse);
int feld[groesse];
Das kann nicht funktionieren. groesse muss zur compile-time definiert sein. Darum braucht man ja den ganzen malloc-Kram, der Speicher erst zur runtime beschafft.
 
oenone schrieb:
naja.. @nikster77, korrekter C-code ist das nicht.. eher ein mischmasch aus C und C++.. ein C compiler duerfte da auch seine probleme bekommen ;)

@GeekGirl: um ein array zur laufzeit eine bestimmte Groesse zuzuordnen, benutzt du am besten new..
bsp:
Code:
cout << "Gib Groesse ein: ";
cin >> groesse;
double *werte = new double[groesse];
am ende natuerlich mit delete[] freigeben ;)

auf bald
oenone

hmmm... und an welcher Stelle kommt das delete[] genau? könntest du den von mir mit dem Eingangsposting verwendeten Quelltext dementsprechend modifizieren? dann hab auch ich als Frischling eine Chance :D danke
 
//Mittelwert berechnen
#include <iostream>

using namespace std;

int main()
{
double *werte; // Definition des Array
double mittelwert = 0;
int loop; //Schleifenvariable, wird unten festgelegt
int groesse;
cout << "Gib Groesse ein: ";
cin >> groesse;
werte = new double[groesse];
for(loop = 0; loop < groesse; loop++)
{
cout << " Gib einen Wert ein: ";
cin >> werte[loop]; /* um automatisch mit jedem neuen Schl.durchgang
auf das naechste Arrayelement zuzugreifen, uebergibt man die
Schleifenvariable als Index (wobei Index= 1. Zahl im Array)*/

mittelwert += werte[loop]; /* Array-Werte werden in der Variablen
mittelwert addiert */
}
cout << "\n Mittelwert: " << (mittelwert/groesse) << endl;
delete[] werte;
return 0;
}

So seh ich das. Und kein malloc und co in C++ ;)
 

Ähnliche Themen

dynamische Speicherreservierung

C Programm unter Unix

Problem mit Texteingabe

deprecated conversion from string constant to ‘char*’

wirre zeichen :(

Zurück
Oben