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

проверка кода на правильность - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Васус
1 / 1 / 0
Регистрация: 09.10.2011
Сообщений: 82
17.10.2011, 20:28     проверка кода на правильность #1
Используя оператор цикла while с условием и постусловием, решить следующие задачу: найти сумму ряда с точностью е = 10-4, общий член которого
An=1/((3n-2)(3n+1)). Проверьте пожалуйста на правильность код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream.h>
#include<conio.h>
#include<math.h>
 int main()
{   clrscr();
 
    double e=0.0001;
    double sum, an;
    int n=1;
    do
{
 an=1;
    for (int i=1; i<=n; i++)
      { an*=(1/(((3*i-2)*(3*i-1))));
       }
       sum+=an;
       ++n;
  }
       while (an>=e);
       cout<<"sum="<<sum<<endl;
       getch();
       return 0;
              }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
17.10.2011, 20:32     проверка кода на правильность #2
Сразу же могу сказать, что данное выражение будет неточным, так как у вас выполняется целочисленная арифметика, когда при делении одного целого числа на другое дробная часть отбрасывается.

C++
1
 an*=(1/(((3*i-2)*(3*i-1))));
Поэтому вам его нужно по крайней мере переписать как

C++
1
 an*=(1.0/(((3*i-2)*(3*i-1))));
Васус
1 / 1 / 0
Регистрация: 09.10.2011
Сообщений: 82
17.10.2011, 20:42  [ТС]     проверка кода на правильность #3
Спасибо. Исправил. Программа выполняет то, ради чего она была написана?
Сыроежка
Заблокирован
17.10.2011, 20:51     проверка кода на правильность #4
Цитата Сообщение от Васус Посмотреть сообщение
Спасибо. Исправил. Программа выполняет то, ради чего она была написана?
Я не вижу инициализации переменной sum. Наверное она должна быть инициализирована 0?
Васус
1 / 1 / 0
Регистрация: 09.10.2011
Сообщений: 82
17.10.2011, 20:55  [ТС]     проверка кода на правильность #5
А зачем?
Сыроежка
Заблокирован
17.10.2011, 21:06     проверка кода на правильность #6
Цитата Сообщение от Васус Посмотреть сообщение
А зачем?
У вас есть предложение в программе

C++
1
sum+=an;
Но так как sum не была инициализирована, то в памяти, которая ей выделена, может храниться всякий "мусор", который остался от предыдущего выполнения какой-нибудь другой программы.
Васус
1 / 1 / 0
Регистрация: 09.10.2011
Сообщений: 82
17.10.2011, 21:16  [ТС]     проверка кода на правильность #7
Инициализировал. Изменился ответ.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 21:19     проверка кода на правильность
Еще ссылки по теме:

C++ Проверка на правильность кода
Проверьте правильность кода C++
Правильность кода C++

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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
17.10.2011, 21:19     проверка кода на правильность #8
Цитата Сообщение от Васус Посмотреть сообщение
Инициализировал. Изменился ответ.
Я вот только этого не понимаю. Если вы ищите сумму ряда, то почему вы вычисляете произведение?

C++
1
2
3
4
an=1;
for (int i=1; i<=n; i++)
{ an*=(1/(((3*i-2)*(3*i-1))));
}
Yandex
Объявления
17.10.2011, 21:19     проверка кода на правильность
Ответ Создать тему
Опции темы

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