Struct und ausgelagerte Fkt.



  • Zermy schrieb:

    c von a bis z

    Selbst da steht so was:

    matrix main (matrix z1)
    

    nicht drin!


  • Mod

    Zermy schrieb:

    c von a bis z ist aber schon druf!

    Und da wunderst du dich? Das ist nicht zum Scherz so verrufen. Mit K&R wäre das nicht passiert.



  • typedef struct{
    int werte[4][4];
    int spur;
    int dim;
    } matrix;

    Laut Aufgabe soll die Struktur diese Variablen enthalten...

    also kann ich damit doch weiter arbeiten oder?

    lg Zermy


  • Mod

    Bist du sicher? Das ist eines der dümmsten Structdesigns, die ich je gesehen habe.



  • Beseitige erstmal alle Fehler und Warnungen vom Compiler.

    Alle!
    Unbedingt auch die Warnungen.

    Du musst z.Zt. eine Menge davon haben.



  • Zermy schrieb:

    hier mein Programm (...)

    So kompiliert und läuft es wenigstens:

    #include <stdio.h>
    #include <stdlib.h>
    
    //Erstellen der Structur
    
    typedef struct
    {
    		int werte[4][4];
    		int spur;
    		int dim;
    		int summe[10];
    
    } matrix;
    
    int spurberechnen(matrix z1);
    
    int main (void)
    {
    	int x=0;
    	int i,j;
    	matrix z1;
    
    	//Eingabeaufforderung
    	printf("Bitte geben Sie die Dimension der Matrix  ein\n");
    	scanf("%d",&z1.dim);
    
    	printf("Die Dimension ist %d ein\n",z1.dim);
    
    	for(i=1;i<=z1.dim;i++)
    	{
    		for(j=1;j<=z1.dim;j++)
    		{
    			printf("Bitte geben Sie die [%d][%d] ein\n",i,j);
    			scanf("%d",&x);
    			z1.werte[i][j]=x;
    		}
    	}
    
    	z1.spur = spurberechnen(z1);
    	printf("Die Spur der Matrix ist %d \n",z1.spur);
    
    	system("PAUSE");
    
    	return 0;
    }
    
    int spurberechnen(matrix z1)
    {
    	int i = 0;
    	int sp = 0;
    
    	//Spur berechnen
    	for(i=1;i<=z1.dim;i++)
    	{
    		sp += z1.werte[i][i];
    	}
    
    	return sp;
    }
    

    Bitte vergleiche dieses Programm und Dein Programm Zeile für Zeile und frage Dich, was ich da etwas verändert habe - und warum.

    viele grüße
    ralph



  • Indizes bei Arrays fangen in C immer bei 0 an.
    Und sie gehen bis Länge_des_Arrays-1.



  • Hey danke für die Antworten,

    sry ja das mit der main war meine schuld ich hab da rumprobier und den fehler net gefunden da hab ich das mal so ausprobiert.

    matrix z1; das ist natürlich richtig ich brauche in der main ne variable vom typen matirx -.- da hab ich nicht richtig nachgedacht...

    Ich hab mir das Programm nun nochmal neu geschrieben und auch gleich übersichtlicher gemacht und die Funktion in einem extra File gespeichert so das ich nun funktion.c funktion.h aufgabe.c und aufgabe.h habe.

    das hilft mir den überblick zu behalten.

    Danke nochmal für eure Hilfe!!!!

    lg Zermy



  • Naja, bei deinen 3 Funktionen bringt das Auslagern wohl eher für dich als Einsteiger eher mehr Unübersichtlichkeit mit sich, das macht man normalerweise bei größerem Umfang.
    Du solltest dich auf die C-Grundlagen konzentrieren, Module zu separieren ist zwar sehr nett, sollte für dich aber erstmal nicht primär sein.



  • Ne, stimmt. Für mich sollte es nochmal bei Hallo Welt anfangen -.- aber ich muss halt gewisse sachen bringen... hoffe so wird das in der Klausur gut gehen, ich wiederhole schon relativ viel aber es kommen halt immer neue Themen dazu ...

    Aber Danke für eure tatkräftige Hilfe...

    lg Zermy


Anmelden zum Antworten