Посчитать произведение четных чисел
Задача: Посчитать произведение четных чисел, не могу понять почему не работает код:
#include <ctime>
#include <stdlib.h>
#include <stdio.h>
#include <corecrt_math.h>
#include <time.h>
int main(){
const int N = 20;
int arr[N];
//Заполнение случайными числами
srand(time(0));
for (int i = 0; i < N; i++)
{
arr[i] = rand() % 101 - 50; //[-50;50]
printf_s("arr[%d] = %d\n", i + 1, arr[i]);
}
//Обработка массива-произведение четных чисел массива
int dob = 1;
for (int i = 0; i < N; i++)
{
if (arr[i] % 2 == 0);
{
printf("%d",arr[i]);
dob = dob * arr[i];
}
}
printf("\ndob = %d\n", dob);
return 0;
}
Ответы (1 шт):
Автор решения: Dafter
→ Ссылка
Ваша главная ошибка находится в этой строчке: if (arr[i] % 2 == 0); а конкретнее в ; которой там определенно быть не должно, если ее убрать, код будет работать.
Однако естественно это не все ошибки, которые вы допустили:
- Вы импортируете библиотеки, которые вам не нужны
- При импорте вы пишите
<название.h>, хотя для этих библиотек такой необходимости нет - При диапазоне чисел
[-50;50]вы используетеint, в котором всего 4 байта, чего практически всегда не хватает - Нет обработки случая с
0, а она нужна т.к.0 % 2 == 0вернетtrue, хотя0обычно не учитывают как четное
Я поправил эти моменты и код вышел таким:
#include <ctime>
#include <cstdlib>
#include <cstdio>
int main() {
const int N = 20;
int arr[N];
// Заполнение случайными числами
srand(time(0));
for (int i = 0; i < N; i++) {
arr[i] = rand() % 101 - 50; //[-50;50]
printf_s("arr[%d] = %d\n", i + 1, arr[i]);
}
// Обработка массива - произведение четных чисел массива
long long dob = 1;
for (int i = 0; i < N; i++) {
if (arr[i] % 2 == 0 && arr[i] != 0) {
printf("%d ", arr[i]);
dob = dob * arr[i];
}
}
printf("\ndob = %lld\n", dob);
return 0;
}
P.S Обработку массива можно чуток переписать, чтоб было читабельнее. А именно вместо этого:
for (int i = 0; i < N; i++) {
if (arr[i] % 2 == 0 && arr[i] != 0) {
printf("%d ", arr[i]);
dob = dob * arr[i];
}
}
Написать так:
for (int i : arr) {
if (i % 2 == 0 && i != 0) {
printf("%d ", i);
dob = dob * i;
}
}