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

почему когда вводишь пунк 2 не появляется решение - C++

Восстановить пароль Регистрация
 
 
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 18:52     почему когда вводишь пунк 2 не появляется решение #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
double calc(int n, double sum, int a, int b, double p, double f)
{
    if(n == 0)
        return sum;
    else
    {
        sum += p / (f * (1.0 + (1.0 * a) * a + (1.0 * b) * b));
 
        p *= 2;
        f *= n + 1;
 
        int a_ = a, b_ = b;
        a = 3 * b_ + 2 * a_;
        b = 2 * a_ + b_;
 
        sum = calc(n - 1, sum, a, b, p, f);
        return sum;
    }
}
 
int cikl()
{
    const int SIZE=10;
    int a[SIZE+1]={0,1}, b[SIZE+1]={0,1};
    unsigned int factorial[SIZE+1]={0,1};
    unsigned int n, i;
    double sum=0;
    for (i=2; i<=SIZE; i++)
    {
        a[i] = 3*b[i-1] + 2*a[i-1];
        b[i] = 2*a[i-1] + b[i-1];
        factorial[i] = i*factorial[i-1];
    }
    std::wcout << L"введите n : ";
    std::wcin >> n;
    for (i=1; i<=n; i++)
        sum = sum + double(pow(2.0, (double)i)) / ((1 + pow(a[i], 2.0)+pow(b[i],(double)2)) * factorial[i]);
    std::wcout << sum << std::endl;
    system("pause");
    return 0;
}
int vvod()
{
    int n;
    cout << "Введите n : ";
    cin >> n;
    return n;
}
void zapis(int n, double sum, int a, int b, double p, double f)
{
    //записываем в файл
    ofstream out("result.txt");
    out << calc(n, sum, a, b, p, f);
    out.close();
}
double file(int n, double sum, int a, int b, double p, double f)
{ 
    //читаем из файла
    ifstream in("result.txt");
    double result;
    in >> result;
    in.close();
    cout << result;
cout << calc(n, sum, a, b, p, f) << endl << endl;;
return(0);
}
int About()
{
printf("\n ");
printf("\n ");
printf("\n ");
printf(" \n================================================================================\n"
 "\t  Зачётная работа\n"
 "\tВариант 10\n"
"\tВыполнил студент группы ИНБc-11 Огибалов дмитрий\n");
printf(" \n================================================================================\n");
return(0);
}
int help()
{
    printf("\nЗадание №10\n\n");
    printf("Даны числа a1=b1=1 и натуральное n.\n"); 
    printf("В последовательности ak=3*bk-1+2*ak-1; bk=2*ak-1+bk-1,k=2,3…\n"); 
    printf("Найти:  сумму 2^k/(1+ak^2+bk^2)*k!\n"); 
    return 1;
}
int main()
{
    setlocale(LC_ALL,"Russian");
    int ch;
    int n;
    int a = 1;
    int b = 1;
    int z=0;
    double p = 2.0, f = 1.0;
    double sum = 0;
    bool flag=0,flag1=0;
        bool flug=0;
           do
        {
system("cls");
printf("\t*********************МЕНЮ**************************\n");
printf("1. Ввод\n");
printf("2. Решение\n");
printf("3. Цикл\n");
printf("4. About \n");
printf("5. Help\n");
printf("6. Выход\n");
printf("\n");
printf("Нажмите клавишу для вызова пункта меню\n");
ch=caas();
switch(ch)
{
case 1://если 1
setlocale(LC_ALL,"Russian");
    system("cls");
    printf("Нажмите 1 для ввода данных с клавиатуры.\n");
    printf("Нажмите 2 для ввода данных их файла.\n");
    ch=caas();
    switch(ch){
case 1:
     system("cls");
        n=vvod();
        flag=1;
        break;
case 2:
     system("cls");
        file(n, sum, a, b, p, f);
        flag1=1;
        break;
    }
break;
case 2:
system("cls");
if (flag==1||flag1==1) //если введен данные пункт 1
{
n = calc(n,sum,a,b,p,f);
 
printf("\n Решение выполняется");
flug=1;
    }
else 
    printf("\n Ввод данных не произведен\n");
    printf("\n Нажмите 1 для записи данных в файл\n");
    ch=caas();                
switch(ch){
case 1: zapis(n,sum,a,b,p,f);
printf("\nНажмите клавишу для возвращения в меню");
break;
    }
 _getch();
break;
case 3: 
                    
if ((flag==1)||(flug==1||flag1==1))//если введен данные пункт 1
{
 cikl();
 }
else    
printf("\n Ввод данных не произведен или решение не выполнено\n");
printf("\nНажмите клавишу для возвращения в меню");
_getch();
system("cls");
break;
case 4:
About();
printf("\nНажмите клавишу для возвращения в меню");
_getch();
system("cls");
break;
case 5:
help();
printf("\nНажмите клавишу для возвращения в меню");
_getch();
system("cls");
break;
default:
break;
 }
    }
 while(ch!=6);
   printf("\nPress any key to continue\n");
_getch();
 return 0;  
}
помогите исправить

