1

Anfängerfrage programmieren in C

Frage von iyam27 iyam27

Hallo zusammen,

als Anfänger in Sachen Programmierung in C, habe ich folgendes Anliegen:

Ich habe eine Aufgabe zur Errechnung eines Barcodes bekommen. (Nein hier mogelt kein Schüler)

Jedoch suche ich nicht nach einer Komplettlösung für diese, sondern lediglich nach einem Teil des codes.

Ich habe eine Zahl: Bsp.: 2245632

Hier soll jetzt abwechselnd mit 3 und 1 multipliziert und anschließend addiert werden.

32+12+34+15+36+13+3*2 = 63

Ich würde das Programm einfach zweimal multiplizieren und einmal addieren lassen, aber ich weiss nicht, wie ich es dazu bringe, jeweils mit der (1,3,5,7) bzw. (2,4,6) Stelle zu multiplizieren.

Für Tipps danke ich euch im Voraus!

Fragen zu gleichen Themen finden

Antworten (2)

  • 1
    RatgeberHelden Antwort von tobistenzel tobistenzel

    Ich komme bei dem Beispiel auf 52...

    Ist die "Zahl" eigentlich ein Integer oder ein String? Dürfen auch führende Nullen vorkommen, also sowas: 00003430023.

    Im Prinzip musst du einmal über die Zahl "laufen", dabei immer die letzte Stelle abarbeiten. Dann brauchst du noch eine Fallunterscheidung, ob es ein gerader oder ungerader Durchlauf ist; kannst ja mal überlegen, wie man das machen könnte ;)

    Beispiel mit Eingabe code wenn es ein Integer ist:

    Mit "code modulo 10" bekommst du genau die letzte Stelle.

    Die vorletzte Stelle wäre dann "(code / 10) mod 10" und so weiter.

  • 0
    Antwort von dasmarcy dasmarcy

    Du kannst ganz leicht nur ungerade bzw. nur gerade Stellen lesen. Lass die Zählschleife einfach bei einem geraden bzw ungeraden Wert anfangen und zähle dann um 2 weiter:

    // für Stellen 0, 2, 4, 6, 8, ....
    for ( i = 0; i < barcodeLaenge; i = i + 2 ) {
    
      tue etwas;
    
    }
    
    // für Stellen 1, 3, 5, 7, 9, ....
    for ( i = 1; i < barcodeLaenge; i = i + 2 ) {
    
      tue etwas;
    
    }
    

    Jedoch geht dasselbe aus meiner Sicht eleganter mit einer Fallunterscheidung in der Schleife:

    for ( i = 0; i < barcodeLaenge; i++ ) {
    
      if ( i ist gerade) {
    
        tue etwas;
    
      } else {
    
        tue etwas anderes;
    
      }
    }
    

    Um herauszufinden ob eine Zahl gerade oder ungerade ist kannst du den Modulo-Operator '%' verwenden. Er gibt dir den Rest einer ganzzahligen Division.

    Beispiele:

    17 % 10 = 7, denn 17 / 10 = 1 Rest 7

    6 % 2 = 0, denn 6 / 2 = 3 Rest 0

    9 % 7 = 2, denn 9 / 7 = 1 Rest 2

    7 % 2 = 1, denn 7 / 2 = 3 Rest 1

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.