Character-Array in eine Matrix transformieren
-
Hallo!
Ich habe hier eine Aufgabenstellung und komme absolut nicht damit klar, soll heissen, ich weiss noch nicht mal wo ich anfangen soll
Und zwar ist es ein Gemeindschaftsprojekt, indem eine Textfile eingelesen wird(das ist die erste Funktion). Dann wird ein Characterarray erstellt, das alle Primzahlen rausfiltert(2. Funktion) und nun meine Aufgabe:
Meine Funktion soll den Inhalt des übergebenen Character-Arrays nehmen, und diesen in
einer veränderten Darstellung, die von den beiden übergebenen Faktoren bestimmt wird,
am Bildschirm ausgeben.(Wenn die Faktorisierung mit 2 Werten erfolgreich durchgeführt wurde, so werden die
beiden Faktoren per Referenz zurückgegeben.)
Dabei wird der Text zuerst in eine Matrix mit der Spaltenanzahl des kleineren der zwei
übergebenen Faktoren und der Zeilenanzahl des größeren der beiden Faktoren gebracht.
Ausgeben werden die einzelnen Zeichen schließlich in Form der transponierten Matrix.Ich hab echt keinen Plan wie ich das angehen soll. Könntet ihr mir da bitte helfen, wäre echt klasse.
Was kann ich? Pointer, Arrays ect aber auch schon nicht mehr
-
Wo ist jetzt das Problem? Du legst ein ausreichend großes 2D Array an, füllst es zeilenweise und liest die Inhalte spaltenweise wieder aus:
char data[maxy][maxx]; spos=0; for(y=0;y<maxy;++y) for(x=0;x<maxx;++x) data[y][x] = input[spos++]; for(x=0;x<maxx;++x) for(y=0;y<maxy;++y) printf("%c ",data[y][x]);
-
Das Problem ist, dass ich ein absoluter Anfänger im Programmieren bin
Könntest du mir etwas genauer erklären, wie ich das Programm selber erstelle mit deinem Code, so dass es läuft. Bin auch lernwillig, keine Angst
-
Ich kann's versuchen - data ist ein 2D Array (Matrix) mit 'maxy' Zeilen und 'maxx' Spalten*. Die erste Doppelschleife füllt den Inhalt der Eingabe 'char input[...]' zeilenweise in diese Matrix rein (etwas tricky - spos wird parallel hochgezählt und gibt den nächsten ungelesenen Eintrag in der Eingabe an). Die zweite Schleife gibt den Matrixinhalt spaltenweise wieder aus (beachte die vertauschte Reihenfolge der Schleifenvariablen).
* könnte auch umgekehrt sein - alles eine Frage der Betrachtungsweise.
-
Heul ich blick überhauptnimmer durch. Inzwischen versteh ich noch nicht mal mehr die Basics....ich glaub ich lass das mit dem Programmiern
Könntest du mir einen halbwegs kompletten code von dem programm geben, vielleicht blick ich dann durch was da wo genau wieso passiert?
Hier nochmal direkt aus der Angabe:
Der Text ist für die folgende
Transformation als Matrix mit den Dimensionen n (Breite; kleinerer Primfaktor) mal m
(Höhe, größerer Primfaktor). Die Buchstaben dieser Matrix werden nun spaltenweise
ausgegeben, das Ausgabeformat ist also die transponierte Matrix mit der Dimension m x n.Bin echt am verzweifeln
-
Das da oben ist schon der wesentliche Code - du mußt nur noch das Hauptprogramm und die Eingabe drumherum bauen. (maxx und maxy wäre deine Primfaktoren - wenn die erst zur Laufzeit feststehen, mußt du die Matrix dynamisch anlegen (siehe FAQ))
-
Ich geb auf, das hat keinen Sinn. Versteh vorn und hinten nichts mehr. das wars mit der vorlesung...
danke trotzdem
-
Ok i sollte die Flinte nicht so schnell ins Korn werfen. Ein Kaffee eine Zigarette und etwas Frischluft später hab ichs dann doch geschaft.
Ein paar Änderungen waren notwendig, aber die Funktion läuft zum Großteil.
Danke nochmal