2D-array-Suche in C
Ich bin immer noch lernen, C und könnte etwas Hilfe gebrauchen. Ich versuche ein Programm zu schreiben, das wird zu tun, eine Suche nach einem 2D-array von char ist. Und es sagt Ihnen, welche Punkte sich der gesuchte char ist in Bezug auf das 2D-array in einen (x, y) - Koordinaten. Mein problem ist, dass das Programm nicht ausgeben rechts (x y) - Koordinaten.
Jetzt dachte ich das Programm ausgeben soll (1,0),(1,1), (1,2), (1,3), (1,4) für B. Plane ich auch über die Anpassung der Koordinaten, so dass es zählen würde bei 1 statt bei 0 ich.e für B ausgegeben werden soll (2,1),(2,2), (2,3), (2,4), (2,5). So weit, die nur koordinieren, dass die Drucke aus der rechten, (1,1) und ich bin nicht sicher, warum mein code nicht funktioniert. Was kann ich tun um dies zu beheben?
VOLLSTÄNDIGE CODE:
#define _CRT_SECURE_NO_WARNINGS
#define SIZE 5
#include <stdio.h>
int main()
{
int c, count = 0;
int x[SIZE] = { 0 };
int y[SIZE] = { 0 };
int j, i;
char array[SIZE][SIZE] = { { 0 }, { 0 } };
char array2[SIZE] = { 'A', 'B', 'C', 'D', 'S' };
char search;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
array[i][j] = array2[j];
}
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%c ", array[i][j]);
}
printf(" \n");
}
printf("What letter are you lookiong for? ");
scanf("%c", &search);
for (j = 0; j < 5; j++)
{
for (c = 0; c < 5; c++)
{
if (array[j][c] == search)
{
y[j] = j;
x[c] = c;
count++;
}
}
}
if (count == 0)
printf("%c is not present in array.\n", search);
else
{
for (i = 0; i < count; i++)
{
printf("%c is present at (%d , %d) times in array.\n", search, x[i], y[i]);
}
}
return 0;
}
- Screenshots von text windows nutzlos sind. Jedes mal, wenn Sie post einen Gott tötet ein panda. Sie können grep-screenshots, können Sie diff Ihnen, Sie können wählen Sie text in Ihnen, und Sie verschwenden meine Bandbreite. Bitte unterlassen Sie die Veröffentlichung dieser Dinge.
- Beachten Sie, dass in C, verwenden Sie
array[row][column]
in der Erwägung, dass Ihre bevorzugte Antwort scheint zu verwenden, Array(Spalte,Zeile) (oder A(C,R)) - notation. Es ist eine Frage der Darstellung, aber Sie wahrscheinlich finden es verwirrend, wenn Sie Eine(C,R) notation. Zumindest, Sie müssen sich bewusst sein, dieses Verhalten. - Warum sollte es mich kümmern, wenn es Abfall Ihr Bandbreite? Wenn wir nicht dazu gedacht sind, posten screenshots, warum dann würde diese Website haben die Möglichkeit, für Sie? Bitte erspare snarky Dinge.
- Wie dumm von mir. Sie sollten nicht in der Tat interessieren, was Menschen, die helfen wollen, denken Sie sich. Nutzen Sie diese und entsorgen Sie Sie. Geschieht Ihnen Recht.
- Ich sehe nicht, eine Antwort von dir unten oder oben, Kumpel. Ich danke allen, die mich unterstützt und berücksichtigt, was Sie sagen. Alle, die Sie getan haben, beklagt wird.
- Ich muss mich entschuldigen für die nicht, die man für diese spezielle Frage in einer fristgerechten Weise. Sehen Sie, ich war damit beschäftigt, anderen Menschen zu helfen, die auf dieser Website (eine Tätigkeit, die ich nicht sehen, Sie sich zu viel). Viel Glück mit Ihren Bemühungen.
- Sie machen mich lachen. Was für ein ego-problem, das Sie haben. Sie konnte nicht einfach entschuldigen mit so ein Seitenhieb auf mich? Wirklich unreif von dir.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern:
dafür:
Arrays
x
undy
sind Ihre Ergebnisse, und Sie müssen indiziert werden nach der Anzahl der Ergebnisse.Ändern Sie den code wie diesen wird es funktionieren :
Versuchen Sie dies :
Diese Aussage von deinem code,
änderungen der Elemente in der j-position in y[] und c-position in x[] j und c.
B liegt bei 0,1 und auch bei 1,1 und so weiter.
So, für die erste Runde der Schleife für 'B', wenn j 0 ist und c wird 1 der Wert y[0] wird initialisiert auf 0 und x[1] 1.
(wie suchen WAHR sein wird, bei 0,1)
Wieder, wenn die Schleife, und j wird 1 und c wird 1, y[1] wird zu 1, und x[1] wieder ist 1 (überschrieben, wie in der vorherigen Schleife, wir Taten das gleiche).
Da für alle j von 0 bis 4, der Wert von c wird 1 für 'B'.
Also, für jeden Wert von y[0to4] die 0,1,2,3,4, wir sind mit dem gleichen c[1], die 1.
Aber beim drucken der Ergebnisse drucken der falschen paar Ergebnisse, die Sie drucken y[0] mit x[0] (tough Sie nie gespeichert, ein Wert in x[0] werden alle Werte gespeichert wurden, in x[1] 'B' ), y[1] x[1] usw.
Nur ein Ergebnis richtig sein, dieser Weg, wird y[1] x[1] d.h. (1,1).
Für alle anderen Wert, y[0,2,3,4], wird 0,2,3,4 aber x[0,2,3,4] wird 0,0,0,0.
So, Sie die Logik ist falsch, es sollte so sein,
Nun, für 'B', speichern wir den Wert von j d.h. 0 an y[0] mit c also 1 in x[0].
Also, wenn wir Druckergebnis, wir bekommen die richtigen Paare von Positionen und für jeden Wert von y[n] =0,1,2,3,4 wir haben einen Wert, gespeichert in x[n]=1,1,1,1,1.