C While-Schleife für ein array von ganzen zahlen
Dies ist eine noob Frage. Ich habe ein array namens Counter[N][N]
und ich will so etwas wie:
While (each element of Counter < 10000) {do something}
While (there exists an element of Counter < 10000) {do something}
Gibt es einen einfachen Weg, das zu tun, in C?
Sie können mit einer doppelt verschachtelten Schleife zu überprüfen, können Sie dann ein, wenn etwas zu tun ist.
mein post,es gibt u Antwort
Sind Sie jetzt bitten", WENN es ein einzelnes element in Zähler weniger als 10000"?
Das ist genau das, was ich meinte.
Ok, ich bin mir nicht sicher, was die Anwendung von dieser ist. Schleife über ein 2D-array für jede while-Schleife ist vielleicht nicht die beste Idee. Was du tust, zu planen, WENN es ein element ist? Wenn Sie planen, Bearbeiten Sie das element, um es kleiner oder größer als 10000, Sie möchten verwenden Sie FOR-Schleifen wie in meinem Beispiel. Auf diese Weise werden Sie nur mit einer Schleife durch das array einmal.
mein post,es gibt u Antwort
Sind Sie jetzt bitten", WENN es ein einzelnes element in Zähler weniger als 10000"?
Das ist genau das, was ich meinte.
Ok, ich bin mir nicht sicher, was die Anwendung von dieser ist. Schleife über ein 2D-array für jede while-Schleife ist vielleicht nicht die beste Idee. Was du tust, zu planen, WENN es ein element ist? Wenn Sie planen, Bearbeiten Sie das element, um es kleiner oder größer als 10000, Sie möchten verwenden Sie FOR-Schleifen wie in meinem Beispiel. Auf diese Weise werden Sie nur mit einer Schleife durch das array einmal.
InformationsquelleAutor Ariaramnes | 2012-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Funktion testet, ob der Zähler-array übergeben in einem element kleiner als der angegebene Wert:
Verwenden Sie es:
Könnte man umgehen mit Variablen dimension von arrays in C99 durch die übergabe N als parameter an die Funktion. Es wird vorausgesetzt, Sie haben die C99-header
<stdbool.h>
vorhanden und inklusive.Ist dies, was Sie nach? Sie erwähnen ', Während' es ist also nicht klar, ob Sie brauchen, um eine
while
loop — wenn Sie das tun, ich denke, das ist der job:Oder, mehr umgangssprachlich, aber mit
for
Schleifen:Beachten Sie, dass dieser code ist mit C99; Sie können erklären
i
undj
außerhalb der loops und es wird C89-code. Auch, wenn Sie aus irgendeinem Grund brauchen Siei
oderj
(oder, wahrscheinlicher, beide) nach der Schleife, müssen Sie deklarieren Sie die Variablen außerhalb der Schleife.Die zweite Lösung mit
for
Schleifen ist mehr idiomatische C; diefor
Schleife ist sehr gut für diesen job und was sollten Sie planen, zu verwenden, nicht zuletzt, weil es Pakete, die alle loop Steuerelemente in einer einzigen Zeile, im Gegensatz zu denwhile
- loop-Lösung, die das initialize-code auf eine Zeile (außerhalb der Schleife), der Zustand auf der anderen, und die erneute Initialisierung auf noch eine Dritte Linie.has_element_less_than()
Funktion.InformationsquelleAutor Jonathan Leffler
Könnten Sie tun,
InformationsquelleAutor btstevens89
kann dies schön gemacht, mit Zeiger
Counter
weniger als 10000, die nicht Loop-Schleife über die ersten 10000 Elementen.schon gesehen, ich bin nur Bearbeitung der post ...
Hinweise ???? Horror für Neulinge wie mich .
Zeiger sind gut, wenn Sie wollen, es zu tun, sehr schnell und mit einer kurzen Quellcode, siehe andere Antworten, wenn Sie es wollen, ohne Zeiger
Der OP fragte nach einer einfachen Möglichkeit dies zu tun, in C. Wann mit einem array, Spiele mit dem Zeiger ist fast immer die Antwort.
InformationsquelleAutor user287107
Einfach, wenn man eine Funktion schreiben, die 1 zurück falls alle Elemente kleiner als 10000 :
dann verwenden Sie es :
Für die zweite version der Frage (ist nicht mehr jedes element < 10000", sondern "mindestens ein element < 10000') :
Wie gesagt von Jonathan Leffler, diese Lösung funktioniert nur, wenn das array wird dynamisch erzeugt, wenn der Zähler als array deklariert mit
#define
d N, als meine Lösung zerfällt in Jonathan.Richtig ... es war nur eine Antwort auf die OP ' s "Erster Entwurf". Ich werde zu aktualisieren meinem Beitrag. ... fertig 🙂
Ich weiß, ich bin eine pest, aber... Ein
int **array
parameter ist sehr Verschieden von einemint array[][N]
parameter. Der ehemalige erfordert ein array von Zeigern, von denen jeder Punkte auf (das erste element) ein array vonint
; der zweite rechnet mit einem 2D-array. Wenn Sie versuchen, Ihren code mit einem eigentlichen 2D-array, ich denke, du wirst auf Probleme stoßen, vor allem, wenn die meisten der Werte im array sind Nullen.Nicht ein Schädling an alle, das ist, was ich mag, da ich immer etwas lernen. Ich veränderte meine Antwort entsprechend Ihren Punkt. Thx 🙂
InformationsquelleAutor Kwariz
Verschachtelte for-Schleife
InformationsquelleAutor Mudassir Hasan
Lösung für die BEARBEITETE Frage
In meiner arroganten Meinung
Anweisung ist die elegante Konstrukt in der Sprache zu Programmieren . Wenn das jemand werden will Milliardär wie Bill Gates , müssen Sie viel springen, während die Entwicklung Ihrer bahnbrechenden software .
counter[0][0]
enthält 1000000 und jeder andere Wert ist 0. Dein code springt aus der Schleife auf das erste element sieht es so aus, ignoriert alle anderen, die zeigen, dass bei der Verarbeitung getan werden muss. Bitte Einrücken, Ihre loops in einen mehr Orthodoxen Weise. Siehe auch McConnell, "Code Complete" und GOTO noch schädlich? für einige von den vielen Gesprächen, die von GOTO.InformationsquelleAutor Mudassir Hasan
obwohl Sie nicht Fragen, für c# ist, ist hier die c# - Lösung, denn es wäre so einfach:
InformationsquelleAutor user287107
Was ist das?
es prüft, ob element mit dem Wert 1000 ist vorhanden, wenn vorhanden dann geht es weiter zu arbeiten, wenn es got-Wert >1000 dann bricht die Schleife
Die
break
Aussagen müssen näher erklärt werden. Wenn das element weniger als 1000 (beachten Sie, dass die Frage, sagte 10000, aber was ist eine Größenordnung, die zwischen Freunden), Sie wollen etwas Aussagen und brechen, sonst brechen Sie sowieso. Das ist nicht viel von einer inneren Schleife; iteriert nur einmal.Leffler:plz, siehe aktualisierten post
Einstellung Flaggen...sehr schöner Mechanismus, um aus mehreren Schleifen..etwas neues Gelernt..danke..von Ihnen positiv bewertet werden
InformationsquelleAutor Ravindra Bagale