Добавлено через 19 секунд
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 18:52     почему когда вводишь пунк 2 не появляется решение
Посмотрите здесь:

Вводишь число от 1 до 7 и выводит день недели.Вводишь 0 выход. C++
C++ Решение квадратных уравнений, почему не работает?
есть указатель на конец файла и он самоинициализируется, но не в месте объявления, а когда учавствует в условии. Почему так? C++
почему не работает условие когда х=3 C++
Почему появляется предупреждение Variable '...' set but not used C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
12.06.2013, 19:10     почему когда вводишь пунк 2 не появляется решение #2
Не вникая в то, что должно делаться:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cmath>
#include <conio.h>
 
double calc(int n, double sum, int a, int b, double p, double f)
{
    if(n == 0)
        return sum;
    else
    {
        sum += p / (f * (1.0 + (1.0 * a) * a + (1.0 * b) * b));
 
        p *= 2;
        f *= n + 1;
 
        int a_ = a, b_ = b;
        a = 3 * b_ + 2 * a_;
        b = 2 * a_ + b_;
 
        sum = calc(n - 1, sum, a, b, p, f);
        return sum;
    }
}
 
int cikl()
{
    const int SIZE=10;
    int a[SIZE+1]={0,1}, b[SIZE+1]={0,1};
    unsigned int factorial[SIZE+1]={0,1};
    unsigned int n, i;
    double sum=0;
    for (i=2; i<=SIZE; i++)
    {
        a[i] = 3*b[i-1] + 2*a[i-1];
        b[i] = 2*a[i-1] + b[i-1];
        factorial[i] = i*factorial[i-1];
    }
    std::cout << "введите n : ";
    std::cin >> n;
    for (i=1; i<=n; i++)
        sum = sum + double(pow(2.0, (double)i)) / ((1 + pow(a[i], 2.0)+pow(b[i],(double)2)) * factorial[i]);
    std::wcout << sum << std::endl;
    system("pause");
    return 0;
}
int vvod()
{
    int n;
    std::cout << "Введите n : ";
    std::cin >> n;
    return n;
}
void zapis(int n, double sum, int a, int b, double p, double f)
{
    //записываем в файл
    std::ofstream out("result.txt");
    out << calc(n, sum, a, b, p, f);
    out.close();
}
double file(int n, double sum, int a, int b, double p, double f)
{
    //читаем из файла
    std::ifstream in("result.txt");
    double result;
    in >> result;
    in.close();
    std::cout << result;
std::cout << calc(n, sum, a, b, p, f) << std::endl << std::endl;;
return(0);
}
int About()
{
printf("\n ");
printf("\n ");
printf("\n ");
printf(" \n================================================================================\n"
 "\t  Зачётная работа\n"
 "\tВариант 10\n"
"\tВыполнил студент группы ИНБc-11 Огибалов дмитрий\n");
printf(" \n================================================================================\n");
return(0);
}
int help()
{
    printf("\nЗадание №10\n\n");
    printf("Даны числа a1=b1=1 и натуральное n.\n");
    printf("В последовательности ak=3*bk-1+2*ak-1; bk=2*ak-1+bk-1,k=2,3…\n");
    printf("Найти:  сумму 2^k/(1+ak^2+bk^2)*k!\n");
    return 1;
}
int main()
{
    setlocale(LC_ALL,"");
    char ch;
    int n;
    int a = 1;
    int b = 1;
    int z=0;
    double p = 2.0, f = 1.0;
    double sum = 0;
    bool flag=0,flag1=0;
        bool flug=0;
           do
        {
system("cls");
printf("\t*********************МЕНЮ**************************\n");
printf("1. Ввод\n");
printf("2. Решение\n");
printf("3. Цикл\n");
printf("4. About \n");
printf("5. Help\n");
printf("6. Выход\n");
printf("\n");
printf("Нажмите клавишу для вызова пункта меню\n");
ch=_getch();
switch(ch - '0')
{
case 1://если 1
setlocale(LC_ALL,"Russian");
    system("cls");
    printf("Нажмите 1 для ввода данных с клавиатуры.\n");
    printf("Нажмите 2 для ввода данных их файла.\n");
    ch=_getch();
    switch(ch-'0'){
case 1:
     system("cls");
        n=vvod();
        flag=1;
        break;
case 2:
     system("cls");
        file(n, sum, a, b, p, f);
        flag1=1;
        break;
    }
break;
case 2:
system("cls");
if (flag==1||flag1==1) //если введен данные пункт 1
{
n = calc(n,sum,a,b,p,f);
 
printf("\n Решение выполняется");
flug=1;
    }
else
    printf("\n Ввод данных не произведен\n");
    printf("\n Нажмите 1 для записи данных в файл\n");
    ch=_getch();
switch(ch-'0'){
case 1: zapis(n,sum,a,b,p,f);
printf("\nНажмите клавишу для возвращения в меню");
break;
    }
 _getch();
break;
case 3:
 
if ((flag==1)||(flug==1||flag1==1))//если введен данные пункт 1
{
 cikl();
 }
else
printf("\n Ввод данных не произведен или решение не выполнено\n");
printf("\nНажмите клавишу для возвращения в меню");
_getch();
system("cls");
break;
case 4:
About();
printf("\nНажмите клавишу для возвращения в меню");
_getch();
system("cls");
break;
case 5:
help();
printf("\nНажмите клавишу для возвращения в меню");
_getch();
system("cls");
break;
default:
break;
 }
    }
 while(ch!='6');
   printf("\nPress any key to continue\n");
_getch();
 return 0;
}
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 19:15  [ТС]     почему когда вводишь пунк 2 не появляется решение #3
он все равно не показывает на экран результат

