Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
2 / 2 / 3
Регистрация: 14.11.2009
Сообщений: 44
1

Взаимная рекурсия

09.03.2010, 13:42. Показов 3741. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!нужна помощь в решении задачи:

функция вычисления четности (нечетности) единиц в двоичном представлении числа

код в делфи нужно реализовать в билдере

Delphi
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
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    function p1(n:byte):boolean;
    function p2(n:byte):boolean;
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
  If p1(15)=false then Edit1.Text:='Четное' else Edit1.Text:='Нечетное';
end;
function Tform1.p1(n:byte):boolean;
begin
  if n=0 then result:=false
  else if (n mod 2)=0 then result:=p1(n div 2)
       else result:=p2(n div 2);
end;
function Tform1.p2(n:byte):boolean;
begin
  if n=0 then result:=true
  else if (n mod 2)=0 then result:=p2(n div 2)
       else result:=p1(n div 2);
end;
end.
пример вывода

Число 15 в десятичной равно 1111, т.е. число единиц четное.

пытался реализовать сам,но не не вышло

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
#include <vcl.h>
#pragma hdrstop
 
#include "prog.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool p1(int x)
  {
if(x==0) return false;
 else if((x%2)==0) return p1(x/2);
  else return p2(x/2); //ошибка на этой строчке
}
bool p2(int x)
{if(x==0) return true;
 else if((x%2)==0) return p2(x/2);
  else return p1(x/2);
};
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x=StrToInt(Edit1->Text);
if(p1(x)==false) Label1->Caption="ЧЁТНОЕ";
else  Label1->Caption="не ЧЁТНОЕ";
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2010, 13:42
Ответы с готовыми решениями:

Взаимная рекурсия
Здравствуйте! Помогите, пожалуйста, решить задачу на взаимную рекурсию на Lisp Scheme. Дано:...

Взаимная (косвенная) рекурсия в C#
Как реализовывается взаимная рекурсия в C#?

Взаимная рекурсия и labels
Добрый день! Воопрос такой: например, у меня есть две функции вычисляющие формулу рекурсивно. и...

Взаимная аутентификация
Добрый вечер, есть задача реализовать взаимную (двустороннюю) аутентификацию, какие идеи есть на...

2
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
09.03.2010, 14:10 2
Unit1.h
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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TButton *Button1;
    TEdit *Edit1;
    TLabel *Label1;
    void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
    bool __fastcall p1(int x);
    bool __fastcall p2(int x);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Unit1.cpp
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int x=StrToInt(Edit1->Text);
  if(p1(x)==false) Label1->Caption="ЧЁТНОЕ";
    else  Label1->Caption="не ЧЁТНОЕ";
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::p1(int x)
{
  if(x==0) return false;
    else if((x%2)==0) return p1(x/2);
      else return p2(x/2);
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::p2(int x)
{
  if(x==0) return true;
    else if((x%2)==0) return p2(x/2);
      else return p1(x/2);
}
//---------------------------------------------------------------------------
C++ Builder 2009
1
2 / 2 / 3
Регистрация: 14.11.2009
Сообщений: 44
10.03.2010, 14:57  [ТС] 3
спс,я забыл ашку скинуть,там чуть чуть отличается
только теперь другая проблема,после компиляции выскакивает вот такая ошибка

[Linker Error] Unresolved external 'WinMain' referenced from E:\PROGRAMMS\BUILDER C++\LIB\C0W32.OBJ

0
10.03.2010, 14:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2010, 14:57
Помогаю со студенческими работами здесь

Взаимная индуктивность
Добрый день! Помогите, пожалуйста, решить задачку (за шоколадку):) Возможно формулы кто...

Взаимная агрегация
Здравствуйте, не знал как правильно назвать тему, если ошибся - простите. Пишу симулятор банкомата,...

Взаимная индуктивность
Всем привет. Решил 2 задачи, но немного сомневаюсь в правильности решения ( знаки, где учет...

Взаимная индукция
Всем привет. Извините, за наглось, но сомневаюсь в правильности решения одной задачи. Приведу ее...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru