2016-06-20 3 views
0

Мне нужно написать функцию, чтобы найти сумму чисел из строки. Сумма должна быть распечатана для каждой строки в основном. Я использую strtok и токен, чтобы отключить запятую. Затем atof преобразует строку в double. Я очень тяжело, чтобы соединить эти штуки.Сумма строки Char

#include <stdio.h> 
int main(void) { 
    int i; 
    double sum=0; 

    char* str[] = {"12, 34, 56, 78", 
     "82.16, 41.296", 
     "2, -3, 5, -7, 11, -13, 17, -19", 
     "9.00009, 90.0009, 900.009, 9000.09, 90000.9"}; 

    for(i=0;i<(sizeof(str)/sizeof(*str));i++) 
    { 
     //print// 
     printf("sum = %3.6f \n",sum); 
    } 
} 

double sum(char* s[]) 
{ 
    const char str[100]; 
    char *token; 
    char *del = ", "; 

    token = strtok(str, del); 

    while(token != NULL) 
    { 
     token = strtok(NULL, del); 
    } 

    double atof(const char *s 
    double n; 
    double sum=0; 
    for(n=0;n<str(s);n++) 
    { 
     sum = sum + s[n]; 
    } 
    return (sum); 
    } 
+3

"трудное время, чтобы соединить эти части Снегурочка" не вопрос. Просьба указать ** конкретные ** сведения о том, в чем проблема. – OldProgrammer

+0

Функция должна рассчитывать сумму каждой строки. например, для 12, 34, 56, 78 sum = 180.000000 –

+1

Ну, для начала, по крайней мере, вызывайте функцию 'sum'. И дальше оттуда. Если вам нужна помощь, вам нужно сказать нам более конкретно, что это вы не знаете, как делать или застрять. Не просто скажите нам, что вы хотите, расскажите нам, почему это вы не можете сделать. – kaylum

ответ

0

ideone.com/3umold - BLUEPIXY

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

double sum(const char s[]); 

int main(void) { 
    int i; 
    //double sum=0; 

    char* str[] = { 
     "12, 34, 56, 78", 
     "82.16, 41.296", 
     "2, -3, 5, -7, 11, -13, 17, -19", 
     "9.00009, 90.0009, 900.009, 9000.09, 90000.9" 
    }; 

    for(i = 0; i < sizeof(str)/sizeof(*str); i++){ 
     //print 
     printf("sum = %f \n", sum(str[i])); 
    } 

    return 0; 
} 

double sum(const char s[]){ 
    char str[100]; 
    char *token, *del = ", "; 
    double sum = 0.0; 

    strcpy(str, s); 
    token = strtok(str, del); 

    while(token != NULL){ 
     sum += atof(token); 
     token = strtok(NULL, del); 
    } 
    return sum; 
} 
Смежные вопросы