У меня возникли проблемы с написанием программы на C для этого вопроса. Возможно, я неправильно читаю вопрос и делаю это неправильно. Может ли кто-нибудь помочь мне с этим, пожалуйста? Это они, как я пытаюсь сделать этоНапишите программу для поиска суммы положительных нечетных чисел и произведения положительных четных чисел, не превышающих или равных 30
#include<stdio.h>
void main(void)
{
int j, sum=0;
long int product=1;
for(j=1;j<=30;j=j+2)
{
sum=sum+j;
}
for(j=2;j<=30;j=j+2)
{
product=product*j;
}
printf("\nThe sum of positive odd numbers is: %d", sum);
printf("\nThe product of positive even numbers is: %d", product);
}
Выход я получаю:
The sum of positive odd numbers is: 225
The product of positive even numbers is: -1409286144
Я получаю часть продукт неправильно. Я пробовал использовать unsigned long int, long long, unsigned long long. Ничего не работает.
Вашего продукт перелив пределы вашего типа хранения. Попробуйте выполнить замену с 'long int' на более крупный тип хранилища. – StarPilot
2 * 4 * 8 ... * 28 дает примерно 30-значное число. Для этого вам очень нужен тип с плавающей точкой. Для чего это стоит: сумма N последовательных нечетных чисел (начиная с 1) дает квадрат N, поэтому вы можете вычислить эту часть немного быстрее и легче. –
Используйте modulo вместо того, чтобы сконденсировать ваш код до 1 цикла. pseudocode- for (j = 1, j <= 30, j ++) Если j% 2 = 0, то product = product * j, else sum = sum + j –