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

Рекурсия. Не происходит обнуление - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выбор наибольшего из трех чисел. http://www.cyberforum.ru/cpp-beginners/thread39973.html
Мне на экзамене задали задачу, из-за которой мой балл упал с 5 до 4, т.к. я не смог ее решить. Задача звучала следующим образом: Написать оператор, вычисляющий наибольшее из трех чисел при промощи условной операции ?: Сегодня я ее решил, и было бы интересно узнать мнение по поводу моего решения, т.е. насколько оно правильное и что можно было бы сделать с точки зрения оптимизации и...
C++ Даны координаты двух полей Даны координаты двух полей шахматной доски. Определить, может ли конь за один ход перейти с одного из этих полей на другое. http://www.cyberforum.ru/cpp-beginners/thread39969.html
Матрица C++
Представленная матрица 3 х 3. Заменить в матрице числа буквами.
C++ Целые числа
Даны целые числа С1, ... с9. Есть ли в этой последовательности три подряд стоящих нулевых элементов. Если есть, то напечатать их номера, если нет, то вычислить сумму элементов в последовательности.
C++ С++ Блок - схема http://www.cyberforum.ru/cpp-beginners/thread39943.html
Обычный: for(int i = 0; i < i+1; i++) { /* Безконечный цикл P.S: Безконечно делать это*/ } Двойной (for в for'e): for(int i = 0; i < 5; i++) {
C++ Переведите на С Функция по 3 числам проверяет могут ли эти числа быть сторонами треугольника. С помощью функции массив ( где каждая строка стороны треугольника ) найти все треугольники которые могут существовать(в 1 строке, во 2 строке и в 3 строке). Вывести результаты на экран ! uses crt; const n=10;{kolichestvo treugolnicov} var a:arrayof integer; i,j:integer; function Trg(x,y,z:integer):boolean;... подробнее

Показать сообщение отдельно
Jiton
2 / 2 / 1
Регистрация: 09.12.2008
Сообщений: 14

Рекурсия. Не происходит обнуление - C++

13.06.2009, 21:14. Просмотров 553. Ответов 5
Метки (Все метки)

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
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
#include <windows.h>
using namespace std;
#include <tchar.h>
#include "locale.h"
#include <ctype.h>
int int_protect();
 
double funct(int n)               //Рекурсивная функция
{
     static double x = 1;              //Переменные х и у имеют память типа static. При выходе из функции они не 
     static double y = 1;                 //уничтожаются. Т.е. при очередном входе функции x и у будут такими, какими они были при последнем выходе из функции 
     double result = x/(1+y);            //Формирование очередного значения суммы
     y = y+x;                                //Формирование x и y 
     x *= 0.3;
     if(n == 0)return 0;
     return result + funct(n-1);
}
 
int _tmain(int argc, _TCHAR* argv[])
{   
     char ch;
     int n;
     setlocale(LC_ALL,"Russian"); 
     printf("\n---------------------------------------------------------------------");
     printf("\n Пусть Х1=У1=1, Хi=0.3i-1, Yi=(Xi-1)+Yi-1. i=2,3,... ");
     printf("\n Дано натуральное n. Найти:");
     printf("\n E Xi/1+yi");
     printf("\n-------------------------------------------------------------");
 
    do
     {
          printf("\nВведите n:");          //Ввод данных
          n=int_protect();
          printf("\nResult: %3.15f", funct(n));
          printf("\n\nХотите произвести  еще одно вычисление?(Y/N)");
 
     do
     {
     ch=toupper(_getch());
 
     if( (ch=='Y')||(ch=='N') )
     printf("%c\n",ch);
     }
     while (ch!='Y' && ch!='N');
     }
     while (ch!='N');
 
_getch();
}
/////ФУНКЦИЯ ЗАЩИТЫ ТИПА INT////
int int_protect()
{
char a[3]={0},x=0;
int q=0, i=0;
do {
   x=_getch();
   if (x>=48 && x<=57 && i<3)
     {printf ("%c",x);
      a[i]=x;
      i++;}
   if (x==8 && i>=0)
     {printf ("%c %c",8,8);
      i--;
      a[i]=0;}
   q=atoi (a);
 }while (x!=13 || q==0 || i==0);
   return q;
}
Проблема в том, что не обновляються(если быть точнее не обнуляються) первоначальные данные Х и Y.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru