Zahlen einlesen - überwiegen positive oder negative Zahlen?

jenny1106

Grünschnabel
Hallo zusammen!
Ich brauche erneut eure Hilfe :)

Ich muss ein C-Programm schreiben, das ganze Zahlen einliest und ausgibt, ob gleich viele positive und negative Zahlen eingeben wurden bzw. welches Vorzeichen überwiegt. Das Einlesen soll enden, wenn die Zahl 0 eingegeben wird. Der Programmlauf sollte in etwa so aussehen:

Zahl eingeben (0 für Ende): 6
Zahl eingeben (0 für Ende): 8
Zahl eingeben (0 für Ende): -4
Zahl eingeben (0 für Ende): 0
Die Anzahl positiver Zahlen überwiegt.

Ich habe mir schon ein paar Gedanken gemacht, bekomme es aber nicht in ein Programm gepackt.
Das Programm muss solange Zahlen einlesen, bis die 0 eingetippt wird. Ist die eingegebene Zahl echt größer als 0, dann ist es eine positive Zahl und andernfalls eine negative. Ich habe mir gedacht, dass man zwei Variablen mit positiv und negative benennen könnte. Diese setzt man gleich null und erhöhte sie jeweils um 1 wenn es sich um eine positive oder negative Zahl handelt, die eingetippt wird. Zum Schluss könnte man die beiden Variablen miteinander vergleichen. Wenn positiv größer ist als negativ, dann die Ausgabe "Die Anzahl positiver Zahlen überwiegt." usw.

Ich hoffe ihr wisst was ich meine :)

Ich bin dankbar für alles was mir hilft diese Programm auf die Beine zu stellen.
 
Zuletzt bearbeitet:
Wo liegt das Problem?
Du hast das Programm ja schon durchgeplant :)

Zwei int pos und neg, noch eine für das Einlesen (ich nenns einfach i),
und dann eine Schleife a la
do{...}while(i!=0);
Drinnen liest du i ein, und if(i<0) dann neg++ sonst pos++

Und am Schluss musst du nur noch ausgeben, ob pos oder neg größer ist.
 
Hi!

Ich kann mich sheel nur anschließen, Dein Programm ist ja quasi schon fertig.
Was meinst Du mit "nicht in ein Programm gepackt"?
Die scanf Funktion aus <stdio.h> kennst Du doch sicher schon..

Gruß
Enum
 
Theoretisch weiß ich wie es laufen muss aber irgendwie bekomme ich die einzelnen Teile nicht zusammen.
Ich versuch es mal weiter.
 
Zeig doch mal her was Du hast, dann kann man Dir auf die Sprünge helfen. :p
Nur das Programm komplett für Dich schreiben wird hier keiner, zumal Dir das auch nicht wirklich was bringt.
 
So, das habe ich bislang zustande gebracht.:D

#include <stdio.h>

int main (void)
{
int zahl;
int positiv;
int negativ;

positiv=0;
negativ=0;

do
{
printf("Zahl eingeben (0 fuer Ende): ");
scanf("%d", &zahl);

if (zahl>0)
positiv==positiv++;
else
negativ==negativ++;
} while (zahl != 0);

if (positiv>negativ)
printf("Die Anzahl positiver Zahlen überwiegt.");
else if (positiv<negativ)
printf("Die Anzahl negativer Zahlen überwiegt.");
else
printf("Die Anzahl positiver und negativer Zahlen ist gleich.");

return 0;
}

Ich erwarte auch garnicht, dass mir jemand das komplette Programm schreibt. Es war mir schon ein Hilfe, den Tipp mit der do-while Schleife zu bekommen.

Also mein Programm lässt sich fehlerfrei kompellieren. Es kommt nur leider nicht das richtige raus, wenn ich das Programm ausführe.
Bei den Eingaben 6, 8, -4 und schließlich der 0 kommt raus, dass die Anzahl positiver und negativer Zahlen gleich ist.:confused:
Wo steckt wohl der Fehler?
 
do
{
printf("Zahl eingeben (0 fuer Ende): ");
scanf("%d", &zahl);

if (zahl>0)
positiv=positiv++;
else
negativ=negativ++;
} while (zahl != 0);
Wo steckt wohl der Fehler?

Du behandelst die abschließende Null als negative Zahl. So ist's besser:
Code:
for(;;)
{
	printf("Zahl eingeben (0 fuer Ende): ");
	scanf("%d", &zahl);
        if(zahl == 0)
                break;
	if (zahl>0)
		positiv++;
	else
		negativ++;
}

Gruß
Enum
 
Zuletzt bearbeitet:
Man sollte auf die Warnungen auch achten:
positiv==positiv++
sollte wennschon heißen
positiv=++positiv
Mit einem(!) =, sonst ist es nur ein Vergleich ohne if

Und warum nicht einfach das?
positiv++;

Für negativ zwei Zeilen darunter gilt dasselbe

Und nochwas: Das
if(i>0)...else...
Würde 0 auch als negativ werten

@Enumerator: Bist du dir sicher, das die Sache mit == funktioniert?
Edit2: Hab zu wenig nachgedacht
Erhöht wirds schon, aber der Vergleich ist trotzdem sinnlos
 
Zuletzt bearbeitet:
Ich habe den Fehler selbst schon gefunden.

Ich muss in der do-Schleife

else if (zahl<0)
negativ==negativ++;

schreiben. Sonst zählt das Programm die 0 mit zu den negativen Zahlen.
 
Zurück