tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
22
ZUGRIFFE
346
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MrCodeMaster MrCodeMaster ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Beiträge
    63
    Hey Leute ich hab einen Taschenrechner programmiert nur habe ich jetzt ein kleines Problem.

    Ich kann den Inhalt zweier eines Strings nicht addieren ich poste mal den Code vlt. kann mir ja wer helfen.

    Code :
    1
    
    ergebnis = str_aufgabe[0]) + str_aufgabe[2];

    Wenn ich das mache kommt 99 raus was ASCII mäßig ja auch richtig ist. Meine Rechenoperation ist 1+2 und 1 is in ASCII 49 und 2 50 aber wie ändere ich das wieder in Dezimalzaheln um****
     

  2. #2
    posi90 posi90 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    113
    Hallo,

    Ich würde die Zahlen in integer format umwandeln (strtol) und erst dann zusammenrechnen. Zum Anzeigen wieder in String umwandeln.

    mfg. posi90
     

  3. #3
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    wenn es nur für einzelne Ziffern bleibt: Rechne am Anfang einfach '0' bei beiden Ziffern weg und nach dem Addieren wieder dazu. Oder einfach nach dem Addieren zweimal abziehen.

    Wenn es längere Zahlen werden: sscanf doer atoi.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  4. #4
    MrCodeMaster MrCodeMaster ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Beiträge
    63
    Und wie funktioniet diese Funktion.

    Geht das den nicht, dass ich einfach auf den Inhalt des Strings an dieser Position zugreife?
     

  5. #5
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Doch, das tust du ja

    Code cpp:
    1
    
    ergebnis = str_aufgabe[0] + str_aufgabe[2] - 2*'0';
    MrCodeMaster bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  6. #6
    MrCodeMaster MrCodeMaster ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Beiträge
    63
    DANKE für die schnelle Hilfe.

    Funktioniert wunderbar :-D

    Ich habs so gemacht jetzt:
    Code :
    1
    
    ergebnis = str_aufgabe[0] - '0' + str_aufgabe[2] - '0';
     

  7. #7
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Stimmt natürlich, zweimal...mein Fehler.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  8. #8
    MrCodeMaster MrCodeMaster ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Beiträge
    63
    Macht eh nichts ein bisschen muss ich selber ja auch dazu beitragen oder? :-D

    DANKE nochmal
     

  9. #9
    MrCodeMaster MrCodeMaster ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Beiträge
    63
    So jetzt hab ich noch ein Problem

    Wenn ich 1+2 rechne kommt 3 raus passt alles.

    Aber wenn ich 10+12 rechne schreibt er ja 1 in str_aufgabe[0] und 0 in str_aufgabe[1] hinein wie soll ich das am besten machen, dass ich er das richtig rechnet?
     

  10. #10
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Wie schon geschrieben: atoi, sscanf...

    Zwischen den Zahlen ist vermutlich ein Rechenzeichen wie + - * / und so?

    Hast du später auch vor, längere Rechnungen wie
    (1 + 2) * 3 / (4^2)
    zu verarbeiten, oder solls immer bei
    Zahl Rechenzeichen Zahl
    bleiben?
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  11. #11
    MrCodeMaster MrCodeMaster ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Beiträge
    63
    Im Moment solls einmal nur bei Zahl Rechenzeichen bleiben.

    Ich machs in c++.
     

  12. #12
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Such zuerst die Position des Rechenzeichens (int x im Code, Eingabestring ist eingabe) und speicher das Zeichen irgendwo separat.
    Dann:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    int zahl1, zahl2;
    eingabe[x]=' ';
    if(2 != sscanf(eingabe, "%d %d", &zahl1, &zahl2))
    {
        //Fehler
    }
    //Sonst OK, zahl1 und zahl2 gefüllt.

    Gruß
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  13. #13
    MrCodeMaster MrCodeMaster ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Beiträge
    63
    Warum überprüfst du ob 2 != sscanf ist ?

    Und mit welcher funktion bestimme ich die Position meines Strings?
    Geändert von MrCodeMaster (21.10.11 um 15:12 Uhr)
     

  14. #14
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    (f-, s-, bla-) scanf: Soll 2 mal %d, also 2 Integer, einlesen.
    Und der Returnwert ist immer die Anzahl der Variablen, die erfolgreich eingelesen wurde.
    Bei 2 Ints ist Returnwert 2 ideal, sonst hats Probleme gegeben.
    Steht aber auch in jeder Referenz..

    Und zur Position:
    Zuerst gehst du in einer Schleife jedes Ziechen der Eingabe durch und prüfst, ob ein '+' dabei ist.
    Wenn ja: Das wievielte Zeichen ist es? Das ist die Position.
    Wenn keins dabei war, suchst du auf die selbe Art nach '-' usw...
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  15. #15
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von sheel Beitrag anzeigen
    (f-, s-, bla-) scanf: Soll 2 mal %d, also 2 Integer, einlesen.
    Und der Returnwert ist immer die Anzahl der Variablen, die erfolgreich eingelesen wurde.
    Bei 2 Ints ist Returnwert 2 ideal, sonst hats Probleme gegeben.
    Steht aber auch in jeder Referenz..

    Und zur Position:
    Zuerst gehst du in einer Schleife jedes Ziechen der Eingabe durch und prüfst, ob ein '+' dabei ist.
    Wenn ja: Das wievielte Zeichen ist es? Das ist die Position.
    Wenn keins dabei war, suchst du auf die selbe Art nach '-' usw...
    Oder du verwendest ebenfalls sscanf dafür:
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    int a, b;
    char op[2];
     
    if (3 == sscanf(eingabe, "%d %1[+-*/]%d", &a, op, &b)) {
      ...
    } else {
      // Fehler
      ...
    }
    Gruß
    Geändert von deepthroat (21.10.11 um 15:38 Uhr)
    sheel bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. String Inhalt vergleichen
    Von Java_Anfänger im Forum Java
    Antworten: 9
    Letzter Beitrag: 27.09.07, 11:12
  2. Antworten: 5
    Letzter Beitrag: 08.03.06, 01:44
  3. String auf bestimmten Inhalt überprüfen, WIE?
    Von lukasulrich im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 10.06.05, 16:51
  4. hilfe zum addbefehl wie addiere einzlene werte mit indizis
    Von josefhader im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 17.08.04, 15:51
  5. [c++] String-Inhalt prüfen
    Von schiieech im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 10.02.04, 10:52