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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
#1

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

12.06.2013, 18:52. Просмотров 808. Ответов 27
Метки нет (Все метки)

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 не появляется решение
Посмотрите здесь:

Когда вводишь не числовое значение — программа зацикливается на нуле - C++
Есть у меня считалка налогов. Проблема в том, что когда вводишь не числовое значение - программа зацикливается на нуле, какое условие мне...

Вводишь число от 1 до 7 и выводит день недели.Вводишь 0 выход. - C++
Требуется помощь в простенькой программе на С++. Вводишь число от 1 до 7 и выводит день недели.Вводишь 0 выход. Помогите...

Почему появляется предупреждение Variable '...' set but not used - C++
Здравствуйте. Возник вопрос, почему при компиляции данного кода #include &lt;iostream&gt; int main( int argc, char** argv ) { int...

Почему появляется предупреждение о переводе типов? - C++
Здравствуйте, когда я писал лабу у меня возник один вопрос. В этом коде: float x,y; cin&lt;&lt;x; x&gt;2 ? y=x*x-3+2.5*x*x*x : x&lt;-1 ?...

почему не работает условие когда х=3 - C++
#include &lt;iostream.h&gt; #include &lt;math.h&gt; int main() { double z11,x,p=0.85,q=2.15; cout&lt;&lt;&quot;Vvedi x: &quot;; cin&gt;&gt;x; ...

Почему когда в скобках я пишу int ошибка ? - C++
Сделал правильно,но не понимаю одну вещь,где я выделил. #include &lt;iostream&gt; int func(int); int main() { ...

Почему в итоге выдает ноль, когда возвращаем массив из функции? - C++
Идея такая, есть массив (Alphabet), как ни странно отвечает за наши символы, вводимые с клавиатуры, за которые отвечает массив Source, а...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7005 / 4176 / 595
Регистрация: 29.11.2010
Сообщений: 11,083
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
Модератор
Эксперт CЭксперт С++
7005 / 4176 / 595
Регистрация: 29.11.2010
Сообщений: 11,083
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
Модератор
Эксперт CЭксперт С++
7005 / 4176 / 595
Регистрация: 29.11.2010
Сообщений: 11,083
12.06.2013, 19:19     почему когда вводишь пунк 2 не появляется решение #6
easyfrag, если честно, мне не хочется вникать в суть вашей программы т.к. написана она криво косо и логику может понять лишь сам автор.

Посмотрите сами, какое оно должно быть. Если хотите, чтобы при первом проходе вернуло сумму, то да, если нет - любое другое число.
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 19:22  [ТС]     почему когда вводишь пунк 2 не появляется решение #7
мне надо чтобы когда я ввел данные с клавиатуры в первом пункте потом когда я выбираю второй пункт он мне выводит сумму должен а он мне это не делает
MrGluck
Модератор
Эксперт CЭксперт С++
7005 / 4176 / 595
Регистрация: 29.11.2010
Сообщений: 11,083
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
5416 / 4812 / 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
5416 / 4812 / 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
5416 / 4812 / 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
5416 / 4812 / 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
5416 / 4812 / 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 не появляется решение
Еще ссылки по теме:

почему когда ты ввел 6, не выдалась фраза что можно вводить только 1, 2 или 3 - C++
почему когда ты ввел 6, не выдалась фраза что можно вводить только 1, 2 или 3

Почему, когда записываю в бинарный файл, в самом файле оказываются непонятные символы? - C++
почему, когда записываю в бинарный файл, в самом файле непонятные символы? Или так должно быть? ofstream file; file.open(&quot;binary.bin&quot;,...

есть указатель на конец файла и он самоинициализируется, но не в месте объявления, а когда учавствует в условии. Почему так? - C++
Сабж, мистика какая-то. Вот я так работаю #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iterator&gt; using namespace std; ...

Как правильно создать условие, в зависимости от слова, которое вводишь в консоль - C++
Решил познать великий и могучий с++. Уже в 1ый день пошли косяки. Захотел начать с простой программы, которая в зависимости от ответа да...

Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) - C++
Всем хай! Помогите написать простую програмулину. Например, форма, на ней техтбох, кнопка. Вводишь текст, нажимаешь на кнопку и всё...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 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 не появляется решение
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru