Lesen einer Matrix/einzelne Werte weiter verarbeiten
-
Hallo,
ich habe keine Ahnung ob ich hier jetzt alles richtig mache
Neueinsteiger halt
Ich hätte da mal gern ein Problem. Ich möchte eine Matrix einlesen, gerne auch einzelne Werte´, da diese im Nachhinein zur Ansteuerung meines Hexapoden genutzt werden sollen.(Projekt aus der Uni)
Leider sind meine Informatik-Kenntnisse nicht die besten. Das arbeite ich aber seit ein paar Wochen nach.
Soweit bin ich schon gekommen.#include <stdio.h>
#include <stdlib.h>int main(void)
{
int matrix[4][4] ={0} ;FILE *fp;
int i,j;fp= fopen("Untitled 1", "r");
if (fp==NULL)
{printf("Can`t open file");
exit(-1) ;
}for(i=0; i<4;i++)
{
for(j=0; j<4; j++)
{
fscanf(fp,"%d",& matrix[i][j]);}
}
for(i=0; i<4;i++)
{for(j=0; j<4; j++)
{
printf("%d",matrix[i][j]);}
printf("\n");
}return 0;
}Also das einlesen klappt bereits mit der Einschränkung, dass die Zeilen nicht getrennt werden.
Wenn mir jemand bei meinem Problem helfen könnte wäre ich echt dankbar
Falls es dazu schon einen Thread gibt, sorry
-
Dani3l schrieb:
Also das einlesen klappt bereits mit der Einschränkung, dass die Zeilen nicht getrennt werden.
Was meinst du damit genau?
Wie stellst du das fest?Gib mal ein Beispiel deiner Datei und was dich an der Ausgabe stört.
Und benutze bitte die Code-Tags. Code mit der Maus markieren und auf den C-Button unter dem
klicken.
-
Hallo DirkB das ging ja schnell,
Ah OK, wird gemacht.
Ich habe in der untitled 1 eine Matrix[4][4], die mir in Eclipse auf der Konsole ausgegeben werden.
Nur das halt die Zahlen nicht getrennt wiedergegeben werden.
Als Beispiel steht in der Datei 1 2 3 4 für [0][0] also quasi die erste Zeile und die Ausgabe ist 1234. Mir fehlt die Trennung der Spalten.
Mein zweites Problem ist dass ich gerne Beispielsweise die 4 im weiteren Verlauf weiterverwenden möchte.
-
Dani3l schrieb:
Als Beispiel steht in der Datei 1 2 3 4 für [0][0] also quasi die erste Zeile und die Ausgabe ist 1234. Mir fehlt die Trennung der Spalten.
Dann könnten ein oder mehrere Leerzeichen bei der Ausgabe helfen.
Mein zweites Problem ist dass ich gerne Beispielsweise die 4 im weiteren Verlauf weiterverwenden möchte.
Die ist dann an der entsprechenden Stelle in deiner Matrix. Wo ist das Problem?
-
Dani3l schrieb:
... die Ausgabe ist 1234. Mir fehlt die Trennung der Spalten.
Dann mach doch die Zwischenräume bei der Ausgabe mit rein.
Z.B. indem du beimprintf
noch ein Leerzeichen im Formatstring einbaust.
-
Ok mehr Leerzeichen sollten kein Problem darstellen.
SeppJ
Ja genau sollten an der Stelle sein, wenn ich mir aber mit printf Matrix[3][0] die 4 ausgeben lassen möchte funktioniert dies leider nicht.
Oder mache ich es mir gerade nur zu einfach und müsste dazu noch eine extra Anweisung schreiben
-
Dani3l schrieb:
Ja genau sollten an der Stelle sein, wenn ich mir aber mit printf Matrix[3][0] die 4 ausgeben lassen möchte funktioniert dies leider nicht.
Oder mache ich es mir gerade nur zu einfach und müsste dazu noch eine extra Anweisung schreibenCode? Und steht die 4 bei dir nicht bei [0][3]?
-
Huch ja verdreht, mein Fehler.Leider bekomme ich dann die Matrix mit der 4 mich interessiert ja aber nur die 4.
#include <stdio.h> #include <stdlib.h> int main(void) { int matrix[4][4] ={0} ; FILE *fp; int i,j; fp= fopen("Untitled 1", "r"); if (fp==NULL) { printf("Can`t open file"); exit(-1) ; } for(i=0; i<4;i++) { for(j=0; j<4; j++) { fscanf(fp,"%d",& matrix[i][j]); } } for(i=0; i<4;i++) { for(j=0; j<4; j++) { printf("%d",matrix[0][3]); } printf("\n"); } return 0; }
-
Dani3l schrieb:
Huch ja verdreht, mein Fehler.Leider bekomme ich dann die Matrix mit der 4 mich interessiert ja aber nur die 4.
Wenn du 16 (4*4) das Element [0][3] ausgibst, dann steht das auch 16 mal da.Was willst du erreichen?
Zeig deine Datei, aus der du einliest ("Untitled 1") und erklär mal was du damit machen willst.
~Nebenbei: Leerzeichen in Dateinamen sind ein Irrweg.~
-
1 2 3 4 34 5 6 6 2 34 5 6 0 0 0 0
Das ist meine Matrix aus der Datei.
Erreichen möchte ich, dass mir ein Wert ausgegeben wird. Sagen wir mal die 4.
Ich bekomme eine Matrix mit Winkelpositionen bzw. Inkremente für meine Servos.
Die möchte ich über diesen Code einlesen. Der Schritt ist dann ist dann noch dass die Spalten nacheinander gelesen werden, da ich 6 Servos habe und jede Zeile eine Position für jeden Servo trägt und jede Spalte eine Position des Hexapoden hat.
Wird wohl später eine 6x6 Matrix.
Wenn das funktioniert kann ich den Code in meinen anderen Code für die Servosteuerung implementieren.
Und wenn alles klappt sollte sich mein Hexapod bewegen.Ich hoffe man versteht worauf ich hinaus möchte.
-
Ach ok jetzt weiß ich was du meinst, das ich 16x die 4 ausgebe
Danke dir