[Batch/Bash] Teilerberechnung //Hilfestellung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von wyldstyle, 17. November 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 17. November 2008
    Teilerberechnung //Hilfestellung

    Problem gelöst, ich danke allen nochmal für die Hilfe besonders Kalazomai!


    Hallo, ich melde mich hier auch mal wieder zu Wort *gg*. Bin immernoch dabei mich etwas in Bash reinzuarbeiten und habe mal ein paar Fragen!

    Ich habe folgende Aufgabe gestellt bekommen und weiss nicht so recht wie ich die lösen soll:
    ImageShack® - Online Photo and Video Hosting
    Es geht darum den größten gemeinsamen Teiler von zwei Zahlen zu ermitteln und dazu ist eben der Pseudocode wie auf dem Bild vorgegeben.

    Mein Ansatz wäre jetzt folgender:

    Code:
    if $A -eq 0
    then echo $B
    else
    while ($B -gt 0) -o ($B -lt 0)
    do
    if A -gt B
    then A=$A-$B 
    else B=$B-$A
    done
    echo $A
    fi
    funktionieren tut das ganze natürlich mal überhauptnicht ! Kann mir jemand sagen wo überall Fehler sind und mir ne Hilfestelleung geben?

    mfg wyldstyle
     
  2. 17. November 2008
    AW: Teilerberechnung //Hilfestellung

    hi,

    verstehe gerade deine while nicht. müsstest du dir nicht ein zähler (dekrement) einbauen, der von b immer eins abzieht??? denn er soll das solange machen bist b<> 0 ist. so würde ich es jedenfalls verstehen.
     
  3. 17. November 2008
    AW: Teilerberechnung //Hilfestellung

    hi,

    hab mal das selbe in C# rausgekrammt, vll hilft es dir. Ist leider rekursiv und vll für dich nicht so gut umsetzbar. Wenn ich nachher noch zeit hab nach hausis schreib ichs dir in batch um

    Code:
     private static int ggT(int a, int b)
     {
     if (b == 0)
     return (a);
     return ggT(b, a % b);
     }
    % steht in c# für mod also rest
     
  4. 17. November 2008
    AW: Teilerberechnung //Hilfestellung

    @harry1526: Ups, ja sowas sollte man auchnoch einbauen *gg*. Sind halt meine ersten Versuche da darf man sowas nochmal vergessen! ;D

    @SchOudeBläS: Danke für den C Code ich werd später mal durchschauen inwiefern ich das umsetzen kann.

    Danke soweit, hab euch mal "belohnt" für die Mühe
     
  5. 18. November 2008
    AW: Teilerberechnung //Hilfestellung

    habe herausgefunden,dass es den Befehl while in batch gar nicht vorhanden ist. Du musst also da wo jetzt dein while do steht :loop schreiben und am ende if bei=0 dann goto :loop

    des weiteren sind $A und $B parameter der bat-File beim Aufruf

    solltest dafür %1 und %2 nehmen siehe link:
    Batch files - Command line parameters

    sry wenn ich da jetzt was verwechselt habe
     
  6. 19. November 2008
    AW: Teilerberechnung //Hilfestellung

    Ja hast du leider Das da oben is Bash, kein Batch. Und in bash gibts sehr wohl ne while schleife ^^
     
  7. 19. November 2008
    AW: Teilerberechnung //Hilfestellung

    Hey!

    Ich hab mal das Bild, das du gepostet hast, umgesetzt.
    Falls die Formel nicht stimmt, wird der Sourcecode auch kein richtiges Ergebnis bringen.
    Andernfalls sollte das so stimmen

    Als Script, das 2 Argumente nimmt:
    Code:
    #!/bin/bash
     
    A=$1
    B=$2
     
    if [ $A -eq 0 ] ; then
     echo $B
    else
     while [ $B -ne 0 ] ; do
     if [ $A -gt $B ] ; then
     A=`expr $A - $B`
     else
     B=`expr $B - $A`
     fi
     done
     echo $A
    fi
    Das funktioniert dann wie folgt:
    Code:
    bash script.sh 26 883
    Oder als Funktion:
    Code:
    #!/bin/bash
    
    function ggt
    {
     A=$1
     B=$2
     
     if [ $A -eq 0 ] ; then
     echo $B
     else
     while [ $B -ne 0 ] ; do
     if [ $A -gt $B ] ; then
     A=`expr $A - $B`
     else
     B=`expr $B - $A`
     fi
     done
     echo $A
     fi
    }
    Beispielaufruf (im Script):
    Code:
    #!/bin/bash
    
    [...]
    
    ggt 26 883
    Mfg,

    Kolazomai
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.