Добавлено через 52 секунды
C++
1
2
3
4
5
6
7
8
9
10
case 2:
system("cls");
if (flag==1||flag1==1) //если введен данные пункт 1
{
n = calc(n,sum,a,b,p,f);
 
printf("\n Решение выполняется");
flug=1;
    }
else
где то тут ошибка

Добавлено через 1 минуту
мне так кажется потому что когда нажимаешь пункт два то он просто выводит принтеф и все а результата нет
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
12.06.2013, 19:15     почему когда вводишь пунк 2 не появляется решение #4
easyfrag, а вы учитываете, что n тут изначально не инициализирована при вызове функции?
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 19:18  [ТС]     почему когда вводишь пунк 2 не появляется решение #5
тоесть ее приравнять к 0

Добавлено через 29 секунд
или что мне сделать

Добавлено через 22 секунды
просто я понять не могу
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
12.06.2013, 19:19     почему когда вводишь пунк 2 не появляется решение #6
easyfrag, если честно, мне не хочется вникать в суть вашей программы т.к. написана она криво косо и логику может понять лишь сам автор.

Посмотрите сами, какое оно должно быть. Если хотите, чтобы при первом проходе вернуло сумму, то да, если нет - любое другое число.
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 19:22  [ТС]     почему когда вводишь пунк 2 не появляется решение #7
мне надо чтобы когда я ввел данные с клавиатуры в первом пункте потом когда я выбираю второй пункт он мне выводит сумму должен а он мне это не делает
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
12.06.2013, 19:30     почему когда вводишь пунк 2 не появляется решение #8
C++
1
n = calc(1,sum,a,b,p,f);
пробуйте

