Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сортировка Шелла программа не правельно работает

23K
19 января 2007 года
bad.76
4 / / 19.01.2007
работает отлично но окна где должны показываться четные и не четные числа показывают все что угодно не то что надо. ошибка в написании програмы. мне просто не хватает знаний как вывисти на экран переменые r и t

вот примерно сдесь:
Код:
#include "afxwin.h"
 
#define IDC_Ed 100
#define IDC_But 101
#define IDI_ICO 102
//////////////////////////////////////////////////////////////////////////////////////////////
int u=0;
 
int A[50];
int B[50];
int C[50];
//////////////////////////////////////////////////////////////////////////////////////////////
 
 
void shell_sort(int A[], int size)
{
int i, j, incrmnt, temp,r,t;
 
incrmnt = size/2;
while (incrmnt > 0)
{
for (i = incrmnt; i < size; i++)
{
j = i;
temp = A;
while ((j >= incrmnt) && (A[j-incrmnt] > temp))
{
A[j] = A[j - incrmnt];
j = j - incrmnt;
}
A[j] = temp;
}
incrmnt /= 2;
}
if(i%2==0){i=r;} сдесь я определ чет не чет если чет то r не чет t
else {i=t;}
}
//////////////////////////////////////////////////////////////////////////////////////////////
CEdit* Edit;
CEdit* Edit2;
CEdit* Edit3;
CEdit* Edit4;
//////////////////////////////////////////////////////////////////////////////////////////////
class CBut:public CButton
{
public:
CBut(){};
~CBut(){};
afx_msg void OnLButtonDown(UINT nFlags,CPoint Point);
protected:
DECLARE_MESSAGE_MAP();
};
 
BEGIN_MESSAGE_MAP(CBut,CButton)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
 
void CBut::OnLButtonDown(UINT nFlags,CPoint Point)
{
u=0;
Edit->SetWindowText("");
Edit2->SetWindowText("");
Edit3->SetWindowText("");
Edit4->SetWindowText("");
}
//////////////////////////////////////////////////////////////////////////////////////////////
class CEd:public CEdit
{
public:
CEd(){};
afx_msg void OnKeyDown(UINT nChar);
~CEd(){};
protected:
DECLARE_MESSAGE_MAP();
};
 
BEGIN_MESSAGE_MAP(CEd,CEdit)
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
 
void CEd::OnKeyDown(UINT nChar)
{
if (nChar==VK_RETURN)
{
char st[10];
CString w(st);
this->GetWindowText(w);
int temp=atoi(w);
A=temp;
u++;
shell_sort(A,u);
this->SetWindowText("");
Edit2->SetWindowText("");
CString qw;
Edit2->GetWindowText(qw);
for(int i=0;i<u;i++)
{itoa(A,st,10);
Edit2->SetWindowText(qw+" "+(CString)st);
Edit2->GetWindowText(qw);
}
 
this->SetWindowText("");
Edit3->SetWindowText("");
Edit3->GetWindowText(qw);
for(int r=0;r<u;r++) сдесь должно по идеи довать
{itoa(B[r],st,10); команду на ввывод
Edit3->SetWindowText(qw+" "+(CString)st);
Edit3->GetWindowText(qw);
}
 
 
shell_sort(C,u);
this->SetWindowText("");
Edit4->SetWindowText("");
Edit4->GetWindowText(qw); и сдесь
for(int t=0;t<u;t++)
{itoa(C[t],st,10);
Edit4->SetWindowText(qw+" "+(CString)st);
Edit4->GetWindowText(qw);
}
}
}
 
/////////////////////////////////////////////////////////////////////////////////////////////////

но тут не правельно написано, а как надо я не знаю, а время поджимает

Программа была написана на языке высокого уровня С++, а точнее создавалась и компилировалась в программной оболочке Microsoft Visual C++ 6.0. Стоит отметить, что оконная реализация программы использует библиотеку классов MFC и для удачной компиляции программы требуется следующее: Во-первых, создать проект вида Win32 Application;
Во-вторых, в настройках проекта(Project->Settings или Alt-F7) на вкладке Общие (General) в подразделе Microsoft Foundation Classes выбрать Use MFC

если вам надо всю программу, пишите на мыло я вам отправлю.
спасибо за помощь
398
20 января 2007 года
Alexandoros
630 / / 21.10.2005
И че не выходит то конкретно?


Код:
CString qw;

