Hi, ich würde gerne einem array alle werte so in dieser form zuweißen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
es handelt sich um diesen typ: volatile bool field[10][10]; Wie kann ich das denn machen? ich habe keine lust jedes feld einzeln zuzuweißen.
|
Anzeige
|
Zuweisung eines arraysHi, ich würde gerne einem array alle werte so in dieser form zuweißen:
es handelt sich um diesen typ: volatile bool field[10][10]; Wie kann ich das denn machen? ich habe keine lust jedes feld einzeln zuzuweißen.
Gast
#1474563
"Weissen" oder "weißen" tut man Wände. Das heisst "zuweisen"! Um welche Sprache handelt es sich?
Gast
#1474564
>Um welche Sprache handelt es sich?
Das war die ernstgemeinte Frage nach der Programmiersprache.
"volatile" deutet auf C hin, aber die Initialisierung passt nicht.
Deswegen die Nachfrage.
Sorry, hatte ich wohl vergessen, es handelt sich um C ;). und sorry für den tippfehler
Gast
#1474567
Mal anders geantwortet: Dieses Codefragment
ist eigentlich schon fast genau das, was Du nicht tun willst. Ist ein wenig verwirrend. Warum machst Du es denn nicht so, wenn Du es dann doch so machst und sei es auch nur um zu zeigen was Du nicht machen willst. Das ist ganz einfach warum ich das machen will: es sind die initialwerte die alle 100 schritte in den zweidimensionalen array geladen werden sollen. und ich hab keine lust jedes feld einzeln per field[0][0] = true; anzusprechen.
Gast
#1474569
Oder noch anders: Wenn Du die runden Klammern in dem obigen Fragment durch geschweifte Klammern ersetzt, dann hast Du genau eine Zuweisung an jedes einzelne Element. Das muss man so nicht machen, aber was stört daran wenn Du es doch schon fast fertig hast?
Gast
#1474571
>ich hab keine lust jedes feld einzeln per field[0][0] = true; anzusprechen.
Das ist sicherlich ein Missverständnis.
Du brauchst das ja nicht so zu machen. Mach es doch einfach so wie in
Deinem ersten Posting geschrieben.
ich WILL es so machen wie es oben dasteht. mit einzeln zuweisen rede ich von: field[0][0] := true; field[0][1] := false; etc.pp. glaube auch das es einfach ein missverständniss war. danke auf jedenfall
gibt mir:
Gast
#1474575
Ach, Mensch. Du meinst wahrscheinlich folgendes. Das:
ist eine einzelne Zuweisung. Das aber:
ist durchaus auch eine Reihe von einzelnen Zuweisungen an jedes einzelne Element. Eine generische Zuweisung an mehrere Elemente gleichzeitg gibt es in C nicht. (Und ist mir sonst auch nicht untergekommen). okay danke! damit ist meine frage geklärt, werd ich das wohl mit viel schreibarbeit machen müssen ^^ andere frage: gibt es eien funktion um einen array in einen anderen array (mit gleichen bounds) direkt zu kopieren, ohne eine schleife? also ne funktion oder prozedur.
Gast
#1474580
Die Fehlermeldungen >main.c:46: Warnung: Eingebaute Funktion »y1« als Nicht-Funktion deklariert >main.c: In Funktion »main«: >main.c:203: Fehler: expected expression before »{« token >make: *** [main.o] Fehler 1 haben primär nichts mit Deiner Zuweisung zu tun. Im übrigen geht das, wie oben von Dir beschrieben nur als Initialisierung. Dann fehlt aber der Typ. Wenn Du das mittendrin mehrfach brauchst nimm eine Schleife oder ein konstantes Array das Du dann umkopierst.
Gast
#1474582
>okay danke! damit ist meine frage geklärt, werd ich das wohl mit viel >schreibarbeit machen müssen ^^ Kaum:
>gibt es eien funktion um einen array in einen anderen >array (mit gleichen bounds) direkt zu kopieren, ohne eine schleife? also >ne funktion oder prozedur. Ja, memcpy.
Gast
#1474583
Allerdings wird memcpy intern auch mit einer Schleife arbeiten. Was hast Du denn gegen Schleifen? warum kompliziert, wenns auch einfach ginge, in dem fall geht es eben nicht und ich muss auf schleifen zurückgreifen ;) und die der fehler hat was mit der zuweisung zu tun, weil er sich genau darauf bezieht ;)
Gast
#1474587
Na, wenn Du es besser weisst, dann frag nicht... entschuldigung aber wenn der fehler genau die zeile ankreidelt, in der
die zuweisung ist (main.c:203: Fehler: expected expression before »{«
token) dann hat das wohl sehr wohl damit was zu tun, und zwar das er die
{} hinter dem = nicht mag.
Gast
#1474590
Wahrscheinlich redet der Compiler nur von "y1" weil er auch mal was unsinniges sagen möchte... Mannoman, keine Ahnung, aber noch die Antwortenden korrigieren...
Gast
#1474591
Na schön. Warum antworte ich hier überhaupt und dann noch auf unvollständigen Code? Selber schuld. 1. das mit y1 ist nur eine WARNUNG 2. Ist das y1 eine ganze weile weiter oben 3. Hat y1 absolut NICHTS mit der zuweisung zu tun. Der code funktioniert trotz der warnung einwandfrei Wenn du meinst das du der einzige hier bist mit ein wenig ahnung vom programmieren dann viel spaß mit der einstellung. Du bist nicht der einzige mit programmiererfahrung, nur weil grade erst mit C anfange ist das kein grund so einen ton anzuschlagen. Ich finds einfach nur (sorry) assozial sätze wie "Mannoman, keine Ahnung, aber noch die Antwortenden korrigieren..." rauszuhauen, das kann man auch anders formulieren oder sich ganz einfach sparen (schweigen ist gold). Fang du erstmal an fragestellungen richtig zu lesen und zu verstehen bevor du andere runtermachst weil sie nicht so ein semi-genie sind wie du.
Gast
#1474599
Sorry, wegen meines Tones. Aber dann poste halt Code ohne Warnings. Das Problem ist oft, das die Fehler nach dem ersten (auch wenn es Warnings sind) Folgefehler sind, die nur daraus folgen, das der Compiler aus dem was er danach liest noch was zu machen versucht. Das schien mir in diesem Fall, zu dem Fehlerbild zu passen, wenn y1 als Funktion ausgefasst wurde, aber bei der Initialisierung ein Typ fehlt. Bei so einer simplen Frage, bin ich davon ausgegangen, das Du keinerlei Ahnung von C hast. Daher war das noch wahrscheinlicher und Deine "Besserwisserei" schien mir unabgebracht. Also einfach kompilierbaren Code posten. Und Warnings werden nicht einfach ignoriert. Mir ist sehr wohl bewusst, dass warnings nicht ignoriert werden sollten (auch wenn man es kann wenn der code stattdessen funktioniert). Nur ist y1 einfach ein short, der auch nur in if's und zuweisungen verwendet wird und ich keine ahnung habe woher die warning kommt, und mir die warning auch nur unter linux angezeigt wird (windows zeigt sie nicht an). wüsste ich woher die warning kommt würde ich sie nicht ignorieren, ich bin mit meinem code oft sehr penibel was warnings angeht (in allen sprachen in denen ich schreibe) Hier der kompilierbare code (auch wenn das für meine frage ohne belang ist...):
Der Teil mit dem Konstanten array ist noch nicht implementiert, daher fehlt dieser Teil, auf den sich meine Frage bezieht hier sowieso gänzlich.
Gast
#2331343
der gcc-Compiler kennt y1 als builtin function (Bessel-Funktion), deshalb warnt er hier, dass y1 umdefiniert wird als short. Die Umdefinition wird aber akzeptiert und deswegen funktioniert der Code. s. http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html Microsoft Compiler kennen die Bessel-Funktion vermutlich nicht als builtin function, deswegen geht's dort ohne Warning. HP Markus Foitschik schrieb: > field = (true,false,false,false,false,false,false,false,false, > false,false,false,true,false,false,false,false,false,false,false, > (etc.) > false,false,false,false,false,false,false,false,false,false,false, > false,false,true); > > es handelt sich um diesen typ: > volatile bool field[10][10]; Es gibt zwei Möglichkeiten: Bei der Definition der Variablen 'field' kann diese initialisisert werden:
Es handelt sich hier um ein zweidimensionales Array, deswegen muss jede Zeile einzeln initialisiert werden. Auf dem Wege der nachträglichen Zuweisung (mit weichem 's', daher nie mit 'ß' zu schreiben) geht das so aber nicht. In C können Arrays nicht zugewiesen werden. Macht hier aber nichts, da praktisch alle Elemente des Arrays identisch (nämlich mit false) besetzt werden sollen, und nur zwei davon abweichen, ist folgende Vorgehensweise möglich:
Ansonsten gilt der übliche Literaturhinweis: Brian Kernighan & Dennis Ritchie, "Programmieren in C", zweite Auflage, Hanser-Verlag.
Gast
#2333436
Rufus Τ. Firefly schrieb: > und nur zwei davon abweichen Nicht ganz, schau' genauer hin...
> Ansonsten gilt der übliche Literaturhinweis: > > Brian Kernighan & Dennis Ritchie, "Programmieren in C", zweite Auflage, > Hanser-Verlag. Allein das hier würde 90% der Standardfragen beantworten: www.gnu.org/s/gnu-c-manual/gnu-c-manual.pdf MWS schrieb: > Nicht ganz, schau' genauer hin... Ist zwar Standard (C99), aber geht meines Wissens nicht bei VC++.
Gast
#2333468
Klaus Wachtler schrieb: > MWS schrieb: >> Nicht ganz, schau' genauer hin... > > Ist zwar Standard (C99), aber geht meines Wissens nicht bei VC++. Da wir uns gerade im GCC Forumsbereich aufhalten, ist es u.U. möglich, daß der TS seine Anfrage nicht aus Versehen hier reingeschrieben hat. :D Mein Hinweis bezog sich aber darauf, daß nicht nur das erste und letzte Element, sondern auch das 13te (siehe oben) "true" zu sein hat. MWS schrieb: > Nicht ganz, schau' genauer hin...
Dann geht's so:
Gast
#2333726
Jörg Wunsch schrieb: > Dann geht's so: ... Ja, so auch, wobei ich meine Version ein klein wenig übersichtlicher finde. Wenn's ein bisserl kryptischer sein darf, dann ginge das als Abwandlung ja auch noch :D
MWS schrieb: > Wenn's ein bisserl kryptischer sein darf ach, dann kannst du auch noch die 0en durch !1 ersetzen und die 1en durch !0.
Gast
#2334068
Klaus Wachtler schrieb: > ach, dann kannst du auch noch die 0en durch !1 ersetzen und die 1en > durch !0. Mist, da kam ich jetzt nicht drauf :-) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|