Gast Tikorz Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 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. Zitieren
KeeperOfCoffee Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 (bearbeitet) Wie wäre es, wenn du es erstmal selbst versuchst? Bearbeitet 11. Dezember 2017 von KeeperOfCoffee Zitieren
Gast Tikorz Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 Gerade eben schrieb KeeperOfCoffee: Wie wäre es, wenn du dich erstmal selbst dran setzt? Bin ich ja , wollte neben bei eine Erklärung eines Users durchlesen Zitieren
Rabber Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 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. Zitieren
Gast Tikorz Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 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 ? Zitieren
Mttkrb Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 Header-Dateien beinhalten u.a. Prototypen. in C-Dateien wird Programmcode geschrieben. Zitieren
Gast Tikorz Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 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 Zitieren
Mttkrb Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 (bearbeitet) 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 11. Dezember 2017 von Mttkrb Zitieren
Chiyoko Geschrieben 11. Dezember 2017 Geschrieben 11. Dezember 2017 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. Zitieren
Rienne Geschrieben 12. Dezember 2017 Geschrieben 12. Dezember 2017 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? Zitieren
Gast Tikorz Geschrieben 18. Dezember 2017 Geschrieben 18. Dezember 2017 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.? Zitieren
Mttkrb Geschrieben 18. Dezember 2017 Geschrieben 18. Dezember 2017 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. Zitieren
Gast Tikorz Geschrieben 18. Dezember 2017 Geschrieben 18. Dezember 2017 Wie meinst du das ? Also ich weiß jetzt nicht was in die myfuncs.c Datei Muss und in die Header Datei Zitieren
Mttkrb Geschrieben 18. Dezember 2017 Geschrieben 18. Dezember 2017 In die c-Datei die Funktionen und in die Header die Funktionsdeklarationen. Ungefähr so. myfile.h: ... int test1(); ... myfile.c int test() { return 1+2; } In meinem Beitrag hatte ich letzten Montag einen Link gepostet, in dem das noch etwas genauer beschrieben steht. Zitieren
Gast Tikorz Geschrieben 18. Dezember 2017 Geschrieben 18. Dezember 2017 Ich lese es mir mal durch wende mich nochmals hoffentlich mit ausführlichem Code Zitieren
Gast Tikorz Geschrieben 18. Dezember 2017 Geschrieben 18. Dezember 2017 (bearbeitet) #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 18. Dezember 2017 von Tikorz Zitieren
Mttkrb Geschrieben 18. Dezember 2017 Geschrieben 18. Dezember 2017 Was soll das Programm denn noch deiner Meinung nach machen? Da sich dieser Teil deines Programms nicht fehlerfrei kompilieren lässt, solltest du nun anfangen deine Funktionen zu implementieren. Zitieren
Empfohlene Beiträge
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.