Bonusový úkol 4

Naprogramujte funkci s následující hlavičkou.

int compute_sum(char src[], char result[], int n);

Argumenty funkce:

Funkce spočítá součet čísel z řetězce src a výsledek zapíše jako řetězec do pole result a vrátí 1 jako návratovou hodnotu. Pokud se výsledek do pole result nevejde, vrátí funkce hodnotu 0. Na obsahu pole result pak nezáleží.

Funkce musí fungovat pro libovolně velká čísla (nelze tak použít postup, kdy nejdříve převedete čísla z řetězce na hodnoty některého celočíselného typu v C, provede součet a výsledek převedete zpět na řetězec.)

Příklady použití funkce


char r[5];
int v;

/* nasledujici vede k vypsani: 30 */

v = compute_sum("10 20", r, 5);
if (v) {
    printf("%s\n", r);
} 
else {
    printf("vysledek je moc velky\n");
}


/* nasledujici vede k vypsani: 1098 */
v = compute_sum("99 999", r, 5);
if (v) {
    printf("%s\n", r);
} 
else {
    printf("vysledek je moc velky\n");
}


/* vede k vypsani: 2000 */
v = compute_sum("1000 1000", r, 5);
if (v) {
    printf("%s\n", r);
} 
else {
    printf("vysledek je moc velky\n");
}


/* nasledujici vede k vypsani: vysledek je moc velky   */
v = compute_sum("1234567891011134 1201341341", r, 5);
if (v) {
    printf("%s\n", r);
} 
else {
    printf("vysledek je moc velky\n");
}


/* vede k vypsani: vysledek je moc velky */
v = compute_sum("9000 1000", r, 5);
if (v) {
    printf("%s\n", r);
} 
else {
    printf("vysledek je moc velky\n");
}