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

Рекурсивный спуск - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как правильно инициализировать статические члены класса? http://www.cyberforum.ru/cpp-beginners/thread43235.html
Я новичок и заранее прошу прощение за тупые вопросы. Имеются два класса: Solution и Pool. Pool состоит из нескольких обьектов класса Solution. Эти обьекты отличаются только переменными *x и y. Все остальные члены одинаковы: **a, n, yFunc. Чтобы предотвратить копирование **a и n во все обьекты Solution, я обьявил их как static. Вопрос такой: правильно ли я инициализирую **a и n внутри конструктора...
C++ битовые поля!! добрый вечер! имеется класс представления битовых полей: #ifndef HTBITFIELDS #define HTBITFIELDS #include <iostream> using namespace std; #include "Cmystring.h" http://www.cyberforum.ru/cpp-beginners/thread43226.html
C++ Текущие дату в int
Необходимо получит текщие год, месяц, число и перевести их в int каждый. Получит, то получаю, а как перевести? #include <time.h> #include <iostream> using namespace std; void main() { char* s = (char*)malloc(100);
Убрать ненужное C++
Программисты!Подскажите пожалуйста, как убрать в консоли, в Visual Studio 2005, в конце программы фразу "Для продолжения нажмите любую клавишу",которая вылазит после нажатия клавиши ENTER,я пробывал вконце прописать cin.get(); , эта фраза исчезает при выводе, но при нажатии на энтер, всё равно появляется. Не скажите как избавится от этой фразы. Зараннее благодарю.
C++ бинарный поиск http://www.cyberforum.ru/cpp-beginners/thread43198.html
Задали реализовать бинарный поиск в упорядоченном массиве.Уже пол дня творю,3 листа исписал и ничего не получается. Вот пример поиска который нам показали //Метод Выбора for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) { if(a<a)min=j;
C++ Borland C++ 3.11 Помогите пожалуйста используя Borland C++ 3.11 Вот задание в формате doc: http://********.net/download/5471.5da3b4a2850227f9306fd415c/Praktska_Ci.do_.html подробнее

Показать сообщение отдельно
anaberne
Сообщений: n/a

Рекурсивный спуск - C++

07.07.2009, 11:08. Просмотров 3753. Ответов 3
Метки (Все метки)

нужно реализовать рекурсивный спуск буквально за час, буду оч признателен. Нужно найти ошибку в синтаксисе и помочь с семантикой, либо другой вариант.

Итак, начал с синтаксиса, немного кривовато, но ниче (использую Dev 4.9.9.2) . Ошибка, не проходит 2й раз через Operand, по идее не хватает символа, но чет не соображу где теряется он

Код
/*2.	Отношение Операнд знак Операнд, где Операнд - целое или имя  переменной
 (последовательность латинских букв и цифр, начинающаяся не с цифры), знак
  - это знак отношения (>, <, =, <>, >=, <=). Семантическая процедура
   - сгенирировать программу на С++, запрашивающую значения переменных
    (целые числа)  и проверяющую истинность отношения.*/
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

//using namespace std;

char Ch;
int Pos;

// считываем след. символ.
void NextCh()
{
   
   cin>>Ch;
   Pos++;
   while ( Ch == ' ');

}



//сброс строки
void ResetText()
{
   cout << "vvedite stroku\n" ;
   Pos = 0;
   NextCh();
}

/*void setw (int p)
{
for (int i=0; i<p; i++)
   {
   cout << " ";
   } 
}*/
// ошибка
void Error(char *Message)
{  
  // cout << setw(Pos)<< "^\n" ;
   cout <<  "error:\n "  << Message;
  }



//проверка знака между операндами
void Sign()
{
     cout << "sign na4alo\n";
                   if (Ch=='>')
                   {
                   NextCh ();
                     
                         if (Ch=='=' || Ch=='<')    
                            {
                            NextCh();
                            cout << "Ya tut\n";
                            }
                         
                   }     
                 

                 else if (Ch=='<')
                 {
                  NextCh (); 
                         
                         if (Ch=='=' || Ch=='>')    
                            {
                            NextCh();
                            cout << "ya tut2\n";
                            }
                  }

                  else if (Ch=='=')
                  {
                  NextCh();
                  }
                               
     
                  else Error("net znaka\n");        
                  cout << "konec sign\n";

        
}


//считываем операнд. Может начинаться с буквы и далее число или буква, может с целого.
void Operand()
{ 
     cout << "Operand na4alo\n";
 
               if ((Ch>='a') && (Ch<='z')) //если первый символ
               {
               NextCh ();
                     while (((Ch>='a') && (Ch<='z')) || ((Ch>='0') && (Ch<='9')))
                                {
                                NextCh();
                                cout << "ya tut v bukvah\n";
                                }
                }
                else if ((Ch>='0') && (Ch<='9'))// если целое
                {
                 NextCh ();
                          while ((Ch>='0') && (Ch<='9'))
                          {
                          NextCh();
                          cout << "ya tut v 4islah\n";
                          }
                }
                          
                else if (Ch=='+' || Ch=='-') // если целое со знаком
                {
                          NextCh();
                          if ((Ch>='0') && (Ch<='9'))    NextCh ();
                          while ((Ch>='0') && (Ch<='9'))
                          {
                          NextCh();
                          cout << "ya tut v 4islah\n";
                          }
                }
                 
                else Error("s nepravil'nogo simvola\n");

            cout << "Operand konec\n";
            
}

void zapusk()   // запускает все дело, но сама она из main ... не стал туда засовывать.
{
Operand();      
Sign();
if (Ch!='\0') //топорный вызов операнда если еще не конец строки, хотел сделать это дело в операнде на выходе,
              // типо если конец строки - выйти, если нет - то запустить sign() , но много if надо.
{
Operand();
}
else Error ("Operand 2 otsutstvuet");
  
}

int main()
{  
   ResetText();
   zapusk(); //запускаем функцию старта))
   if (Ch!='\0') Error("ojidanie stroki\n");
   else
      cout<<"Vse OK\n " ;
   getch();
 return 0;
}

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