2016-06-20 9 views
0

Ich muss eine Funktion schreiben, um die Summe der Zahlen aus einer Zeichenfolge zu finden. Die Summe muss für jede Zeile in main ausgedruckt werden. Ich benutze Strtok und Token, um Kommas zu entfernen. Dann atof zum Umwandeln von String in Double. Ich habe es schwer, diese Teile miteinander zu verbinden.Summe der Char-Zeichenfolge

#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

"harte Zeit, diese Stücke togather zu verbinden" Frage nicht. Bitte geben Sie ** spezifische ** Details zu dem Problem an. – OldProgrammer

+0

Die Funktion sollte die Summe jeder Zeile zählen. zum Beispiel Für 12, 34, 56, 78 sum = 180.000000 –

+1

Nun, für den Anfang zumindest rufen Sie die 'sum'-Funktion. Und dann weiter von dort. Wenn Sie Hilfe brauchen, dann müssen Sie uns genauer sagen, was Sie nicht wissen, wie man es macht oder festhält. Erzähl uns nicht nur, was du machen willst, sag uns, warum du es nicht kannst. – kaylum

Antwort

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; 
}