Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.06.2013, 18:52. Просмотров 851. Ответов 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 секунд
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 18:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос почему когда вводишь пунк 2 не появляется решение (C++):

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

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

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

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

Почему появляется ошибка С2064 (очень давно не писала на С++) - C++
Почему тут появляется эта ошибка? Заранее спасибо :yes: void FileSorter::sortString(bool (FileSorter::*needsToBeMoved)(string, string))...

почему не работает условие когда х=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; ...

27
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,596
12.06.2013, 19:10 #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;
}
0
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 19:15  [ТС] #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 минуту
мне так кажется потому что когда нажимаешь пункт два то он просто выводит принтеф и все а результата нет
0
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,596
12.06.2013, 19:15 #4
easyfrag, а вы учитываете, что n тут изначально не инициализирована при вызове функции?
0
easyfrag
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 111
12.06.2013, 19:18  [ТС] #5
тоесть ее приравнять к 0

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

Добавлено через 22 секунды
просто я понять не могу
0
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,596
12.06.2013, 19:19 #6
easyfrag, если честно, мне не хочется вникать в суть вашей программы т.к. написана она криво косо и логику может понять лишь сам автор.

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

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

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

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

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

Добавлено через 9 минут
тут не в касе дело
0
12.06.2013, 21:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 21:23
Привет! Вот еще темы с ответами:

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

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

Почему когда подключаю монитор к материнке, то на мониторе ничего не появляется? - Мониторы
А когда подключаю к видеокарте то всё отоброжается

Почему, когда я разворачиваю игру появляется чёрный экран на две минуты? - Action/FPS игры
Здравствуйте форумчане! Играю в Red Orchestra Geroes of Stalingrad. Почему-то, когда сворачиваю, а потом разворачиваю игру появляется на...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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