Добавлено через 20 секунд
137 строка
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 20:47  [ТС]     почему когда вводишь пунк 2 не появляется решение #9
нето написал как вы написали у меня когда я записываю в фаил то в фаиле сумма есть

Добавлено через 4 минуты
если я щас написал 1 как вы сказали то в файле результат не записался

Добавлено через 1 час 9 минут
блин уже всяко пробовал пожалуйста помогите
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.06.2013, 20:52     почему когда вводишь пунк 2 не появляется решение #10
C++
1
ch = caas();
caas() - это что?
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 20:57  [ТС]     почему когда вводишь пунк 2 не появляется решение #11
защита от некорретного ввода вводил
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.06.2013, 21:03     почему когда вводишь пунк 2 не появляется решение #12
С case, switch и скобками разберитесь. Зачем вам в одном switch два case 1?
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 21:08  [ТС]     почему когда вводишь пунк 2 не появляется решение #13
чтобы вывести принтеф потом ввести n а следующий касе чтобы записать из файла вывести результат это первый пункт а второй пункт чтобы уже показать решение и вот у емня как раз во втором пункте ошибка какая то
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.06.2013, 21:12     почему когда вводишь пунк 2 не появляется решение #14
После case 1 сразу case 3. Как понимать?

Добавлено через 1 минуту
Цитата Сообщение от easyfrag Посмотреть сообщение
чтобы вывести принтеф потом ввести n а следующий касе чтобы записать из файла вывести результат это первый пункт а второй пункт чтобы уже показать решение и вот у емня как раз во втором пункте ошибка какая то
Напишите нормально свои switch, у вас там непоятно что, а разбираться с этим желания нет.
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 21:23  [ТС]     почему когда вводишь пунк 2 не появляется решение #15
дак он мне записывает в файл результат а дальше выводит в меню чтобы выбрать пункт

Добавлено через 9 минут
тут не в касе дело
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.06.2013, 21:35     почему когда вводишь пунк 2 не появляется решение #16
Проблема в чём? Что на экран результат не выводит?
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 21:37  [ТС]     почему когда вводишь пунк 2 не появляется решение #17
да когда выбираешь пункт 2 то не выводит сумму

Добавлено через 24 секунды
остальное все работает
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.06.2013, 21:39     почему когда вводишь пунк 2 не появляется решение #18
Цитата Сообщение от easyfrag Посмотреть сообщение
да когда выбираешь пункт 2 то не выводит сумму
Если вы вывод не написали, то как?
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 21:44  [ТС]     почему когда вводишь пунк 2 не появляется решение #19
тоесть что написать надо там

Добавлено через 2 минуты
у меня же в функий calk там же сумма посчитана и я когда выбираю 2 пункт он мне должен же посчитать эту сумму но при этом же в 1 пункте ввожу данные
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 21:46     почему когда вводишь пунк 2 не появляется решение
Еще ссылки по теме:

C++ Почему появляется предупреждение о переводе типов?
Почему когда в скобках я пишу int ошибка ? C++
C++ почему когда ты ввел 6, не выдалась фраза что можно вводить только 1, 2 или 3

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.06.2013, 21:46     почему когда вводишь пунк 2 не появляется решение #20
Цитата Сообщение от easyfrag Посмотреть сообщение
тоесть что написать надо там
Что нужно вывести, вывод того и напишите.

Добавлено через 1 минуту
Здесь нужен вывод?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 
...
case 2:
    system("cls");
    if (flag == 1 || flag1 == 1) //если введен данные пункт 1
    {
        n = calc(n,sum,a,b,p,f);
 
        printf("\n Решение выполняется");
        flug = 1;
    }
    else printf("\n Ввод данных не произведен\n");
...
Yandex
Объявления
12.06.2013, 21:46     почему когда вводишь пунк 2 не появляется решение
Ответ Создать тему
Опции темы

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