2 svar
42 visningar
TB16 är nöjd med hjälpen!
TB16 185
Postad: 28 jul 2019

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 6004
Postad: 28 jul 2019

Siffran 9 verkar inte få vara med.

TB16 185
Postad: 28 jul 2019
Laguna skrev:

Siffran 9 verkar inte få vara med.

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

Svara Avbryt
Close