Zum Inhalt springen

Erklärung einer Aufgabe


Gast Tikorz

Empfohlene Beiträge

Das ist die Aufgabe:

Schreiben Sie ein modularisiertes Programm (mit getrennten header- und Funktions- Quelldateien), das quadratische Matrizen konstanter Dimension DIM transponiert (Zeilen und Spalten in situ1 vertauscht). Lesen Sie dazu von einer selbst erstellten Eingabe-Datei beliebig viele Matrizen (mit je DIM Zeilen á DIM Elementen) bis EOF. Verwenden Sie (mindestens) vier Funktionen: eine zum Einlesen einer Matrix, eine zur formatierten Aus- gabe einer Matrix, eine zum Transponieren und eine zum Austausch zweier doubles. 

Ich möchte eine grobe Erklärung haben keine Lösung , ich möchte versuchen selbst ein Code zu schreiben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mir fehlt ein wenig die Information, was genau Du wissen möchtest.

Dort steht bereits vieles enthalten, was die grobe Struktur des Programms angeht:

  • Getrennte Header- und Funktionsdateien
  • Erstellen einer Datei
  • Auslesen dieser Datei
  • Vier Funktionen: Einlesen + Ausgeben der Matrix, Transponieren und Austausch von Doubles

Alles, was darüber hinaus geht, kommt einer Lösung gleich, da bereits konkrete Strukturen vorgegeben wurden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es soll eine main.c Datei geben und zwei header Dateien 

bei der main.c weiß ich nicht genau was ich machen soll eigene Prototypen erstellen .. !?

bei einer header Datei die Definition eigener Funktionen 

und bei der anderen die Matrizen einlesen eventuell ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

So ich habe mir für drei Dateien einiges aufgeschrieben ..
 

main.c
#include <stdlib.h>
#include "myfuncs.h"
int main(){
while(read_mat(mat,fp)){
printf("Originale-Matrix\n");
print_mat(mat);

//transporieren
transp_mat(mat);
printf("Transponente Matrix\n");
print_mat(mat);
}
fclose(0);

myfuncs.c
#include "myfuncs.h"

int read_mat(double mat [DIM][DIM]; FILE *fp);
void print_mat(double mat[DIM][DIM]);
void transp_mat(double mat[DIM][DIM]);
void swapd(double *a, double *b);
}
myfuncs.h
#include MYFUNCS_H
#define MYFUNCS_H
#include <math.h>
#include <stdlib.h>

enum {DIM=3};

void func1(..);
int func2(..);

#endif
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und nu?

Ich sehe du hast das mit den Klammern immer noch nicht so ganz verinnerlicht.

Des weiteren macht dein Code im Moment keinen Sinn. Du sollst das Einlesen deiner Datei in eine extra Funktion schreiben. Was machst du? Packst den halbgaren Code in die Main...

Was erwartest du nun? Syntaxfehler zeigt dir deine Entwicklungsumgebung oder spätestens der Compiler als Fehler. Bei inhaltlichen Fragen helfe ich gerne weiter. Aber nicht, wenn du so *******dreist so einen halbgaren Mist hier ablieferst und nicht mal ansatzweise verstehst was du da eigentlich machst.

 

Edit:

Hier findest du etwas zum Thema Header: https://de.wikibooks.org/wiki/C-Programmierung:_Eigene_Header 

Bearbeitet von Mttkrb
Link zu diesem Kommentar
Auf anderen Seiten teilen

Sind das Hausaufgaben?

Oder einfach nur Übungsaufgaben?

Falls Zweiteres, fang doch nochmal von vorne an, lies dich nochmal in einfachere Themen ein und bearbeite leichtere Aufgaben.

Du hast die Grundlagen noch nicht verinnerlicht und scheiterst praktisch 3 Schritte vor dem eigentlichen Problem der Aufgabe.

Außerdem wird man hier das Gefühl nicht los, man macht deine Hausaufgaben. Beziehe uns mehr in deine Gedankengänge ein. Wie stellst du dir die Logik vor, was hast du bereits, wo kommt welcher Fehler? Was funktioniert bereits? Und welche Schritte stellst du dir vor, die notwendig sind, um die Aufgabe zu lösen? (Struktogramm oder Ähnliches kann helfen)

Auf die Art und Weise, wie du momentan uns die Probleme und Aufgaben um die Ohren haus, wird es nicht mehr lange dauern, bis keiner mehr dir helfen will.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich möchte ja echt nicht böse klingen, aber wenn ich mir deine Beiträge hier im Forum und auch hier durchlese, solltest du vielleicht wirklich noch einmal bei den Grundlagen der Programmierung anfangen: Strukturierung, Variablen, Arrays, Wertzuweisung, Schleifen, Klassen, Methoden, ...

Du scheinst auch Probleme zu haben, Aufgaben korrekt zu verstehen, und das eigentliche Problem zu verstehen, so dass man dann erst einmal eine allgemeingültige Lösung findet, die man dann im letzten Schritt nur noch in der Sprache seiner Wahl herunterprogrammiert.

