tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
1565
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jenny1106 jenny1106 ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    14
    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.
    Geändert von jenny1106 (06.03.10 um 20:03 Uhr)
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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.
     

  3. #3
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    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
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

  4. #4
    jenny1106 jenny1106 ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    14
    Theoretisch weiß ich wie es laufen muss aber irgendwie bekomme ich die einzelnen Teile nicht zusammen.
    Ich versuch es mal weiter.
     

  5. #5
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    Zeig doch mal her was Du hast, dann kann man Dir auf die Sprünge helfen.
    Nur das Programm komplett für Dich schreiben wird hier keiner, zumal Dir das auch nicht wirklich was bringt.
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

  6. #6
    jenny1106 jenny1106 ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    14
    So, das habe ich bislang zustande gebracht.

    #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.
    Wo steckt wohl der Fehler?
     

  7. #7
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    Zitat Zitat von jenny1106 Beitrag anzeigen
    do
    {
    printf("Zahl eingeben (0 fuer Ende): ");
    scanf("%d", &zahl);

    if (zahl>0)
    positiv=positiv++;
    else
    negativ=negativ++;
    } while (zahl != 0);
    Zitat Zitat von jenny1106 Beitrag anzeigen
    Wo steckt wohl der Fehler?
    Du behandelst die abschließende Null als negative Zahl. So ist's besser:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    for(;;)
    {
        printf("Zahl eingeben (0 fuer Ende): ");
        scanf("%d", &zahl);
            if(zahl == 0)
                    break;
        if (zahl>0)
            positiv++;
        else
            negativ++;
    }

    Gruß
    Enum
    Geändert von Enumerator (06.03.10 um 20:46 Uhr)
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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
    Geändert von sheel (06.03.10 um 20:48 Uhr)
     

  9. #9
    jenny1106 jenny1106 ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    14
    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.
     

  10. #10
    jenny1106 jenny1106 ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    14
    Ich danke euch beiden für die super Hinweise.
     

  11. #11
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    @sheel:
    Ja, ich bin sicher. Allerdings wäre Folgendes noch besser:
    Code :
    1
    2
    
    if(0 >= scanf("%d", &zahl) || 0 == zahl)
            break;
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

Ähnliche Themen

  1. VBA Code / negative Zahlen rot!
    Von fonds im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 03.09.08, 14:35
  2. Antworten: 9
    Letzter Beitrag: 07.12.06, 01:59
  3. auf negative Zahlen prüfen
    Von aTa im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 23.10.06, 15:50
  4. Exceltabelle negative Zahlen
    Von M155P3RF3K7 im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 17.05.06, 07:59
  5. negative Zahlen
    Von bizza im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 23.02.05, 17:23