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

Итерационные циклы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
welzor
Сообщений: n/a
08.11.2012, 02:22     Итерационные циклы #1
Доброй ночи
Помогите найти ошибки, скорее всего в функциях.
общее задание:
Кликните здесь для просмотра всего текста
ЛАБОРАТОРНАЯ РАБОТА № 3
РЕАЛИЗАЦИЯ ИТЕРАЦИОННЫХ ЦИКЛОВ СРЕДСТВАМИ ЯЗЫКА С++
Цель работы: Составление алгоритмов и написание многомодульных программ с итерационными циклами

Общие указания к заданиям лабораторной работы.

По номеру Вашего варианта выбрать задачу, решаемую в этой лабораторной работе, и выполнить для нее следующие задания.
Алгоритм решения индивидуальной задачи разделить на две функции:
- функцию, которая организует вычисления по формуле, определенной в задаче соответствующего задания.
Алгоритмы этих функций разработайте в трех вариантах:
• с использованием цикла do....while;
• с использованием цикла while;
• с использованием цикла for.
Для каждого варианта составить свою функцию и дать им разные имена. Функции оформить как функции со списком параметров, передаваемых по значению. Результаты вернуть через возвращаемое значение и через параметр по ссылке. Каждую функцию записать в свой файл одного проекта одного решения (solution). Откомпилировать каждый файл отдельно, устранив все ошибки на этом этапе проектирования.
- разработать функцию main(), алгоритм которой обеспечит ввод исходных данных с клавиатуры, вызов функции вычисления и вывод результатов на экран. Алгоритм этой функции должен содержать сообщение–меню, предлагающее пользователю вашей программы сделать выбор для решения Вашей программы одним из трех циклов языка С++. В меню предусмотрите выход из программы по требованию пользователя. В алгоритме main() разработайте организацию выбора нужного решения с помощью переключателя switch. Текст функции main() записать в свой файл и включить в проекта Вашего решения. Откомпилировать функцию в рамках проекта и устранить возможные ошибки компиляции.
- выполнить проект решения, добившись одинаковых результатов для трех вариантов реализации Вашей индивидуальной задачи на таких отладочных данных, которые позволяют судить о правильности ее решения.


Мое задание:
Кликните здесь для просмотра всего текста


мэйн
Кликните здесь для просмотра всего текста
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
42
43
44
#include <iostream>
#include <conio.h>
 
using namespace std;
double summ_for(double, float&, float&);
double summ_while(double, float&, float&);
double summ_dowhile(double , float&, float&);
 
void main()
{
float E, n, summ, k;
do
{
cout«"Vvedite E "«endl;
cin»E;
}
while (1 >= E > 0);
do
{
cout«"Vvedite n "«endl;
cin»n;
}while (n >= 2);
int q;
cout«"Sposob resheniya?"«endl;
cout«"1 - For"«endl;
cout«"2 - Do while"«endl;
cout«"3 - While"«endl;
cin»q;
switch(q)
{
case 1:
k=summ_for(E,n,summ);
break;
case 2:
k=summ_dowhile(E,n,summ);
break;
case 3:
k=summ_while(E,n,summ);
break;
default:
return;
cout«"Otvet: "«k«endl;
}
}


функция
Кликните здесь для просмотра всего текста
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 <math.h>
 
double summ_for(double eps, float &n, float &firstin)
{
 
double slag, slagnext, summ = 0, fact = 120;
slag = 1. / - 1 / 6.;
slagnext = ( 1. + 1 / 120.);
int i = 3;
for (; abs(slag - slagnext) < eps, i++;)
{
summ = summ * slag;
slag = slagnext;
fact = fact * (2 * i + 1);
if (i % 2)
slagnext = 1. + 1/fact;
else
slagnext = 1. - 1/fact;
}
i = n;
firstin = slag;
return summ;
}


Ввожу переменные, выбираю цикл, и дальше ничего...
Кликните здесь для просмотра всего текста


Буду очень благодарен, заранее спасибо за любую помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.11.2012, 02:46     Итерационные циклы #2
C++
1
while (1 >= E && E > 0);
И вот это зачем?
C++
1
i = n;
welzor
Сообщений: n/a
08.11.2012, 02:48     Итерационные циклы #3
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
while (1 >= E && E > 0);
Тоже самое
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.11.2012, 10:08     Итерационные циклы #4
Цитата Сообщение от welzor Посмотреть сообщение
Тоже самое
Я не написл, что это решение проблемы. Просто ошибка. Код сами писали?

Добавлено через 6 минут
Условия нужно так задать:
C++
1
2
3
while (E > 1  || E < 0);
...
while (n < 2);
Тоже не решение проблемы, но по заданию.

Добавлено через 6 часов 38 минут
По моему, так:
Кликните здесь для просмотра всего текста
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
42
43
44
45
#include <iostream>
#include <cmath>
using namespace std;
 
double f(double e, int &n)
{
 int f;
 double an, an_;
 
 for (n = 1; ; n++)
 {
     if (n == 1) 
     {
        f = 6;
        an_ = 1 + (pow((-1.0), n) / f);
     }
     else
     {
         f = f * n * 2 * ((n * 2) + 1);
         an = 1 + (pow((-1.0), n) / f);
         if ((an - an_) < e) break;
         else an_ = an;
     }
 }
 return an;
}
 
 
int main() 
{ 
 double e = 0;
 double a = 0;
 int n;
 
 do
    cin >> e;
 while ( e < 0 || e > 1);
 
 a = f(e, n);
 
 cout << "a = " << a << endl << "n = " << n << endl; 
 
system("pause");
return 0;
}
Yandex
Объявления
08.11.2012, 10:08     Итерационные циклы
Ответ Создать тему
Опции темы

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