Algorithmus schreiben Hilfestellung?

6 Antworten

For Schleife(Array Länge(Länge gemeint als die Menge an besetzten Stellen))

{

if(Arrrayzahl <= 0)

{

irgend eine zählvariable ++

}

else

{

die selbe zählvariable --

}

}

if(zählvarianle < 0)

{

mehr positive

}

else if(zählvariable > 0)

{

mehr negative

}

else

{

gleich viele

}

.

.

Das Programm zählt die null auch als positive.

Falls du aber willst, dass das Programm die null nicht als positive zählt, machst du anstatt größergleich größer, und anstatt dem else ein else if mit der Bedingung kleiner.

Dieses Programm setzt vorraus, dass das Array sortiert ist(alle ziffern der Reihe nach von Position null+ stehen). Wenn er das nicht ist, musst du bei der For schleife den ganzen Block in eine If Bedingung verpacken, mit der Bedingung, dass es keine 'null' Stelle ist.

*Ich bearbeite meine Antwort, die einrenkungen kann ich nicht machen.


Wenn du ein bisschen optimieren möchtest, kannst du dir folgende Dinge überlegen:

  • Wie kann man das bereits beschriebene Verfahren mit nur einer Variable realisieren?
  • Ist es immer nötig, das gesamte Array zu durchsuchen? (Ist nur in Sonderfällen schneller, manchmal auch langsamer)

Mach zwei Int-Varaiblen. Eine, die die negativen Zahlen zählt, eine die die Positiven zählt.

Dann mach For-schleife, von i=0 bis Arraylänge-1.

Überprüfe in der Schleife, ob das Array-Element an der Stelle i kleiner als 0 ist.

Falls ja: Erhöhe den Zähler für Positive Zahlen. Falls nein: Erhöhe den Zähler für negative Zahlen.

Am Schluss dann einfach die beiden Zähler vergleichen.

Woher ich das weiß:Studium / Ausbildung – Bachelor in Informatik 👨🏻‍🎓

Karinb123 
Fragesteller
 18.05.2021, 21:52

vielen vielen Dank!!:)

1
MrAmazing2  18.05.2021, 22:01
@Karinb123

Bitteschön :)

Es ginge auch noch kürzer, mit einem einzigen Zähler, denn man dann jenachdem ab das jeweilige Element Positiv oder Negativ ist um 1 erniedrigt oder erhöht. Und am Schluss schaut man dann, ob dieser Zähler positiv oder negativ ist.

Aber ich denke obige Variante ist etwas verständlicher.

Mit "For-schleife, von i=0 bis Arraylänge-1" meinte ich übrigens einfach die hier:

for(int i = 0; i < deineArrayLaenge; i++) {
 ...
}

bzw.

for(int i = 0; i <= deineArrayLaenge-1; i++) {
 ...
}

Hast du vermutlich eh gecheckt, aber besser ich merke es noch an ^^

0
derButterkeks  18.05.2021, 22:00

Einfacher wäre das Problem mit einem Zähler gelöst. Du addierst bei positiv und subtrahierst bei negativ, ist aber eine Kleinigkeit.

0
MrAmazing2  18.05.2021, 22:02
@derButterkeks

Jo, aber fand diese Methode verständlicher / einfacher zu erklären.

Aber die Möglichkeit mit einer Variable habe ich auch noch ergänzt in meiner Antwort auf ihre Antwort.

1

Ave!

Generell sind die anderen Antworten vollkommen korrekt, aber nicht sonderlich performant.

Ich würde exakt eine Int erstellen, egal ob für positiv oder negativ.

Diese Variable wird in einer Schleife entsprechend der ausgewählten Variante hochgezählt und als Abschluss von der Array-Länge subtrahiert.

Ist die Zahl größer als dieses Ergebnis, gibt es folglich mehr von dieser Form.

Grüßchen :)


derButterkeks  18.05.2021, 22:32

Was meinst du mit entsprechend der variante hochgezählt?

0

Naja, einfach zwei Zähler-Variablen erstellen. Danach jedes Element im Array durchgehen, wenn das Element größer 0, erhöht sich halt der eine Zähler um 1, wenn die Zahl kleiner 0, erhöht sich der andere Zähler um 1.

Mfg Jannick (L1nd)


JanMarcel01  18.05.2021, 21:48

Am Ende dann noch schauen, ob Zähler eins oder Zähler zwei größer ist

1