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

Организовать цикл - C++

Восстановить пароль Регистрация
 
COOLxXxCOOL
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 5
25.09.2012, 22:38     Организовать цикл #1
Вот приболел, а на лабы нужно задание, сижу и не понимаю, что от меня хотят и как это делать.
http://f1.s.qip.ru/G1CCNmsq.png

Попытался написать что-то типо этого

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
// test_101.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <cmath>
 
int main(void)
{
    float s=0,s1=0,r=0;
    int k;
    for(int i=1;i<100000;i++)
    {
        s1=1;
        for(int k=1;k<i;k++)
        {
         s1=s1*(-1);     
         }
        r=r+(s1/i);
    printf("%f,|| %d\n",r,i);
    }
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
25.09.2012, 22:47     Организовать цикл #2
Тебе нужно при каждой итерации проверять разность s_old - s_new. Делать это до тех пор, пока их разность не станет меньше или равной точности.
COOLxXxCOOL
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 5
25.09.2012, 22:49  [ТС]     Организовать цикл #3
А можете хотяб примерно описать код, ибо учу С++ недельку.
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
25.09.2012, 23:06     Организовать цикл #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <math.h>
#include <iostream>
using namespace std;
int main() {
    double e = 1.0e-2;
    int k = 1;
    double s0 = 1.0;
    double s1 = 0.0;
    double sum = 0.0;
    do {
        sum += s0;
        ++k;
        s1 = s0;
        if (k%2 == 0)
            s0 = -1.0/(double)k;
        else
            s0 = 1.0/(double)k;
    } while (abs(s0-s1) < e);
    cout << "sum= " << sum << "\nk= " << (k-1) << endl;
    return 0;
}
COOLxXxCOOL
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 5
25.09.2012, 23:27  [ТС]     Организовать цикл #5
А это нормально, что я вижу вот это?
http://f1.s.qip.ru/G1CCNmsx.png
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
25.09.2012, 23:37     Организовать цикл #6
COOLxXxCOOL, вот рабочий код:
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    const double eps = 0.0001;      // Точность.
    int k = 1;              // Степень.
    double s_new = 1.0, s_old, sum = 0.0;
    do   // Повторять итерации*
    {
        sum += s_new;
        s_old = s_new;
        k++;
        s_new = pow((-1.0), (k - 1)) / k;
    }
    while (fabs(s_old - s_new) > eps);   // *пока выполняется условие (s_old - s_new) больше точности.
    // fabs - модуль числа.
    cout << sum << endl;        // Вывод результата.
    system("pause");            // Задержка экрана.
 
    return 0;
}
Добавлено через 2 минуты
Суть в том, что мы на каждой итерации прибавляем к суме ряда новое значение s_new. Так как с каждой новой итерацией точность увеличивается, то и результат соответственно будет ближе к точному.
COOLxXxCOOL
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 5
25.09.2012, 23:45  [ТС]     Организовать цикл #7
Цитата Сообщение от ReasonX7 Посмотреть сообщение
COOLxXxCOOL, вот рабочий код:
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    const double eps = 0.0001;      // Точность.
    int k = 1;              // Степень.
    double s_new = 1.0, s_old, sum = 0.0;
    do   // Повторять итерации*
    {
        sum += s_new;
        s_old = s_new;
        k++;
        s_new = pow((-1.0), (k - 1)) / k;
    }
    while (fabs(s_old - s_new) > eps);   // *пока выполняется условие (s_old - s_new) больше точности.
    // fabs - модуль числа.
    cout << sum << endl;        // Вывод результата.
    system("pause");            // Задержка экрана.
 
    return 0;
}
Добавлено через 2 минуты
Суть в том, что мы на каждой итерации прибавляем к суме ряда новое значение s_new. Так как с каждой новой итерацией точность увеличивается, то и результат соответственно будет ближе к точному.
Большое спасибо за подробный ответ. Теперь действительно понял, какой был дурак =)
Теперь можно рассказать другу еще, чтобы тоже не мучился. И пойти лечиться от простуды и спать.
Огромное спасибо еще раз.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2012, 23:46     Организовать цикл
Еще ссылки по теме:

C++ организовать цикл
Как организовать цикл здесь? C++
Организовать цикл do/while, который принимает целые числа с клавиатуры и вычитает их из 10000 C++

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

Или воспользуйтесь поиском по форуму:
ReasonX7
25.09.2012, 23:46     Организовать цикл
  #8

Не по теме:

COOLxXxCOOL, пожалуйста, сам в прошлом году мучился с подобными задачами на итерации.

Yandex
Объявления
25.09.2012, 23:46     Организовать цикл
Ответ Создать тему
Опции темы

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