Edit2->GetWindowText(qw);

for(int i = 0; i < u; i++)
{
     qw.Format("%s %d", (const char *)qw, A);
     AfxMessageBox(qw);
     Edit2->SetWindowText(qw);
}

this->SetWindowText("");
Edit3->SetWindowText("");
qw.Empty();
for(int r = 0; r < u; r++) сдесь должно по идеи довать
{
     qw.Format("%s %d", (const char *)qw, B[r]);;
     AfxMessageBox(qw);
     Edit3->SetWindowText(qw);
}
23K
20 января 2007 года
bad.76
4 / / 19.01.2007
все просто, по задумки, программа должна выводить после каждого ввода числа это число в отсоритированый ряд и в зависимости от его четности в чет ряд или в не чет ряд.
программа запускается. вводимые числа сортируются и ввыводятся в отсортированый ряд просто олично, а в чет не чет выводит одновременно (должно в 1 тип) и всякую ерунду.

Код:
void CEd::OnKeyDown(UINT nChar)
{
    if (nChar==VK_RETURN)
    {
char st[10];
     CString w(st);
     this->GetWindowText(w);
     int temp=atoi(w);
     A=temp;
u++;
     shell_sort(A,u);
     this->SetWindowText("");
     Edit2->SetWindowText("");
     CString qw;
     Edit2->GetWindowText(qw);
     for(int i=0;i<u;i++)
     {itoa(A,st,10);
     Edit2->SetWindowText(qw+" "+(CString)st);
Edit2->GetWindowText(qw);
     }


Edit2 - работает отлично он отвечает за ввывод отсортированой части
Edit3 и Edit4 должны выводить чет не чет в зависимости от пренодлежности - вот они и не работают


лучше всего выходи в аску ICQ#: 203-845-733
или давай мыло я скину всю прогу
23K
21 января 2007 года
bad.76
4 / / 19.01.2007
все нормально, я сам разобрался.
вот так должна выглядить программа:
Код:
#include "afxwin.h"
 
#define IDC_Ed    100
#define IDC_But    101
#define IDI_ICO    102
//////////////////////////////////////////////////////////////////////////////////////////////
int u=0;
int A[50];
int B[50];
int C[50];
//////////////////////////////////////////////////////////////////////////////////////////////
 
 
void shell_sort(int A[], int size)
{
int i, j, incrmnt, temp;
 
incrmnt = size/2;
while (incrmnt > 0)
{
for (i = incrmnt; i < size; i++)
{
j = i;
temp = A;
while ((j >= incrmnt) && (A[j-incrmnt] > temp))
{
A[j] = A[j - incrmnt];
j = j - incrmnt;
}
A[j] = temp;
}
incrmnt /= 2;
 
}
 
}
 
 
//////////////////////////////////////////////////////////////////////////////////////////////
CEdit* Edit;    
CEdit* Edit2;
CEdit* Edit3;
CEdit* Edit4;
//////////////////////////////////////////////////////////////////////////////////////////////
class CBut:public CButton
{
public:
    CBut(){};
    ~CBut(){};
    afx_msg void OnLButtonDown(UINT nFlags,CPoint Point);
protected:
    DECLARE_MESSAGE_MAP();
};
 
BEGIN_MESSAGE_MAP(CBut,CButton)
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
 
void CBut::OnLButtonDown(UINT nFlags,CPoint Point)
{
u=0;
    Edit->SetWindowText("");
    Edit2->SetWindowText("");
    Edit3->SetWindowText("");
    Edit4->SetWindowText("");
}
//////////////////////////////////////////////////////////////////////////////////////////////
class CEd:public CEdit
{
public:
    CEd(){};
    afx_msg void OnKeyDown(UINT nChar);
    ~CEd(){};
protected:
    DECLARE_MESSAGE_MAP();
};
 
BEGIN_MESSAGE_MAP(CEd,CEdit)
    ON_WM_KEYDOWN()
END_MESSAGE_MAP()
 
void CEd::OnKeyDown(UINT nChar)
{
    if (nChar==VK_RETURN)
    {
char st[10];
     CString w(st);
     this->GetWindowText(w);
     int temp=atoi(w);
     A=temp;
u++;
     shell_sort(A,u);
 
    int n1=0;
int n2=0;
int fori;
 
for (fori = 0; fori < u; fori++) {
if(A[fori]%2==0)
    { B[n1]=A[fori]; n1++;}
else
    { C[n2]=A[fori]; n2++;}
    }
     CString qw;
 
     this->SetWindowText("");
     Edit2->SetWindowText("");
     Edit2->GetWindowText(qw);
     for(int i=0;i<u;i++)
     {itoa(A,st,10);
     Edit2->SetWindowText(qw+" "+(CString)st);
Edit2->GetWindowText(qw);
     }
 
     this->SetWindowText("");
Edit3->SetWindowText("");
     Edit3->GetWindowText(qw);
for( i=0;i<n1;i++)
     {itoa(B,st,10);
Edit3->SetWindowText(qw+" "+(CString)st);
Edit3->GetWindowText(qw);
}
 
 
this->SetWindowText("");
Edit4->SetWindowText("");
     Edit4->GetWindowText(qw);
for( i=0;i<n2;i++)
{itoa(C,st,10);
Edit4->SetWindowText(qw+" "+(CString)st);
Edit4->GetWindowText(qw);
}
 
    }
}
 
/////////////////////////////////////////////////////////////////////////////////////////////////
 
 
class CMainWin:public CFrameWnd
{
public:
    CMainWin();
    CBrush color;
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CFrameWnd* pWnd, UINT nCtlColor);
    DECLARE_MESSAGE_MAP()
private:
    CStatic*    StaticC;
    CStatic*    Static;
    CStatic*    Static2;
    CStatic*    Static3;
    CStatic*    Static4;
    CStatic*    Static5;
    CBut*        Button;
};
 
CMainWin::CMainWin()
{
    Create(NULL,"Курсовая работа по программированию.");
    MoveWindow(CRect(200,50,650,360),TRUE);
 
    Edit = new CEd();
    if (Edit!=NULL)
        Edit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(15,48,150,68),this,IDC_Ed);
 
    Edit2 = new CEd();
    if (Edit2!=NULL)
        Edit2->Create(WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(5,90,430,110),this,IDC_Ed);
 
    Edit3 = new CEd();
    if (Edit3!=NULL)
        Edit3->Create(WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(5,140,430,160),this,IDC_Ed);
 
    Edit4 = new CEd();
    if (Edit4!=NULL)
        Edit4->Create(WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(5,190,430,210),this,IDC_Ed);
 
    Static=new CStatic();
    if (Static!=NULL)
        Static->Create("Сортировщик масива.",WS_CHILD|WS_VISIBLE|SS_LEFT,CRect(100,3,410,20),this);
 
    Static2=new CStatic();
    if (Static2!=NULL)
        Static2->Create("Вводим масив через Enter:",WS_CHILD|WS_VISIBLE|SS_LEFT,CRect(5,30,220,45),this);
 
    Static3=new CStatic();
    if (Static3!=NULL)
        Static3->Create("Отсортированный масив:",WS_CHILD|WS_VISIBLE|SS_LEFT,CRect(5,70,450,90),this);
 
    Static4=new CStatic();
    if (Static4!=NULL)
        Static4->Create("Четные:",WS_CHILD|WS_VISIBLE|SS_LEFT,CRect(5,120,450,140),this);
 
    Static5=new CStatic();
    if (Static5!=NULL)
        Static5->Create("Не четные:",WS_CHILD|WS_VISIBLE|SS_LEFT,CRect(5,170,450,190),this);
 
    StaticC=new CStatic();
    if (StaticC!=NULL)
        StaticC->Create("Создал студент группы КСМз-04 Калинка Алексей",WS_CHILD|WS_VISIBLE|SS_LEFT,CRect(60,255,460,270),this);
 
    Button = new CBut();
    if (Button!=NULL)
        Button->Create("Сброс!",WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(100,225,350,246),this,IDC_But);
 
    color.CreateSolidBrush(RGB(255, 255, 255));
}
 
HBRUSH CMainWin::OnCtlColor(CDC* pDC, CFrameWnd* pWnd, UINT nCtlColor)
{
    return color;
}
 
 
class CApp:public CWinApp
{
public:
    BOOL InitInstance();
};
 
BOOL CApp::InitInstance()
{
    m_pMainWnd = new CMainWin;
    m_pMainWnd->ShowWindow(m_nCmdShow);
    m_pMainWnd->UpdateWindow();
    return TRUE;
}
 
BEGIN_MESSAGE_MAP(CMainWin,CFrameWnd)
    ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
 
CApp theApp;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог