Addieren und Vergleich
-
Ich glaube jetzt habe ich dein Vorhaben auch verstanden!
#include <stdio.h> #include <string.h> int equals(const char *str1, const char *str2); int qsumme(const char *str); int main() { const char *str1 = "311"; const char *str2 = "3"; char *res; int r = equals(str1, str2); switch (r) { case -1: res = "Groesser"; break; case 0: res = "Gleich"; break; case 1: res = "Kleiner"; break; } printf("Ergebnis: %s\n", res); } int equals(const char *str1, const char *str2) { const int res1 = qsumme(str1); const int res2 = qsumme(str2); if (res1 > res2) return -1; if (res1 == res2) return 0; if (res1 < res2) return 1; } int qsumme(const char *str) { int res = 0, i = 0; for (; i < strlen(str); ++i) { res += str[i] - '0'; // :) } return res; }
@Swordfish: Ich halte deinen Quelltext für Overhead, der Junge ist doch jetzt schon überfordert
-
Falls er wirklich
strcmp
mein, dann wüsst' ich gern', wo er addieren will...int my_strcmp( char const * first, char const * second ) { for( ; *first == *second; ++first, ++second ) { if( !( *first || *second ) ) { return 0; } } return *first > *second ? 1 : -1; }
greetz, Swordfish
PS: Oder er will uns veräppeln...
-
*löschmich*
-
jio ...
also ... eigentlich macht die funktion doch exakt das gleich wie meine, die ich als erstes gepostet habe. natürlich ist sie anders aufgebaut, aber wieso klappt sie denn bei mir nicht?
bei strcmp gibt er mir 100% richtige lösungen für meine aufgabe. genauso zuerlässig wie die lösung von BBB - wie erklärt ihr euch das ? ... oder besser ... wie erklärt ihr mir das?
-
kallemalle schrieb:
jio ...
also ... eigentlich macht die funktion doch exakt das gleich wie meine, die ich als erstes gepostet habe. natürlich ist sie anders aufgebaut, aber wieso klappt sie denn bei mir nicht?
bei strcmp gibt er mir 100% richtige lösungen für meine aufgabe. genauso zuerlässig wie die lösung von BBB - wie erklärt ihr euch das ? ... oder besser ... wie erklärt ihr mir das?for(..) {
res += str[i] - '0';
}Ansonsten solltest du beschreiben: WELCHHE Funktion du meinst!
-
jio .... danke .... -'0'
was macht das für einen sinn .. minus 0???
ich bitte um eine erklärung warum dies nötig ist. pls
und bei mir bleibt die frage warum strcmp genau die gleichen ergebnisse liefert...?
-
http://www.wer-weiss-was.de/theme158/article1562436.html
[...]
indem du '0' abziehst. in der ASCII Tabelle hat dez 1 einen wert von 48 und dez. 0 einen von 47, wenn du jetzt 48-47 rechnest, kommt genau 1 raus, und das wäre dein gewünschtes Ergebnis. also behindert dich die typenumwandlung nicht, und machts auch nicht komplizierter, ist nur ein sicher Weg das nichts schiefgehen kann.
[...]
-
strcmp
ist es nicht, das ihr da aufführt.@kallemalle: Könntest Du so gut sein, und die Aufgabenstellung komplett - so wie du sie erhalten hast - posten?
greetz, Swordfish
-
jo mach ich .... da sich die aufgabenstellung ein wenig auf eine vorhergehende aufgabe bezieht hier den link zu der behandelten klausur:
-
Warum sagst du es nicht gleich so?
#include <math.h> #include <float.h> #include <string.h> float average( const char *string ) { unsigned sum = 0; size_t count = 0; while( *string ) { sum += *string - '0'; ++count; ++string; } return count ? sum / ( (float) count ) : 0.0f; } int besser( const char *a, const char *b ) { float average_a = average( a ); float average_b = average( b ); if( fabsf( average_a - average_b ) < FLT_EPSILON ) { return 0; } return average_a < average_b ? -1 : 1; }
greetz, Swordfish