2 svar
190 visningar
TB16 är nöjd med hjälpen
TB16 182 – Fd. Medlem
Postad: 28 jul 2019 20:40

Hitta heltal i en textsträng och skriv ut talet

Uppgift:

Write a function which removes from string all non-digit characters and parse the remaining to number.
E.g: "hell5o wor6ld" -> 56

Synliga testfall:

#include <criterion/criterion.h>

int get_number_from_string(const char *src);

Test(CoreTests, ShouldPassAllTheTestsProvided) {
cr_assert_eq(get_number_from_string("1"), 1);
cr_assert_eq(get_number_from_string("123"), 123);
cr_assert_eq(get_number_from_string("this is number: 7"), 7);
cr_assert_eq(get_number_from_string("$100 000 000"), 100000000);
cr_assert_eq(get_number_from_string("hell5o wor6ld"), 56);
cr_assert_eq(get_number_from_string("one1 two2 three3 four4 five5"), 12345);
}

Mitt försök att lösa uppgiften:

int get_number_from_string(const char *src) {
int decNumb = 0;
int count = 0;
for(int i = strlen(src)-1; i>=0; i--){
if((src[i] - 48) < 9 && ((src[i] - 48) >= 0)){
decNumb += ((src[i]-48)*pow(10,count));
count++;
}
}
return decNumb;
}

Koden passerar 6 stycken test, men på 7:e testet får jag följande felmeddelande:

"The expression (get_number_from_string(buffer)) == (get_number_from_string_tester(buffer)) is false."

Fråga:
Är det några viktiga testfall som jag missar? Jag testade att byta datatyp på decNumb från int till long för att kunna lagra större tal, men det hjälpte inte. 

Laguna Online 28566
Postad: 28 jul 2019 22:44

Siffran 9 verkar inte få vara med.

TB16 182 – Fd. Medlem
Postad: 29 jul 2019 00:10
Laguna skrev:

Siffran 9 verkar inte få vara med.

Där satt den! :D Nu passerar koden alla test. Tack

Svara Avbryt
Close