creat eine multdimentional array zu speichern viele arrays unterschiedlicher Größe in C
Ich fragte diese Frage, aber ich habe es gelöscht, weil nicht klar war. Ich habe drei Schleifen, die produzieren, 0, 1 Daten. Ich möchte Sie zu speichern, wie eine matrix, also ich denke es sollte gespeichert werden, in ein mehrdimensionales array, das nenne ich Third
.
for (i=0; i<m; i++) {
for (int l = 0; l < n2; ++l) {
for (x = 0; x < all[i].n; ++x) {
f = (int)VECTOR(v2)[l];
if(a[x].vto == f) {
printf("%d",1);
} else {
printf("%d",0);
}
}
}
for (int y = 0; y < n1; ++y) {
for (x = 0; x < all[i].n; ++x) {
q = (int)VECTOR(v1)[y];
if(a[x].vfrom == q) {
printf("%d",1);
} else {
printf("%d",0);
}
}
}
printf("\n");
}
Das gedruckte Ergebnis aus dem vorherigen code ist, und ich möchte, um es zu speichern die auf diesem Formular:
100010001111
111000000111100100010010001001
111000000000111000000000111100100100010010010001001001
110000001100000011101010010101
111100010001
Mein Ziel ist, speichern Sie das gedruckte Ergebnis in ein array wie
Third = = [ [[100][010][001][111]] [[111000][000111][100100][010010][001001]]...[[111][100][010][001]]
also, wenn ich will, um den Zugriff auf das array Third
ich tun, Third[3] = [ [110000] [001100] [000011] [101010] [010101] ]
oder Third[3][1] = [001100]
oder Third[3][1][2] = 1
.
Ich würde sehr glücklich sein, zu klären, was nicht klar ist. Danke für die Hilfe
EDIT 1: Der code ist zu groß, um Hinzugefügt werden, komplett. Ich fragte nach der Allgemeinen Art und Weise zu erreichen, was ich Suche, das ist, wie zu konstruieren ist ein mehrdimensionales array, oder ein array von arrays zum speichern von Daten, die Ergebnisse von drei verschachtelten Schleifen (nicht nötig, meine loops).
Ich befestigte den aktuellen code, so jetzt das array Third
enthält alle Daten, aber ich glaube nicht, dass dies der richtige Weg ist, die Daten zu speichern, um später darauf zugreifen als Third[3] = [ [110000] [001100] [000011] [101010] [010101] ]
Hier ist was ich getan habe:
int second[n1+n2][n1*n2];
int first[n1*n2];
int Third[m][n1+n2][n1*n2];
for (i=0; i<m; i++) {
Data * a = all[i].datas;
igraph_edge(&graph, i, &from, &to);
igraph_neighbors(&graph, &v1, from, IGRAPH_ALL);
igraph_neighbors(&graph, &v2, to, IGRAPH_ALL);
int n2 = igraph_vector_size(&v2);
int n1 = igraph_vector_size(&v1);
int f, q, x, l, y;
for (l = 0; l < n2; ++l) {
for (x = 0; x < all[i].n; ++x) {
f = (int)VECTOR(v2)[l];
if(a[x].vto == f) {
first[x]=1;
} else {
first[x]=0;
}
second[l][x] = first[x];
Third[i][l][x] = second[l][x];
printf("%d", Third[i][l][x]);
}
}
for (y = 0; y < n1; ++y) {
for (x = 0; x < all[i].n; ++x) {
q = (int)VECTOR(v1)[y];
if(a[x].vfrom == q) {
first[x]=1;
} else {
first[x]=0;
}
second[y+n2][x] = first[x];
Third[i][y+n2][x] = second[y+n2][x];
printf("%d", Third[i][y+n2][x]);
}
}
printf("\n");
}
beim kompilieren des obigen Codes bekomme ich
100010001111
111000000111100100010010001001
111000000000111000000000111100100100010010010001001001
110000001100000011101010010101
111100010001
Ich bin mir nicht sicher, ob dies der richtige Weg, es zu tun?Dank
EDIT 2:
Ich Frage mich, ob die Erklärung in dieser Art und Weise, wie unten richtig ist oder nicht? Ist die drei-dimensionale array Third
Feste Größe oder ist es (wie erforderlich) dynamische nach n1
und n2
, die sich ändern, je nach der iteration von i ist.
int second[n1+n2][n1*n2];
int first[n1*n2];
int Third[m][n1+n2][n1*n2];
for (i=0; i<m; i++) {
Data * a = all[i].datas;
igraph_edge(&graph, i, &from, &to);
igraph_neighbors(&graph, &v1, from, IGRAPH_ALL); //initialize the vector v2 where it's values and it's size vary depending on i
igraph_neighbors(&graph, &v2, to, IGRAPH_ALL); //initialize the vector v2 where it's values and it's size vary depending on i
int n2 = igraph_vector_size(&v2); // the size changes depending on i, i.e the change from an iteration to another
int n1 = igraph_vector_size(&v1); // the size changes depending on i, i.e the change from an iteration to another
int f, q, x, l, y;
for (l = 0; l < n2; ++l) {
for (x = 0; x < all[i].n; ++x) {
f = (int)VECTOR(v2)[l];
if(a[x].vto == f) {
first[x]=1;
} else {
first[x]=0;
}
second[l][x] = first[x];
Third[i][l][x] = second[l][x];
}
}
}