2016-04-04 3 views
0

Der Versuch, eine der Fragen zu lösen, wurde mir von einem Lehrer gestellt und ich habe Schwierigkeiten zu verstehen, wie man das richtig nennt.Suche nach einer Funktion mit der cctype-Bibliothek, um die Anzahl der Zeichen zu finden, die Ziffern in einem Bereich sind

Ich habe eine Funktion, die mit einem Testtreiber verknüpft ist und mein Ziel ist es, die Cstring-Bibliothek zu verwenden, um beliebige Zahlen im Bereich von 0-9 in einem zufällig generierten String-Objekt mit dieser Funktion zu finden.

int countDigits(char * const line) {return 0;} 

Bisher ist das, was ich habe:

int countDigits(char * const line) 
{ 

    int i, index; 

    index = -1; 
    found = false; 
    i = 0; 
    while (i < *line && !found) 
    { 
     if (*line > 0 && *line < 9) 
      index++; 
    } 
    return 0; 
} 

Mein Code nicht groß, und im Moment nur die Ergebnisse in einer Endlosschleife und Versagen, jede Hilfe sehr würde sehr geschätzt.

Antwort

2

Nun, es gibt mehrere Probleme mit Ihrer Funktion.

  • wollen, dass es die Anzahl der Stellen zurück, aber es gibt 0 in jedem Fall
  • found nie etwas als falsch eingestellt ist, und verbietet somit die while-Schleife vom Stoppen
  • auch der Vergleich i<*line tut Für mich ergibt das nicht viel Sinn. Ich schätze, Sie wollen nach dem Ende der Linie suchen. Vielleicht möchten Sie nach einer Null Terminierung "\ 0" suchen (hier wieder i ist nie auf etwas anderes als 0 gesetzt) ​​
  • und, wenn Sie einzelne Zeichen vergleichen möchten, sollten Sie die der Zeichen Sie suchen sind im Vergleich zu (die Ziffern 0-9 sind nicht gleich Codes 0-9)

Hoffe, dass ein Anfang ist, um Ihre Funktion zu verbessern.

+0

IMO, das ist fast die perfekte Detailebene für eine solche Frage - gibt Hinweise darüber, wie Sie den Code zu schreiben, ohne nur die Bereitstellung vorgefertigter Code. Gut gemacht. –

+0

Ja, mein Code war ein bisschen katastrophal, haha, aber danke, dass du mich in die richtige Richtung gelenkt hast, ich habe es herausgefunden und diese Funktion bekommen, was sie tun musste. So sieht der überarbeitete Code aus: int countDigits (char * const-Zeile) { char index = * line; int Zählung; while (! Index) { if (Index> 48 && * Zeile <57) count ++; } Anzahl der Rücksendungen; } – RyeMan

+0

Ich bin froh, dass ich helfen konnte! –

1

Es für dieses genannt count_if ein Ready-made ist: -

count_if(begin, end, [](char c){ return isdigit(c);});