![]() |
| | Themen-Optionen |
| | Nach oben #1 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
|
Hi! Ich beschäftige mich gerade zwangsweise mit C++, wobei meine Programmierzeit damit schon ne Weile her ist... Ich habe folgendes probiert: Code: #include <iostream>
using namespace std;
#include <conio.h>
int main()
{
int i, j;
cin>>i; cin>>j;
//const int first = i;
//const int second = j;
int tabelle[1][1];
tabelle[0][0] = i;
tabelle[0][1] = j;
cout << tabelle[0][0] << endl;
cout << tabelle[0][1] << endl;
tabelle[1][0] = i+j;
tabelle[1][1] = i-j;
cout << tabelle[0][0] << endl;
cout << tabelle[0][1] << endl;
cout << tabelle[0][0] << " + " << tabelle[0][1] << " = " << tabelle[1][0] << endl;
cout << tabelle[0][0] << " - " << tabelle[0][1] << " = " << tabelle[1][1] << endl;
getche();
return 0;
}
Zitat:
Es geht dabei nicht darum, dass ich das so lösen müßte, ich spiele einfach gerade ein wenig damit herum. In echt muss ich ein array von dynamischer Größe haben.... // edit: genauer gesagt: ich werde einige 2-dim-arrays und ein paar 3-dim-arrays brauchen, die anfänglich alle mit dem Wert 0 behaftet sind und erst anschl. mit wirklichen Werten gefüllt werden. Wenn mir da jmd. helfen könnte, wäre das echt klasse! In Matlab ist das so einfach... Aber ich brauche das in C++
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! Geändert von Jann Hendrik (18.05.2006 um 18:28 Uhr). | |
| | |
| | Nach oben #2 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
Moin, bei deiner tabellen initialisierung reservierst du zu wenig Platz. java Code:
Behebt den Fehler. ---Edit Mit ist jedoch ein Rätsel warum kein Fehler angezeigt wird. Gruß KaraHead
__________________ Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. Geändert von karahead (18.05.2006 um 21:32 Uhr). |
| | |
| | Nach oben #3 |
| Erfahrener Benutzer Registriert seit: 10.05.2006 Ort: Jevenstedt
Beiträge: 131
|
Arrays mit variabler größe gibt es soweit ich weiß in C++ nicht. Such mal nach dem Stichwort Listen da müsstest du etwas finden was in form von objekten soetwas nachbildet.
__________________ |
| | |
| | Nach oben #4 | ||
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
| Zitat:
Also bei der Initialisierung zählt der Zahlenwert, wie ich ihn eintrage - also wie due schreibst [2] für 2 Dimensionen, aber er fängt bei 0 an zu zählen? Hatte da dann wohl meinen Fehler.. Danke! Zitat:
Über eine Liste wäre eine Möglichkeit - hatte aber gehofft das nicht so kompliziert machen zu müßen... So wie ich die Lage einschätze, werde ich mich hier noch ein paar mal melden müßen
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! | ||
| | |
| | Nach oben #6 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
In C++ ist es wie in Java. Wenn du ein Array mit 2 Zeilen und 2 Reihen haben willst dann musst du es auch mit 2 initialisieren. java Code:
Gezält wird aber ab 0. ---------- |0,0|0,1| ---------- |1,0|1,1| ---------- Daher die 2, da 2 Reihen und 2 Spalten reserviert werden müssen.
__________________ Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
| | |
| | Nach oben #7 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
|
ok - da hatte ich falsch gedacht - warum weiß ich auch gerade nicht.... habe da auch bei 0 angefangen - fälschlicherweise. // edit 1: Also... eindimensional habe ich einen Code-Schnipsel gefunden. Code: #include <iostream>
using namespace std;
// getche
#include <conio.h>
int main ()
{
int breite; // Feld [x]
int n; // Hilfsvar
int * p; // ?
cout << "breite:\t";
cin >> breite;
p= new (nothrow) int[breite];
if (p == 0)
cout << "Error: memory could not be allocated";
else
{
for (n=0; n<breite; n++)
{
cout << "Enter number: ";
cin >> p[n];
}
cout << "You have entered: ";
for (n=0; n<breite; n++)
cout << p[n] << ", ";
delete[] p;
}
getche();
return 0;
}
Code: #include <iostream>
using namespace std;
// getche
#include <conio.h>
int main ()
{
int breite; // Feld [x]
int hoehe; // Feld [y]
int i; // Hilfsvar
int j; // "
int * p; // ?
cout << "breite:\t";
cin >> breite;
cout << "hoehe:\t";
cin >> hoehe;
p= new (nothrow) [breite][hoehe];
for(i=0; i<hoehe; i++)
{
for (j=0; j<breite; j++)
{
cout << "Enter number: ";
cin >> p[i][j];
}
}
// Ausgabe:
cout << "\n Ausabe der Daten:" << endl;
for(i=0; i<hoehe; i++)
{
for (j=0; j<breite; j++)
{
cout << p[i][j] << " - ";
}
cout << endl;
}
delete[] p;
getche();
return 0;
}
p= new (nothrow) [breite][hoehe]; kann mir da einer Verständnis-Nachhilfe geben? // edit 2: Also - ich habe das Problem (so scheint es mir) erstmal gelöst. Lösung dazu kommt später. Ich sage das nur, damit sich hier keiner umsonst für mich anstrengt.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! Geändert von Jann Hendrik (22.05.2006 um 16:05 Uhr). |
| | |
| | Nach oben #8 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
|
derweil bin ich bei folgendem angekommen: Code: // Beispiel eines 2-dim-array dynamischer Größe
#include <iostream>
using namespace std;
// getche
#include <conio.h>
int main (void)
{
int erste_dimension; // Feld [x]
int zweite_dimension; // Feld [y]
int i,j; // Hilfsvariablen
cout << "erste dimension:\t\t";
cin >> erste_dimension;
cout << "zweite dimension:\t\t";
cin >> zweite_dimension;
cout << "\n";
// Erste Dimension initialisieren
int** zweiD_array = new int*[erste_dimension];
// Zweite Dimension Anhängen
for (i=0; i<erste_dimension; ++i)
{
zweiD_array[i] = new int[zweite_dimension];
}
for(i=0; i<zweite_dimension; i++)
{
for (j=0; j<erste_dimension; j++)
{
cout << "Eingabe von array[" << i << "][" << j << "]:\t";
cin >> zweiD_array[i][j];
}
}
// Ausgabe:
cout << "\nAusabe der Daten:" << endl;
for(i=0; i<zweite_dimension; i++)
{
for (j=0; j<erste_dimension; j++)
{
cout << zweiD_array[i][j];
if(j != (erste_dimension-1))
cout << " - ";
else
cout << endl;
}
}
// Und danach wieder aufräumen!
for (i=0; i<erste_dimension; ++i)
{
// Zweite Dimensionen der Ersten Dimension löschen
delete [] zweiD_array[i];
}
// Erste Dimension löschen
delete [] zweiD_array;
getche();
return 0;
}
Das kotzt mich nämlich gerade voll an - zumal die 3te Dim. noch immer fehlt... Wäre über Hilfe echt dankbar!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #9 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
Warum doppelte Pointer und nicht java Code:
???
__________________ Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
| | |
| | Nach oben #10 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
|
weil man nicht während der Laufzeit die Variablen setzen kann um damit das array zu initialisieren. Da macht der Compiler nicht mit!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #11 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
|
Also... für die dritte Dimension funktioniert das nun auch... (fast) Code: // Beispiel eines 3-dim-array dynamischer Groesse
#include <iostream>
using namespace std;
// getche
#include <conio.h>
int main (void)
{
int erste_dimension; // Feld in [x-Richtung]
int zweite_dimension; // Feld in [y-Richtung]
int dritte_dimension; // Feld in [z-Richtung]
int i,j,k; // Hilfsvariablen fuer for-schleifen
cout << "Eingabe der Dimensionen:" << endl;
cout << "erste dimension:\t\t";
cin >> erste_dimension;
cout << "zweite dimension:\t\t";
cin >> zweite_dimension;
cout << "dritte dimension:\t\t";
cin >> dritte_dimension;
cout << "\n";
// Erste Dimension initialisieren
int*** array = new int**[erste_dimension];
// Zweite Dimension Anhaengen
for (i=0; i<erste_dimension; ++i)
{
array[i] = new int*[zweite_dimension];
// Dritte Dimension Anhaengen
for (j=0; j<zweite_dimension; ++j)
{
array[i][j] = new int[dritte_dimension];
}
}
// Eingabe:
cout << "\nEingabe der Werte:" << endl;
for(i=0; i<dritte_dimension; i++)
{
for(j=0; j<zweite_dimension; j++)
{
for (k=0; k<erste_dimension; k++)
{
cout << "Eingabe von array[z=" << i << "][y=" << j << "][x=" << k << "]:\t";
cin >> array[i][j][k];
}
}
}
// Ausgabe:
cout << "\nAusabe der Werte:" << endl;
for(i=0; i<dritte_dimension; i++)
{
for(j=0; j<zweite_dimension; j++)
{
for (k=0; k<erste_dimension; k++)
{
cout /*<< "array[z=" << i << "][y=" << j << "][x=" << k << "]:\t" */<< array[i][j][k];
if(k < erste_dimension-1)
cout << " - ";
else
cout << endl;
}
if(j == zweite_dimension-1)
cout << endl;
}
}
// Und danach wieder aufräumen!
for (i=0; i<erste_dimension; ++i)
{
// Zweite Dimensionen der Ersten Dimension löschen
for(j=0; j<zweite_dimension; ++j)
delete [] array[i][j];
delete [] array[i];
}
// Erste Dimension löschen
delete [] array;
getche();
return 0;
}
also 2-2-2 funktioniert genauso wie auch 3-3-3 nicht aber zB. 4-3-3 Hat jemand eine Idee? Source:
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #12 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
Moin, 1. Bei mir klappt dein Code mit 2-2-2, 3-3-3, 4-3-3 und mit 4-3-2. System: gcc 3.3.5 unter Debian Sarge. 2. Man sehen 3 fache Pointer pervers aus
__________________ Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
| | |
| | Nach oben #13 | |
| Neuer Benutzer Registriert seit: 24.01.2006 Ort: Neuwied
Beiträge: 14
|
Ist vielleicht nicht eine direkte Antwort auf dein Problem, aber in folgenden Artikel aus von C++.de ist ein funktionierendes Beispiel für ein 3D-Array. http://www.c-plusplus.de/forum/viewt...is-124532.html Edit: Wenn dur mal wirklich dynamisch arbeiten willst, probier das ganze mal mit std::vector.
__________________ Zitat:
| |
| | |
| | Nach oben #14 | |||
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
| Zitat:
Was mich aber erstaunt: Zitat:
gcc name_des_kompilierten_skripts name_source.cpp Zitat:
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! | |||
| | |
| | Nach oben #15 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
Mit gcc krieg ich bei deinem Code nur Fehler. Ich kompilier immer mit g++, ist nie verkehrt
__________________ Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
| | |
| | Nach oben #16 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
| Zitat:
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! | |
| | |
| | Nach oben #17 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
|
Ich habe inzwischen mal versucht das unter SuSe 9.3 zu kompilieren: Zitat:
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! | |
| | |
| | Nach oben #18 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
|
thx@MrNiceGuy! Er traut sich nicht mich hier öffentlich bloßzustellen... mist - nun muss ich das auch noch selber machen... Problem ist gelöst. Ist war ein reines Logik-Problem. Saubere Lösung folgt noch. Also... der compiler hat seinen Job ausreichend gut gemacht.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #19 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
Zu der Fehlermeldung. <conio.h> ist eine Windowslib, somit auch die funktion getche(); Alternativ würde ich cin.get() benutzen. Tut genau das selbe und gehört zum Standard, somit ist es plattformunabhängig.
__________________ Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
| | |
| | Nach oben #20 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.213
| Zitat:
Auch wenn das tool hier nur unter Windows laufen können muss - wenn ich die Wahl bei solchen Kleinigkeiten habe, dann kann man ja auch drauf achten!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Zend Framework - Probleme mit Zend_Controller_RewriteRouter bzw. Form der URLs | Ben | PEAR, PECL und Frameworks | 12 | 24.12.2006 17:17 |
| Suche Hilfe: Angebot und Nachfrage berechnen | ljungi | Plauderecke | 6 | 17.12.2006 22:10 |
| Array in Bezug auf ein anderes sortieren... | code5 | PHP-Programmierung | 2 | 15.05.2006 15:56 |
| Ein Array in ein Array schreiben | bacarni | PHP-Programmierung | 2 | 07.02.2006 14:24 |