Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de ::  C (C89, C99 und C11) ::  Array deklarieren ! Compiler-Fehler
Antwort schreiben
Benutzername:
Titel:
Nachrichtentext:
  :)  :D  ;)  :(  :p  :mad:  :rolleyes:  :eek:  :confused:  :cool:  :o)  :leak:  :live:  :die:  :idea:  :arrow:  :warning: 
                             
                         
         
           
                             
                             
                             
             


BBCode in diesem Beitrag deaktivieren [BBCode]
Smilies in diesem Beitrag deaktivieren
Array deklarieren ! Compiler-Fehler and 301890
     


Themen-Überblick 
(Aktualisieren)
Autor Nachricht
seldon
23:08:53 05.04.2012   Titel:   Zitieren

Eine Möglichkeit ist ein Zeiger auf Array:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
char feld_leicht[4][4] = { ... };
char feld_mittel[4][4] = { ... };
char feld_schwer[4][4] = { ... };
char (*feld)[4];
 
if(leicht) {
  feld = feld_leicht;
} else if(mittel) {
  feld = feld_mittel;
} else {
  feld = feld_schwer;
}

Auch möglich ist natürlich, aus mehreren Vorlagen nach Bedarf zu kopieren:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
char feld_leicht[4][4] = { ... };
char feld_mittel[4][4] = { ... };
char feld_schwer[4][4] = { ... };
char feld[4][4];
 
if(leicht) {
  memcpy(feld, feld_leicht, sizeof(feld));
} else if(mittel) {
  memcpy(feld, feld_mittel, sizeof(feld));
} else {
  memcpy(feld, feld_schwer, sizeof(feld));
}

Ebenfalls denkbar wäre ein Array von Feldern:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
enum { LEICHT, MITTEL, SCHWER };
 
char feld[3][4][4] = {
  { {  leichtes feld hier } },
  { { mittleres feld hier } },
  { {  schweres feld hier } }
};
 
int level = MITTEL;
 
/* Dann später statt feld[x][y] */
feld[level][x][y];

Es gibt da eine ganze Reihe von Möglichkeiten. Such bzw. denk dir eine aus.
neuling21
21:59:24 05.04.2012   Titel:   Zitieren

ich wollte 3 felder vorgeben halt leicht-mittel-schwer
das muss doch irgendwie funktionierenn oder O.o : )
DirkB
21:55:27 05.04.2012   Titel:   Zitieren

Wie viele Spielfelder willst du da denn ablegen?

Du musst die per Zufall generieren und dann (je nach Schwierigkeit) mehr oder weniger Felder löschen. (aber in einer Kopie, das Ergebnis brauchst du noch)
neuling21
21:47:44 05.04.2012   Titel:   Zitieren

also konkret geht es um ein sudoku spiel und der spiler soll wählen können welche schwierigkeitsstufe er möchte und jenachdem was er wählt bekommt er ein anderes vorgegebenes! feld
also reicht es mir nicht nur einzelne werte zu ändern kann ich den spieler nicht irgentwie entscheiden lassen welches feld er verwendet ?
Wutz
21:42:03 05.04.2012   Titel:   Zitieren

Nein.
Initialisieren mit {} kannst du nur (einmal) bei der Definition.
Du kannst aber explizite Füllaktionen benutzen,
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char a[4][4]={0}; /* alles 0 */
 
if( i==1 )
{
  a[0][0]=1;
  ...
}
else
if( i==2 )
{
  a[0][0]=2;
  ...
}
usw.
DirkB
21:41:36 05.04.2012   Titel:   Zitieren

Nein!

Mit feld{9]{9] ist ein Element gemeint. Da die Indizes bei dir aber nur von 0 bis 8 gehen, existiert das noch nicht einmal.
Neuling21
21:36:49 05.04.2012   Titel:   Zitieren

aha und so ist es dann möglich ? also ich kann ja in der ifabfrage dem array einen wert geben oder ?

char[9][9];
int level=1;


if level ==1)
{
feld[9][9]={.........}
}
icarus2
21:34:04 05.04.2012   Titel:   Zitieren

Das Array ist nur innerhalb des Blocks sichtbar, in dem es deklariert wird. Genauso wie wenn du folgendes hast:
C++:
if ( something )
{
    int i = 3;
}
// Hier ist i nicht mehr sichtbar


*Edit
Zur Loesung: Das heisst du deklarierst das Array vor den if-Statements und initialisierst es dann in den if-Statements.
Neuling21
21:31:43 05.04.2012   Titel:   Array deklarieren ! Compiler-Fehler Zitieren

Hallo,

wieso kann ich eigentlich ein array nicht in einer if abfrage deklarieren ich versteh das nicht guckt euch mal meinen quelltext an:
die initialisierung des arrays stimmt habs hier aber mal mit ... abgekürzt

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<stdlib.h>
 
 
 
int main ( )
{
    int level = 1;
   
   
 
 
   
    if(level==1)
    {
    char feld[4][4]={{'a'..........},
.....

ich erhalte immer den fehler :
"Undeclared identifier 'feld'" wenn ich es später benutze !


unzwar möchte ich je nach eingabe mein array anders haben also wieso funktioniert das nicht ?

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.