1Danke
ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
461
461
EMPFEHLEN
-
Hallo
ich sitze gerade vor einem eigentlich recht simplen Problem - hoffe ich zumindest
!
Ich möchte in einer for Schleife mehrere Integer-Arrays allokieren.
Ich weiß, dass der Code so wie er nun folgt absoluter Müll ist, aber damit ihr nachvollziehen könnt was ich meine:
Code :1 2 3 4
int i; for(i = 1; i <= 10; i++) { int i[10]; }
Was ich am Ende möchte sind (bezogen auf diesen Code) 10 Arrays mit 10 Einträgen die "1", "2", "3", "4" ... usw. heißen.
Es handelt sich um eine Vielzahl und eine Variable Anzahl von Arrays - deswegen möchte ich sie in der for Schleife generieren.
Schon mal Danke im Voraus!
Mit freundlichen Grüßen
Genius
-
Hi
was hat das mit Sockets zu tun?
Hab einen neuen Thread daraus gemacht.
Zum Problem: Also ein Array aus Arrays
Was davon trifft zu:
a) Jedes der Arrays hat gleich viel Elemente und die Anzahl ist immer gleich.
zB. ein int[10], noch ein int[10] usw...
b) Wie a, die 10 kann aber beim nächsten Programmdurchlauf anderes sein.
16-16-16...
c) Jedes der Arrays hat unterschiedlich viel Elemente.
12-47-9...Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
12.02.12 11:32 #3
Moin,
hmm, bin mir auch nicht sicher, ob ich die Frage wirklich verstanden habe ....
Du möchtest zehn verschiedene integer-Arrays mit jeweils Länge 10 haben?
Also sowas wie :
int 1[10];
int 2[10];
int 3[10];
.....
Möchtest Du durch die Schleife erreichen, dass die Variablenbezeichner der Arrays dynamisch sind?
Das würde so mit Deinem Code natürlich nicht gehen, da Du ja versucht 10x ein Array mit VARIABLEM Namen zu erzeugen!
Da geht so nicht, da die Bezeichner zur Compilezeit bekannt sein müssen !
Du könnest höchstens - wie von Sheel vorgeschlagen - ein Array der Länge 10 bestehend aus weiteren Integer-Arrays deklarieren !
Gruß
KlausGeändert von vfl_freak (12.02.12 um 11:35 Uhr) Grund: leichte Überarbeitung :-)
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Ich muss am Anfang meines Programms eine Vielzahl von gleichgroßen int-Arrays erstellen.
Genau =)!Du möchtest zehn verschiedene integer-Arrays mit jeweils Länge 10 haben?
Also sowas wie :
int 1[10];
int 2[10];
int 3[10];
Da ich etwas über 100 Arrays brauche und ich zu "faul" bin diese am Anfang von Hand zu definieren wollte ich das eine for-Schleife erledigen lassen.
Außerdem möchte ich schnell und unkompliziert die Anzahl der Arrays verändern können.
Ein zweidimensionaler Array kommt (zumindest wie ich das verstanden habe) leider nicht in Frage, da es entscheidend ist, dass ich viele einzelne Speicherbereiche habe.
Es sollen nämlich eine Vielzahl von Prozessen darauf zugreifen - das geht nur über ein mutex lock - wäre es ein einzelner zweidimensionaler Array blockieren sich die Prozesse aufs ärgste - deswegen brauche ich viele einzelne separate Arrays.
Höchstens es reicht wenn ich über die mutex einzelne Spalten des mehrdimensionalen Arrays "blockiere" - und es dann ungefährlich ist wenn mehrere Prozesse darauf zugreifen - so lange immer nur einer auf eine Spalte zugreift?!
Allgemein gilt:
- es sollen x Arrays erzeugt werden
- jeder der x Arrays hat die selbe Anzahl an Elementen
- die Benennung der Arrays sollte linear sein also z.B. name_1[10]; name_2[10]; name_3[10]; ... usw., damit ich später unkompliziert darauf zugreifen kann.
Ich weiß warum ich früher nur php programmiert habe
- da wäre das ganz simpel :-p!
Vielen Dank
Mit freundlichen Grüßen
Genius
-
12.02.12 12:19 #5
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Warum verwendest du nicht malloc()?
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
-
Hi
das mit den Namen geht nicht so wirklich,
da Variablennamen im kompilierten Programm nicht existieren.
Wenn du die Arrayanzahl verändern möchtest: Liste etc... aus Arrays.
Jeder Zugreifer hat seinen eigenen Iterator
und jede Spalte hat einen Mutex (struct aus Array und Mutex)
Kannst du mir auch die erste Frage von oben noch beantworten?
Und mit PHP wäre das meiner Meinung nach nicht simpel, sondern komplett unmöglich.
@Saftmeister: Darum gehts doch die ganze Zeit.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
12.02.12 13:02 #8
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.956
@sheel: Falsch! Mit PHP ist es eines der leichtesten Dinge Variablen mit variablen Namen zu erstellen:
Code PHP:1 2 3 4
for($i = 0; $i < 10; ++$i) { $var_name = 'name_' . $i; ${$var_name} = 0; }
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Aber die Cross-Prozess-Sachen, die (Winapi-lastigen) Mutexe erstellen etc....?
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
12.02.12 13:21 #10
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.956
@sheel: Du kannst in PHP (mit entsprechender Erweiterung) neue Kindprozesse erstellen, die du dann von einem Hauptprozess aus regelmäßig kontrollierst. Aber ansonsten ist es wirklich unmöglich.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Kannst du mir auch die erste Frage von oben noch beantworten?Ich wollte keine Threads "spamen".was hat das mit Sockets zu tun?
Was davon trifft zu:
a) Jedes der Arrays hat gleich viel Elemente und die Anzahl ist immer gleich.
zB. ein int[10], noch ein int[10] usw...
b) Wie a, die 10 kann aber beim nächsten Programmdurchlauf anderes sein.
16-16-16...
c) Jedes der Arrays hat unterschiedlich viel Elemente.
12-47-9...Ich möchte die Anzahl der Arrays nicht während des Programm läuft verändern.Allgemein gilt:
- es sollen x Arrays erzeugt werden
- jeder der x Arrays hat die selbe Anzahl an Elementen
- die Benennung der Arrays sollte linear sein also z.B. name_1[10]; name_2[10]; name_3[10]; ... usw., damit ich später unkompliziert darauf zugreifen kann.
Nur wenn ich das Programm eben neu compile würde ich gerne einfach zwei #defines verändern - eines für die Anzahl der Arrays und eines für die Elemnte - und meine for-Schleife allokiert mir dann die Arrays.
War genau auf so etwas bezogen:Ich weiß warum ich früher nur php programmiert habe - da wäre das ganz simpel :-p!
Genau das möchte ich haben ... nur eben in c ... geht ja aber scheinbar nicht:PHP-Code:for($i = 0; $i < 10; ++$i) {
$var_name = 'name_' . $i;
${$var_name} = 0;
}
das mit den Namen geht nicht so wirklich,
da Variablennamen im kompilierten Programm nicht existieren.- sheel deine Alternative habe ich so leider nicht ganz verstanden.Wenn du die Arrayanzahl verändern möchtest: Liste etc... aus Arrays.
Jeder Zugreifer hat seinen eigenen Iterator
und jede Spalte hat einen Mutex (struct aus Array und Mutex)
Mit freundlichen Grüßen
GeniusGeändert von Genius (12.02.12 um 14:15 Uhr) Grund: verständlichkeit
-
Ah, hab da was falsch verstanden.
Wenn die Arrayanzahl/Arraygröße nur über #defines geändert werden soll,
ist die Liste überflüssig.
Du machst zuerst so ein struct:
Code cpp:1 2 3 4 5 6 7
#define ARRAY_GROESSE 10 struct mutex_und_array //Name natürlich änderbar { int array[ARRAY_GROESSE]; Mutex m; //oder wie der eben ausschaut };
Jetzt von dem ein Array
Dann hätte man 16 Arrays mit je 10 ints, und zu jedem Array einen eigenen Mutex.Code cpp:1 2 3
#define ARRAY_ANZAHL 16 struct mutex_und_array komplett[ARRAY_ANZAHL];
Zugriff ca. so:
und komplett[2].m wäre der Mutex für dieses Array.Code cpp:1
komplett[2].array[4] = 5678;
Alle Variablen/define-Namen natürlich anpassbar.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Irre! Genau das und genau so habe ich es gebraucht!
Sollte es dich interessieren:Mutex m; //oder wie der eben ausschautCode :1
pthread_mutex_t name;
Vielen Dank an alle!
Mit freundlichen Grüßen
Genius
Ähnliche Themen
-
c# zweidimensionales array
Von xlon im Forum .NET Windows FormsAntworten: 12Letzter Beitrag: 26.02.10, 08:21 -
[perl] Vorhandes Array [Name;Vorname/n] in zweidimensionales Array splitten
Von FlockY im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 3Letzter Beitrag: 31.08.09, 18:53 -
Zweidimensionales Array von VB
Von si031006 im Forum PHPAntworten: 10Letzter Beitrag: 22.12.06, 11:19 -
Zweidimensionales Array
Von crazyPower im Forum PHPAntworten: 2Letzter Beitrag: 04.07.05, 16:03 -
[c++] zweidimensionales dynamisches array
Von andreas_gierisch im Forum C/C++Antworten: 34Letzter Beitrag: 22.10.04, 14:22





Zitieren



Login






