Премини към съдържанието

Препоръчан отговор


Здравейте !

 

Бих искал да ви помоля за малко помощ относно 2задачи по C#, който реално не са кой знае какво просто за момента не мога да ги реша самостоятелно.

 

Задачите са следните: Дадени са контролите Textbox TB1. Button BT1 и Listbox LB1. Да се напише програмен фрагмент, който при натискане на бутон BT1 прочита от текстовата кутия TB1 цело положително число в интервала 1-7000 и генерира числова редица, състояща се от всички делители на въведеното в TB1 число. Трябва да се гарантира, че програмата няма да спре изпълнението си, ако в текстовата кутия се въвеждат други символи освен цифри 

 

Пример: Въвежда се в текстовата кутия 24, след натискане на бутона в списъчната кутия се извежда 1,2,3,4,6,8,12 

 

Другата е: Да се напише програма която реализира играта бикове и крави. Тя използва следните контроли TextBox TChislo, Button BT1 за ход и Listbox LResult. Потребителя въвежда четирицифрено число  в Tchislo и програмата извежда в LResult резултата. Програмата връща отговор бик ако има съвпадение на цифра и позицията и на числото и крава, ако цифрата  се среща  на друга позиция в числото. Числото за познаване се генерира от програмата, като не може да има дублиращи се цифри. Ако потребителят има 4бика (познае числото), програмата генерира съобщение. След 10хода, ако не е познал числото отново се генерира подходящо съобщение.

Пример: Въвежда се в текстовата кутия 2473, след натискане на бутона в списъчната кутия се извежда 2бика и една крава

 

Адски много ще съм би Благодарен ако успеете да ми помогнете!

 

Благодаря Ви

 

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Започнете вие да пишете, ние ще помагаме. Наготово няма да да стане

  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

За делителите на С++ с Windows API с лист бокс, едит контрол и бутон става така:

 

#define UNICODE
#include <windows.h>
#include <strsafe.h>

#define clientwidth (lParam&0xffff)
#define clientheight (lParam>>16)

HINSTANCE hinstance;
HWND hwndedit;
HWND hwndlistbox;
HWND hwndbutton;

const wchar_t ClassName[] = L"Divisors";
const wchar_t AppName[]  = L"Намиране на делителите";

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);


int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc = { };
    MSG msg = { };
    HWND hwnd;
	
    hinstance = hInstance;
	

	wc.cbSize	 = sizeof(WNDCLASSEX);
	wc.style	 = CS_HREDRAW + CS_VREDRAW;
	wc.lpfnWndProc	 = WindowProc;
	wc.cbClsExtra	 = 0;
	wc.cbWndExtra	 = 0;
	wc.hInstance	 = hInstance;
	wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE+1);
	wc.lpszMenuName  = 0
	wc.lpszClassName = ClassName;
	wc.hIcon = LoadIcon(0,IDI_APPLICATION);
	wc.hIconSm = wc.hIcon;
	wc.hCursor = LoadCursor(0,IDC_ARROW);
	
    RegisterClassEx(&wc);

    // Create the window.

    hwnd = CreateWindowEx(
	0,				// Optional window styles.
	ClassName,			// Window class
	AppName,	// Window text
	WS_OVERLAPPEDWINDOW,		// Window style

	// Size and position
	CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

	NULL,	    // Parent window	
	NULL,	    // Menu
	hInstance,  // Instance handle
	NULL	    // Additional application data
	);

    if (hwnd == NULL)
    {
	return 0;
    }

    ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

    // Run the message loop.

    
    while (GetMessage(&msg, NULL, 0, 0))
    {
	TranslateMessage(&msg);
	DispatchMessage(&msg);
    }

    return msg.wParam;
}


LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    int chislo, i, delitel[50], index;
    wchar_t buffer [16];
    switch (uMsg)
    {
	case WM_DESTROY:
	PostQuitMessage(0);
        return 0;
		
	case WM_CREATE:
	hwndedit = CreateWindowEx (NULL, L"EDIT",0,
	   WS_VISIBLE + WS_CHILD + ES_LEFT + ES_NUMBER,0,
	   0,0,0,hwnd,(HMENU)1,
	   hinstance,NULL);
	hwndlistbox = CreateWindowExW(WS_EX_CLIENTEDGE
                     , L"LISTBOX", NULL
                     , WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOVSCROLL
                     , 0, 0, 0, 0
                     , hwnd, (HMENU)2, hinstance, NULL);
	hwndbutton = CreateWindow( 
                 L"BUTTON", 
                 L"Делители",      
                  WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,  // Styles 
                  0,         
                  0,        
                  0,        
                  0,        
                  hwnd,     
                  (HMENU)3,      
                  hinstance, 
                  NULL);			  
        return 0;
	case WM_SIZE:
	MoveWindow(hwndedit, clientwidth/2 - clientwidth/10, clientheight/2 - clientheight/40,
	                     clientwidth/5,clientheight/20,TRUE);
	MoveWindow(hwndlistbox, clientwidth/2 - clientwidth/10, clientheight*15/100,
	                     clientwidth/5,clientheight/4,TRUE);				 
	MoveWindow(hwndbutton, clientwidth/2 - clientwidth/10, clientheight/2 + clientheight/10,
	                     clientwidth/5,clientheight/20,TRUE);
	return 0;
        case WM_COMMAND:
        if (((wParam & 0xffff) == 3) && ((HWND)lParam == hwndbutton) && ((wParam>>16) == BN_CLICKED))
        {
            SendMessage(hwndlistbox, LB_RESETCONTENT, 0, (LPARAM)buffer);
            chislo = GetDlgItemInt(hwnd, 1, 0, false);
	    if (chislo <= 7000)
            {
                index = 0;				
	        for (i = 1; i <= chislo; i++)
	        {
		    if (chislo % i == 0)
		    {
			if (chislo/i < i)
			{
                           index --;
			   break;
                        }			
                    else if (chislo/i == i)
                    {
                        index--;
			StringCbPrintf(buffer, 16, L"%u", i);
		        SendMessage(hwndlistbox, LB_ADDSTRING, 0, (LPARAM)buffer);
			break;
                    }
                    delitel[index] = chislo/i;
		    index++;
		    StringCbPrintf(buffer, 16, L"%u", i);
		    SendMessage(hwndlistbox, LB_ADDSTRING, 0, (LPARAM)buffer);
		}
            }    
	    for (i = index; i >= 0; i--)
	    {
                StringCbPrintf(buffer, 16, L"%u", delitel[i]);
		SendMessage(hwndlistbox, LB_ADDSTRING, 0, (LPARAM)buffer);
 	    }
        }				
    }
    return 0;		
  }
  return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

От командния ред се компилира с

cl /EHsc /c deliteli.cpp
И се свързва с

link deliteli.obj user32.lib /subsystem:windows  
Редактирано от Реджеп Иведик (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.