Форум программистов, компьютерный форум CyberForum.ru

Неправильно считается произведение, начиная с n=5 - C++

Восстановить пароль Регистрация
 
anna969
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
20.02.2014, 18:57     Неправильно считается произведение, начиная с n=5 #1
Составить программу вычисления и выдачи на печать суммы и произведения N элементов бесконечного числового ряда. Здесь и далее следует пользоваться операторами цикла for или while
y=1(-3)9(-27)81

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# include <stdio.h>
 
void main ()
 
{int n, i=1, y=1, k=0, x=0;
  printf ("n\ Vvedite N");
  scanf ("%d", &n);
 
  for (; n!=0 ; (i=i*3) )
  {
    k++ ;
    if(i<0)
      i=i*(-1);
    if (k%2==0)
      i=i*(-1);
    y=y*i;
    n--;
  }
 
   printf ("%d", y);
 
   printf ("n\ Vvdetite N");
   scanf ("%d", &n);
   k=0;
   i=1;
 
 
   for (; n!=0 ; (i=i*3))
   {
     k++;
     if (i<0)
       i=i*(-1);
     if (k%2==0)
       i=i*(-1);
     x=x+i;
     n--;
   }
 
 
   printf("%d", x);
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
20.02.2014, 19:19     Неправильно считается произведение, начиная с n=5 #2
for (; n!=0 ; (i=i*3) )
{
y=y*i;
if(i<0)
i=i*(-1);
else
i=i*(-1);
n--;
}
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 2
20.02.2014, 19:30     Неправильно считается произведение, начиная с n=5 #3
А если это:

Цитата Сообщение от anna969 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
for (; n!=0 ; (i=i*3) )
  {
    k++ ;
    if(i<0)
      i=i*(-1);
    if (k%2==0)
      i=i*(-1);
    y=y*i;
    n--;
  }
и это:
Цитата Сообщение от anna969 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
for (; n!=0 ; (i=i*3))
   {
       k++;
       if (i<0)
         i=i*(-1);
     if (k%2==0)
         i=i*(-1);
     x=x+i;
     n--;
   }

заменить на это:

C++
1
2
3
4
5
6
7
int k = 1, y = 1;
 
for(int i = 0; i < n; i++)
{
     y = y1*k;
     k = -3*k;
}
и это:
C++
1
2
3
4
5
6
7
int k = 1, x = 0;
 
for(int i = 0; i < n; i++)
{
     x = x + k;
     k = -3*k;
}

По крайней мере отлаживать проще будет, а выполняют они то же самое:

1) В начале k=1;
2) Потом k=-3*1=-3;
3) Потом k=-3*(-3)=9;
4) Потом k=9*(-3)=-27;
...) И так далее.

Формируется тот же ряд.
anna969
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
20.02.2014, 19:38  [ТС]     Неправильно считается произведение, начиная с n=5 #4
Все равно при n=5 выдает -6487 (а должно быть 59049)
при отладке перед этим все нормально i=81 y=729, а ответ вот такой =\
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 2
20.02.2014, 19:42     Неправильно считается произведение, начиная с n=5 #5
Это в произведении или в сумме ряда?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
20.02.2014, 19:42     Неправильно считается произведение, начиная с n=5 #6
Использовать long, не?
anna969
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
20.02.2014, 19:42  [ТС]     Неправильно считается произведение, начиная с n=5 #7
В произведении
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
20.02.2014, 19:43     Неправильно считается произведение, начиная с n=5 #8
Цитата Сообщение от anna969 Посмотреть сообщение
int n, i=1, y=1, k=0, x=0;
C++
1
long long n, i=1, y=1, k=0, x=0;
anna969
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
20.02.2014, 19:43  [ТС]     Неправильно считается произведение, начиная с n=5 #9
На счет long - первым делом изменяла, думала переполнение идет, но ничего не поменялось
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,913
20.02.2014, 20:14     Неправильно считается произведение, начиная с n=5 #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main(void)
 {
  int n, x=1,y=1;
 
  printf ("Vvedite N \n");
  scanf ("%d", &n);
  n--;
  for (; n!=0 ;n--)
  {
    x=x*(-3);
    y=y*x;
  }
 
  printf("%d", y);
  return 0;
}
anna969
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
20.02.2014, 20:27  [ТС]     Неправильно считается произведение, начиная с n=5 #11
Попробовала все) А значение все то же выходит...)))
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,913
20.02.2014, 20:33     Неправильно считается произведение, начиная с n=5 #12
Цитата Сообщение от anna969 Посмотреть сообщение
Попробовала все) А значение все то же выходит...)))
Выводит 59049,а сколько должно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2014, 20:51     Неправильно считается произведение, начиная с n=5
Еще ссылки по теме:

C++ Двумерный массив. Неправильно считается сумма. Как исправить?
C++ Метод золотого сечения считается неправильно
C++ Арифметическое выражение считается неправильно

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
anna969
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
20.02.2014, 20:51  [ТС]     Неправильно считается произведение, начиная с n=5 #13
Попробовала в dev c получилось, а в борланде все -6487))

А на то, что я написала ругается))

Добавлено через 9 минут
Поменяла void main() на int main(void) и мое заработало, но только в devc++
Yandex
Объявления
20.02.2014, 20:51     Неправильно считается произведение, начиная с n=5
Ответ Создать тему
Опции темы

Текущее время: 16:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru