Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2012, 15:31   #1
MaNext
 
Регистрация: 11.04.2012
Сообщений: 5
Печаль Объявление функции

Доброго времени суток.
Никак не могу разобраться с созданием отдельных функций. Прощу о помощи в этом.
Ниже находится код элементарного счетчика, показывающего значение двоичного числа. В нем имеется строка, где повторяются обозначение, что если значение равно 10, то это А, если 11 то B и тд. Подскажите, как это объявить в отдельной функции. И если кто знает хороший учебник по данной тематике или сайт, то был бы очень признателен. Спасибо.

Код:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <cstring.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int w=0,m1,m2,m3,m4;





//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Edit1->Clear();
Edit2->Clear();
Edit3->Clear();
Edit4->Clear();
Edit5->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Edit4->Text=='F'){ShowMessage("Ïåðåïîëíåíèå!");  }
w++;
if (w%2!=0)
{m1=1;}
else
{m1=0;}

if ((w/2)%2!=0)
{m2=1;}
else
{m2=0;}

if ((w/4)%2!=0)
{m3=1;}
else
{m3=0;}

if ((w/8)%2!=0)
{m4=1;}
else
{m4=0;}

if(w>=15){w=15;m1=1;m2=1;m3=1;m4=1;}
Edit1->Text=m1; Edit2->Text=m2; Edit3->Text=m3; Edit5->Text=m4; Edit4->Text=w;

if (w==10){Edit4->Text='A'; }
if (w==11){Edit4->Text='B'; }
if (w==12){Edit4->Text='C'; }
if (w==13){Edit4->Text='D'; }
if (w==14){Edit4->Text='E'; }
if (w==15){Edit4->Text='F'; }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (Edit4->Text=='0'){ShowMessage("Íåëüçÿ îòðèöàòåëüíûå!");  }
if(w>=0){
  w--;
  if (w%2!=0)
   {m1=1;}
    else
    {m1=0;}

  if ((w/2)%2!=0)
  {m2=1;}
  else
   {m2=0;}

  if ((w/4)%2!=0)
  {m3=1;}
  else
  {m3=0;}

  if ((w/8)%2!=0)
  {m4=1;}
  else
  {m4=0;}

if(w<=0){w=0;m1=0;m2=0;m3=0;m4=0;}
Edit1->Text=m1; Edit2->Text=m2; Edit3->Text=m3; Edit5->Text=m4; Edit4->Text=w;

if (w==10){Edit4->Text='A'; }
if (w==11){Edit4->Text='B'; }
if (w==12){Edit4->Text='C'; }
if (w==13){Edit4->Text='D'; }
if (w==14){Edit4->Text='E'; }
if (w==15){Edit4->Text='F'; }
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 Edit1->Text=0;
 Edit2->Text=0;
 Edit3->Text=0;
 Edit4->Text=0;
 Edit5->Text=0;
 w=0;

}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button4Click(TObject *Sender)
{
if (Edit1->Text==1){m1=1;}else{m1=0;}
if (Edit2->Text==1){m2=2;}else{m2=0;}
if (Edit3->Text==1){m3=4;}else{m3=0;}
if (Edit5->Text==1){m4=8;}else{m4=0;}
w=m1+m2+m3+m4;
if (w<=10){Edit4->Text= IntToStr(w);}

if (w==10){Edit4->Text='A'; }
if (w==11){Edit4->Text='B'; }
if (w==12){Edit4->Text='C'; }
if (w==13){Edit4->Text='D'; }
if (w==14){Edit4->Text='E'; }
if (w==15){Edit4->Text='F'; }


}
MaNext вне форума Ответить с цитированием
Старый 01.05.2012, 15:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
char foo(int w){
 char s[5]="ABCDEF";
 if(w>=0 && w<=5) return s[w+10] else return '';
}
Использовать так:
Код:
Edit4->Text=foo(w);
Ферштейн?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.05.2012, 16:15   #3
MaNext
 
Регистрация: 11.04.2012
Сообщений: 5
По умолчанию

на строчку char s[5]="ABCDEF"; выдает ошибку
[C++ Error] Unit1.cpp(12): E2225 Too many initializers
Не пойму почему w в пределе от 0 до 5.

Другой вопрос.
Как я понимаю, функция прописывается в шапке кода, далее вызывается в самом коде. Но у меня постоянно какие-то ошибки и ничего не хочет работать( Я сам пытался сделать в таком духе:

Сверху написать
void funct(int w){
if (w==10){Edit4->Text='A'; }
if (w==11){Edit4->Text='B'; }
if (w==12){Edit4->Text='C'; }
if (w==13){Edit4->Text='D'; }
if (w==14){Edit4->Text='E'; }
if (w==15){Edit4->Text='F'; }
}
потом в коде вставлял funct(w). Ошибку компилятор выдавал сразу на edit4. Не могли бы пояснить в чем ошибка.
MaNext вне форума Ответить с цитированием
Старый 01.05.2012, 16:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Не пойму почему w в пределе от 0 до 5.
Согласен. Затупил. Нужно char s[6].
От нуля до 5 потому что ты в примере указал от 10 до 15. Соответственно я просто прибавляю десятку
Код:
char foo(int w){
 char s[6]="ABCDEF";
 if(w>=0 && w<=5) return s[w-10] else return '';
}
Тоесть, пардонте, отнимать ее надо а не прибавлять (затупил малость)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.05.2012, 16:54   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Нужно char s[6].
А по-моему, чтобы быть правильной строкой для шести символов надо char[7];
Или я не выспался?
EUGY вне форума Ответить с цитированием
Старый 01.05.2012, 17:22   #6
MaNext
 
Регистрация: 11.04.2012
Сообщений: 5
По умолчанию

Все круто+) Только следуя из моего кода мне надо из 1101 получить D. У вас наоборот)
MaNext вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление hInstance ? L6go1as Win Api 6 18.01.2012 14:04
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Объявление указателей Valter Общие вопросы C/C++ 5 04.04.2010 12:09
Объявление функции Rekky Общие вопросы C/C++ 5 30.09.2009 16:59