evgeniy8705
@evgeniy8705
Повелитель вселенной

Не могу понять в чем ошибка(задача на С)?

В чем ошибка? указывает на
sum = sum + arr[i];
product = product * arr[i];
double arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

void array(arr) {
  int i;
double sum = 0, product = 1;
for (i = 0; i < strlen(arr); i++) {
sum = sum + arr[i];
product = product * arr[i];
}
printf("%f", sum);
printf("%f", product);
}


double arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
array(arr);
  • Вопрос задан
  • 2330 просмотров
Решения вопроса 1
EvgenijDv
@EvgenijDv
C/C++ programmer
1. укажите корректный тип параметра для функции, например void array(double* arr)
2. strlen - это функция для работы со строками и не подходит для double массивов, поэтому нужно добавить второй параметр в вызов функции - размер передаваемого массива.
void array(double *arr, int size) {
  int i;
double sum = 0, product = 1;
for (i = 0; i < size; i++) {
sum = sum + arr[i];
product = product * arr[i];
}
printf("%f", sum);
printf("%f", product);
}

int main() {
double arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
array(arr, sizeof(arr)/sizeof(arr[0]));
return 0;
}


P.S отредактировал ответ с учетом комментариев
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
В функции у вас arr типа int (если тип не указан, C считает, что это - int),
вы пытаетесь применить к int strlen, и, естественно, получаете ругань.

Правильно написать void array(double *arr,const size_t count) и передать в функцию еще и количество элементов в массиве.

Дальше вы передаете в функцию указатель на массив double, что тоже не здорово.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы