• 28.04.2024, 05:29
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Frage zu C Programmierung, Mehrdimensionale Arrays

Sonntag, 11. Januar 2009, 17:50

nabend,

ich versuche gerade für eine Bekannte was in C zu programmieren. Bin zwar nicht so gut dabei, aber anscheinend besser als sie...

ein Teil der Aufgabe verlangt das 2 Matrizen(nur quadratische) miteinander addiert werden sollen. Der Anwender muß größe der Matrix und die Koeffizienten selber eingeben können.
meine bisherige Lösung(die auch funktioniert hat) sieht so aus:

Quellcode

1
2
3
4
5
int main (void)
{
int matrix_g; //matrix größe, nur eine da quadratisch
int matrix_1[matrix_g][matrix_g], matrix_2[matrix_g][matrix_g], matrix_e[matrix_g][matrix_g];
int x, y;


da ich jetzt ein bissel kram in Funktionen auslagern wollte, sollten die obigen Variablen globale Variablen werden. Also vor "int main (void)" stehen.
dann klappt das aber nicht und der Compiler bricht mit einem Fehler ab. wenn ich die größe des Mehdimensionalen Arrays festlege z.B. "int matrix_1[3][3]" funktioniert es.

Ich hoffe jemand von euch hat eine Idee, wie ich meine Idee richtig fortführen kann oder mir nen neuen Denkanstoß gibt.

Tüdülü TheGothic
Sector9

Sonntag, 11. Januar 2009, 17:58

vermutlich musste static davor schreiben, also "static int g=3;"
und generell: wozu globale variablen? :P

Sonntag, 11. Januar 2009, 18:09

Das geht so nicht.
Da muss ein const vor die Variable matrix_g hin. Jedoch kannst du sie dann nicht mehr ändern.
Du musst also das ganze dynamisch anlegen, dh mit malloc arbeiten.

Sonntag, 11. Januar 2009, 18:16

ertsmal Danke für die fixen Antworten...

vermutlich musste static davor schreiben, also "static int g=3;"
und generell: wozu globale variablen? :P

dann kann der Anwender aber nicht mehr die Größe auswählen. Was ja, wie ich beschrieben habe gefordert wird.
Warum keine globalen Variablen?!? Was spricht dagegen?!?
Wenn ich sie nicht Global definieren, meckert der Compiler, das die Funktionen Variablen benutzen wollen die nicht vorhanden sind.

Das geht so nicht.
Da muss ein const vor die Variable matrix_g hin. Jedoch kannst du sie dann nicht mehr ändern.
Du musst also das ganze dynamisch anlegen, dh mit malloc arbeiten.

hast du mit malloc da mal eine Beispiel Code Zeile?!?

@all
Warum funktioniert es denn wenn ich den kram in der main Methode habe?!?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TheGothic« (11. Januar 2009, 18:19)

Sector9

Sonntag, 11. Januar 2009, 20:08

also in dem meisten fällen macht man das mit den funktionen so:

int bla(int a)
{
a=a*a;
return a;
}

int main ()
{
int x;
int y=2;
x=bla(y);
print(x);
}

da brauch man dann keine globalen variablen ;)

Sonntag, 11. Januar 2009, 21:41

wie mein erster C Programmieren Lehrer definierte
globale Variablen = böse

weil du nie genau weißt was drin steht, ob sie woanders manipuliert wurden oder sonst was...
übergib die variable an die Funktion und gut.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ani« (11. Januar 2009, 21:42)

Ähnliche Themen