Vorzeichenwechsel zählen



  • Hi

    Ich habe da eine bzw. zwei Fragen.
    Programm:
    Eingabe: Zahlen
    Ausgabe "Es wurde ... mal das Vorzeichen gewechselt."

    Bsp:
    1,-5,3,4,0,-7,8,......
    indem fall 4 mal

    0=neutral 0 wird sozusagen nicht berücksichtig,wenn 0 kommt dann soll man mit dem vorzeichen von der vorigen Zahl rechnen.

    Das Programm zählt ab wie oft das Vorzeichen gewechselt wurde.
    Wenn zweimal hintereinander + oder - zählt man das nicht mit.
    Zwei Varianten:

    1.) Mit Schalter
    1/0 1=+ 0=-

    2.)Multiplikation
    +Zahl*+Zahl=+
    +Zahl*-Zahl=-
    -Zahl*-Zahl=+
    -Zahl*+Zahl=-

    Ich habe jetzt das Problem das ich bei beiden nicht weiss wie,
    Beim ersten hab ich es als strucktogramm geschreiben ist aber vielleicht nicht richtig.

    Wie könte ich das als c code schreiben?

    THX



  • Versuch aus deinem Struktogram das Program zu schreiben
    (ist ja keine grosse Sache... ein späteres Umbauen ist ja kein Problem 😉 )
    und poste es dann hier..

    Hausaufgaben machen wir nicht... aber bei konkreten Fragen helfen wir weiter!



  • Das erste was mir dazu eingefallen ist war das:
    bei -500 Abbruchbediengung.

    while (zahl!=-500)
    {
    if(zahl>0&&zahl2<0||zahl<0&&zahl2>0)
    vz=1;
    sum=sum+1;

    if(zahl<0&&zahl2<0||zahl>0&&zahl2>0)
    vz=0;
    }

    hier
    printf("Es wurde..%d..mal....",sum);

    so war meine erste überlegung.
    Das ist die erste Variante.



  • aha... würde sagen das läuft noch nicht so ganz 😉

    1. Also... kannst du mal noch die Eingabe der Zahl einbringen?
    (Die ausgabe hast du ja schon)

    2. Bist du dir bewusst, dass "sum" in deinem Code IMMER hochgezählt wird
    (unabhängig der "if" ) ?



    #include <stdio.h>
    #include <conio.h>
    
    void main ()
    {
    int zahl,zahl2,sum=0,vz;
    
    printf("Eingabe:");
    scanf("%d",&zahl);
    scanf("%d",&zahl2);
    
    while (zahl!=-500)
    {
    if(zahl>0||zahl2>0)
    vz=1;
    
    else
    if(zahl<0||zahl2<0)
    vz=0;
    
    if(zahl==1||zahl2==2)
    sum=sum+1;
    }
    
    printf("Es wurde %d mal das Vorzeichen gewechselt",sum);
    getch();
    }
    

    Habs jetzt etwas um geändert.

    2. Nein



  • Wie wäre es mit einer "laufenden" Eingabe ?

    do
     {
       printf("nächste Zahl:");
       scanf("%d",&zahl);
    
       // ..
       // Vergleichs-Code (irgendwelche Ideen?)
       // ..
     } while (zahl != -500)
    

    Nun könntest du Dir doch immer die letzte Eingabe merken und
    mit dieser vergleichen....

    übrigens:

    if (erfuellt) 
       tue_was();  // fuehre NUR diese Zeile aus
     else
       tue_was_anderes();
    
     if (erfuellt)
     { 
       tue_was_eins(); // fuehre beide Zeilen aus...
       tue_was_zwei();
     }
     else
       tue_was_anderes();
    

Anmelden zum Antworten