Массив значения типа double

Рейтинг: 0Ответов: 1Опубликовано: 10.04.2015

Здравствуйте, мне нужно создать 2 восьми элементных массива значения типа double, в 1 массив я ввожу 8 значений, программа должна накапливать в элементах второго массива суммы первого с нарастающим итогом. Например,

1  2  3  4  5  6  7  8   (в первый массив ввожу восемь значении)
1  3  6  10  15  21 28 36 (второй массив суммирует значения первого массива)

Программа работает с типом int, но не с double, c типом double программа выдает ошибку "Прекращена работа программы".

Вот код:

#include <stdio.h>
#define eight 8
int main ()
{
    setlocale(0,"");

    int  one,two,sum;
    int  array_one[eight],array_two[eight];

    printf ("Массивы:\n");
    for (one = 0; one < eight; one++)
        scanf("%d", &array_one[one]);
    printf ("\n");

    printf ("*****************\n");

    for (one = 0; one < eight; one++)
        printf("%d ", array_one[one]);
    printf ("\n");
    for (one = 0,sum = 0,two = 0; one < eight; one++)
    {
        sum +=array_one[one];
        array_two[two] = two + sum;
        printf ("%d ",array_two[two]);
    }

    return 0;
}

Вот код с типом double:

#include <stdio.h>
#define eight 8
int main ()
{
    setlocale(0,"");

    double  one,two,sum;
    double  array_one[eight],array_two[eight];

    printf ("Массивы:\n");
    for (one = 0; one < eight; one++)
        scanf("%lf", &array_one[one]);
    printf ("\n");

    printf ("*****************\n");

    for (one = 0; one < eight; one++)
        printf("%f ", array_one[one]);
    printf ("\n");
    for (one = 0,sum = 0,two = 0; one < eight; one++)
    {
        sum +=array_one[one];
        array_two[two] = two + sum;
        printf ("%f ",array_two[two]);
    }

    return 0;
}

Ответы

▲ 1Принят

Не буду останавливаться на самом коде, отвечу сразу на вопрос. Эта строчка неправильная:

double one, two, sum;

Тут смешано несколько разных переменных. one и two - переменные которые используются для доступа (индексации) к массиву, потому лучше использовать:

int one, two;

Но лучше так:

size_t one, two;

А вот double sum оставить, необходимо именно сумма для чисел с двойной точностью (double).