Was man sich klar machen sollte bei diesen Problem:

  • Was ist eine Matrix? Wie ist diese aufgebaut und wie kann ich so etwas in einer Programmiersprache umsetzen? (Stichwort Arrays)
  • Und dazu dann auch die Frage wie gebe ich diese Formatiert aus? (Stichwort Schleifen)
  • Was ist Transponieren? Wie unterscheidet sich eine transponierte Matrix von ihrer Ausgangsmatrix? (Da kann dir ggf. Google auch super weiterhelfen - aber versuche es dir selber mal auf einem Blatt anhand einiger Beispiele klar zu machen)
  • Wie sind die Informationen, die ich dazu einlesen soll, gespeichert? Wie lese ich diese dann entsprechend dem Format ein?
  • Wie wähle ich aus, welche Double getauscht werden sollen? Wie setze ich es dann um?

Das sind jetzt die Fragen, die mir auf die Schnelle einfallen. Da kann es sicherlich noch mehr geben, aber erst, wenn du dir die beantwortet hast, kannst du im nächsten Schritt schauen, wie die einzelnen Funktionen aufgebaut sein sollen; angefangen bei Übergabeparametern und Rückgabewert.

Und vor allem solltest du dann hingehen und eine Funktionalität nach der anderen umsetzen und nicht alles stückchenweise. Sinnvoller Weise solltest du natürlich schauen, dass du erst einmal Daten hast. Sprich: Realisieren des Einlesens. Danach dann die Ausgabe in einem sinnvollen Format (=Überprüfung ob Daten korrekt eingelesen wurden). Erst wenn diese beiden Funktionen korrekt funktionieren, würde ich mich daran machen und das Transponieren und Tauschen umsetzen.

 

Und zu guter Letzt hätte ich dann noch eine Frage: Wozu machst du die Aufgaben eigentlich? Sind das Schulaufgaben? Sind das Aufgaben aus einem Studium? Machst du das nur für dich selber? Hast du überhaupt die Grundlagen gelernt und verstanden oder steigst du einfach irgendwo ein?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Morgen Leute,

main.c

	#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "myfuncs.h"
	int main (){
    
    enum {dim=3};
    double mat[dim][dim]= {0};
    
    double vec_a[dim];
    double vec_b[dim] = {0};
    double ;
    FILE *fp;
    
    if((fp=fopen("/Users/********/Desktop/INF 1/INF 1/Übg4/A4-3.txt" , "r"))==NULL) {
        fprintf(stderr, "Konnte Datei nicht finden\n");
        return 1;
        
        while(read_mat(mat,fp)){
            printf("Originale-Matrix\n");
            print_mat(mat);
            
            transp_mat(mat);
            printf("Transponente Matrix\n");
            print_mat(mat);
        }
        fclose(0);
        
        
        }
    }
	

myfuncs.c

	#include "myfuncs.h"
#define myfuncs_h
#include <math.h>
#include <stdlib.h>
	enum {DIM=3};
	void func1(..);
int func2(..);
	#endif

int main(void){
    
int read_mat(double mat [DIM][DIM]; FILE *fp);
void print_mat(double mat[DIM][DIM]);
void transp_mat(double mat[DIM][DIM]);
void swapd(double *a, double *b);
}

myfuncs.h

	#ifndef MYFUNCS//.h //
#define MYFUNCS//.h//
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
	enum {DIM=3};
	void func1();
int func2();
	#endif
	

Also ich habe etwas an meiner main.c Datei gearbeitet was muss ich in der main.c Datei machen genau um zur myfuncs.c Datei zu wechseln und wozu dient die Header Datei dabei.?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Header-Datei beinhaltet unter anderem die Informationen welche Funktionen in der entsprechenden C-Datei vorhanden sind.

Was meinst du mit zu "myfuncs.c-Datei zu wechseln"?

Wenn du Funktionen aus deiner myFuncs.c in der main.c nutzen möchtest, definiere die Funktionsdeklarationen in der Header Datei richtig.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

		
		#include <stdio.h>
	#include <stdlib.h>
	#include "matrix.h"		
		
	int main(){		
		    FILE *fp;		
		    double mtx[DIM][DIM];
	    int count=0;		
		    if((fp=fopen("/Users/*********/Desktop/INF 1/INF 1/Übg4/A4-3.txt","r"))==NULL){
	           fprintf(stderr, "A4-3.txt" kann nicht geöffnet werden");
	           return 1;
	    }
	    		
		    while (read_matrix(fp,mtx)){
	        /*Ausgabe der Matrix*/
	        count++;
	        printf("\n%d. Originalmatrix \n\n",count);
	        print_matrix(mtx);
	        /*Transponieren der Matrix*/
	        printf("\n");        
	        transp_matrix(mtx);
	        /*Ausgabe der Transp. Matrix*/
	        printf("%d. Transponierte Matrix \n\n",count);
	        print_matrix(mtx);
	        printf("\n");         
	    }		
		    fclose(fp);		
		    return 0;		
		}		 	

Ich hab mich jetzt auf die C Datei konzentriert . 
Wie fahre ich jetzt fort ?
Bearbeitet von Tikorz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...