Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 40 von 40
  1. #31
    W32.Lovgate Avatar von s1ckST4R
    Registriert seit
    06.02.2010
    Beiträge
    324

    Standard

    zum 1. Ich hab Zittiert was Perishand geschrieben hat,
    und zum 2. Ich versteh nicht was daran Gossen Sprache ist?
    Ich hab gefragt ob %00 den Code dan unterbricht/Behindert..?

  2. #32
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Code:
    #include <iostream>
    using namespace std;
    
    int main() {
        int a[4],b;
        cout << "Eine 4 Stellige Zahl eingeben" << endl;
        cin >>  a[4];
        a[4] = 0;
        b = a[0] + a[1] + a[2] + a[3];
        cout << b << endl;
        system("PAUSE");
    }
    Damit hast du übrigends einen 1-A-Buffer-Overflow-Vuln gecodet ;-)
    1.) Sicher gehen, dass nur 4 Zeichen eingelesen werden,
    2.) Das 0-Byte nicht vergessen!
    3.) bei a[4] ist der höchste index a[3], also a[4] müsste dir einen Fehler rausschmeißen.

    besser wäre es in etwa so:
    (Am besten wäre natürlich die Integer-Variante die bereits gepostet wurde)
    char zahl[5] = {0}; int b = 0;
    for(int i = 0; i < 4; i++) {
    scanf("%c", &zahl[i]); b+=zahl[i]-'0';
    }

    Damit wäre b die Quersumme.


    MfG

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  3. #33
    Chloë Grace Moretz Avatar von ocz
    Registriert seit
    29.05.2010
    Beiträge
    384

    Standard

    Zitat Zitat von s1ckST4R Beitrag anzeigen
    zum 1. Ich hab Zittiert was Perishand geschrieben hat,
    und zum 2. Ich versteh nicht was daran Gossen Sprache ist?
    Ich hab gefragt ob %00 den Code dan unterbricht/Behindert..?
    Perishand hat NIEMALS diese schreckliche (un)Gleichung aufgestellt (die ich sehr ungerne wiederholen würde). %00 ist Prozent Null Null, wenn du damit die Nullterminierung meinst, dann hat die rein garkeine Auswirkung auf den Code, sondern lediglich auf Strings. Wenn du zum Beispiel n String a = "abcd" hast:

    Code:
    /.../|a|b|c|d|speicherblablab/.../
    nehmen wir mal an du machst jetzt cout << a; dann würde er dir abcdspeicherblabla.... ausgeben, da er anhand des speichers ja nicht weiß, wo der SPeicherbereich des Strings vorbei ist. Da die Zahl 0 für kein Zeichen steht, kann man es als terminator benutzen. Wenn man jetzt also als letztes "Zeichen" des Strings den Zahlenwert 0 verwendet, so weiß der Computer bei Stringoperationen wo er aufzuhören hat.

  4. #34
    W32.Lovgate Avatar von s1ckST4R
    Registriert seit
    06.02.2010
    Beiträge
    324

    Standard

    OpCodez Ich hab ja nicht gesagt das ers so geschrieben hat, ich hab gesagt ich habs so verstanden... nur iwie peil ich jetzt garnicht mehr durch.
    Der Code von Perishand war ja:
    Code:
        int b;
        char a[4];
        a[4] = 0;
    
        cout << "Eine 4 Stellige Zahl eingeben" << endl;
        cin >> a;
        b = a[0] + a[1] + a[2] + a[3] - 48*4;
        cout << b << endl;
        system("PAUSE");
    Den ich ja versteh bis auf dieses 48*4... weil wenn ich 48*4 mach kommt 192 raus aber den wert gibts ja auf der ASCII Tabelle nicht mehr.
    Und bei ihm ist auch die %00 gegeben... srry das ich solche Fragen stell aber wenn ich´s wüsste würd ich net Fragen.
    s1ckST4R

    P.S. VB.net is viel einfacher xD

    /edit: Achso grad seh ich 192 gibts ja doch auf ASCII noch aber des is son Komisches zeichen das glaub nicht in den Code gehört.
    Geändert von s1ckST4R (30.06.2010 um 16:58 Uhr)

  5. #35
    W32.FunLove
    Registriert seit
    08.08.2008
    Beiträge
    120

    Standard

    b = a[0] + a[1] + a[2] + a[3] - 48*4;

    was da addiert wird sind die ASCII werte
    um dann von denen auf deine zahlen zu kommen musst du von jedem 48 abziehen
    in diesem fall 4 mal weil du a[0]-a[3] addierst
    daher die -48*4
    und das ganze musst du deshalb machen weil die 0 in der ASCII tabelle den wert 48 hat

  6. #36
    W32.Lovgate Avatar von s1ckST4R
    Registriert seit
    06.02.2010
    Beiträge
    324

    Standard

    Ahhhhsooo na so einfach is das warum macht ihrs so Kompliziert xD Thx semportei

    /edit: jetzt das letzde was ich noch nicht versteh, warum wenn ich den Code dan ausführ kommt:
    Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.

  7. #37
    Chloë Grace Moretz Avatar von ocz
    Registriert seit
    29.05.2010
    Beiträge
    384

    Standard

    Zitat Zitat von s1ckST4R Beitrag anzeigen
    OpCodez Ich hab ja nicht gesagt das ers so geschrieben hat, ich hab gesagt ich habs so verstanden...
    Du kannst nicht einfach eine Gleichung so umstellen, dass sie falsch wird und das ganze dann so "verstehen".

    Den ich ja versteh bis auf dieses 48*4... weil wenn ich 48*4 mach kommt 192 raus aber den wert gibts ja auf der ASCII Tabelle nicht mehr.
    Und bei ihm ist auch die %00 gegeben... srry das ich solche Fragen stell aber wenn ich´s wüsste würd ich net Fragen.
    Hast du dir meinen Beitrag oben überhaupt durchgelesen? anstatt von jedem einzelnen Buchstaben 48 zu subtrahieren kannst du nach dem Kommutativgesetz auch von der Summe 4*48 subtrahieren.

    P.S. VB.net is viel einfacher xD
    Dass sich VB (.NET) Skripter nicht mit sowas auseinandersetzen müssen, ist übrigens der Grund für ihre extrem oberflächlichen Kenntnisse.

    /edit: Achso grad seh ich 192 gibts ja doch auf ASCII noch aber des is son Komisches zeichen das glaub nicht in den Code gehört.
    Arbeite meinen obigen Beitrag durch, vllt it einem Blatt papier, ich habe keine Ahnung wie man es noch simpler erklären kann.

    /edit: jetzt das letzde was ich noch nicht versteh, warum wenn ich den Code dan ausführ kommt:
    Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
    Zitat Zitat von OpCodez
    [...]cin die Eingabe nullterminiert, wenn du also 4 Zeichen eingibst, sind a[0]..a[3] die Eingabe und eben das Byte hinter a[3] == 0. Das führt dann zu Korruption ;D
    lesen pls
    Geändert von ocz (30.06.2010 um 17:12 Uhr)

  8. #38
    Gesperrt
    Registriert seit
    24.08.2008
    Beiträge
    401

    Standard

    Zitat Zitat von s1ckST4R Beitrag anzeigen
    OpCodez ...Den ich ja versteh bis auf dieses 48*4... weil wenn ich 48*4 mach kommt 192 raus aber den wert gibts ja auf der ASCII Tabelle nicht mehr.
    Gehen wir mal weiter davon aus die eingegebene Zahl ist 1,2,3,4 (ASCII) was in Dezimal 49,50,51,52 wäre also rechnet der PC
    49+50+51+52 = 202
    und um wieder auf den Normalen Wert zu kommen muss man nun die besagten 48 bei jedem dezimalwert abziehen...entweder einzeln während der Rechnung:
    (49-48)+(50-48)+(51-48)+(52-48)= 10

    Oder (Und hier komtm der Teil den du scheinbar noch nicht verstanden hasst) aber man zieht am Ende 4*48 ab was Rechnerisch das selbe ist...es ist halt nur kürzer
    49+50+51+52-48*4= 202-48*4= 202 - 192 = 10

  9. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    s1ckST4R (30.06.2010)

  10. #39
    W32.Lovgate Avatar von s1ckST4R
    Registriert seit
    06.02.2010
    Beiträge
    324

    Standard

    thX Starflow
    Das war nochn bischen besser Erklärt also jetzt hab ichs Komplett gepeilt...

    und OpCodez
    Ich versteh das du ville n bischen genervt bist weil ich gefragt hab, aber 1. Jeder hats ma gelernt und wenn er nicht hier Probleme hat, dan ville irgendwo anders.
    und 2. Du hast glaub ab un an auch nicht ganz verstanden was ich gemeint hab deswegen hast du so komplex es ging drum rum geredet.
    Naja aber wenn die aw von Starflow gleich nach dem code von Perishand gekommen wär, wär das Theard nur um die hälfte so lang xP.
    Aso und ja natürlich is VB.net viel leichter aber oberflächlich find ich n bischen übertrieben weil man merkt beim Codieren ja doch was Variablen bringen, Schleifen usw. nur in jeder Programmiersprache ists halt anders un daran gehts sich ein zu arbeiten.
    s1ckST4R

  11. #40
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    37 Posts über so eine einfache Frage?
    Ich mach jetzt hier mal zu, da das völlig ausartet.
    /closed
    Geändert von blackberry (30.06.2010 um 18:05 Uhr)

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  12. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    hl2.exe (30.06.2010)

Seite 4 von 4 ErsteErste ... 234

Ähnliche Themen

  1. [VB.NET] Sofort ausrechnen
    Von fLuX!? im Forum .NET Sprachen - Techniken
    Antworten: 2
    Letzter Beitrag: 11.12.2008, 14:22

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •