1

(6 відповідей, залишених у C++)

koala написав:

Втім, не факт, що програма запрацює - я навіть дивитися на ваші масиви не хочу.

Не всі можуть зразу почати писати програми правильно і зрозуміло, мабуть. Це по факту, моя перша спроба, щось більш менш толкове написати самому.
Дякую за допомогу.

2

(6 відповідей, залишених у C++)

Доброго вечора! Вирішив написати прості консольні Хрестики-нулики, зіткнувся з проблемою.

вибиває ось цю помилку

http://i.imgur.com/zkf2brz.png

Помилка виникає, коли я намагаюся зациклити функцію, дописавши в кінці - bot();

Ця функція
void bot() {
    int arr02[] = { 8,10,12,22,24,26,36,38,40 }; // Числа в масиві - це індекси чисел 1,2,3,4,5,6,7,8,9 в масиві arr[]
    srand((unsigned)time(NULL));
     int index = rand() % 9; // випадкове число 
     
         if (arr[arr02[index]] != 'X' && 'O') { 
             arr[arr02[index]] = 'O';
         }
         else {
             bot();     
         }
     }

Суть в тому, що бот виставляє "нулики" в випадкову клітинку.
Я роблю, спочатку перевірку, чи клітинка не занята вже "нулем" або "хрестиком", якщо так: то функція повинна виконуватися заново, якщо ні: то в клітинку ставиться нулик .

Весь код програми
#include <iostream>
#include<locale.h> 
#include <time.h>
using namespace std;

// Масив дошки
char arr[] ={
    '-','-','-','-','-','-','-',
    '|','1','|','2','|','3','|',
    '-','-','-','-','-','-','-',
    '|','4','|','5','|','6','|',
    '-','-','-','-','-','-','-',
    '|','7','|','8','|','9','|',
    '-','-','-','-','-','-','-',
};

// Прототипи функцій
void vubir();
void doska();
void bot();

// Виклики всіх функцій
void main() {
    setlocale(LC_ALL, "RUS");

    doska();

    cout << "Ви граэте за хрестики. Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
    
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
    
        


    system("pause");
    
}

// Малюємо дошку.
void doska() {
    for (int a = 0;a < 7;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 7;a < 14;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 14; a<21; a++)
        cout << arr[a];
    cout << endl;
    for (int a = 21;a<28;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 28; a<35; a++)
        cout << arr[a];
    cout << endl;
    for (int a = 35;a<42;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 42;a<49;a++)
        cout << arr[a];
    cout << endl;
}

// Бот - противник.
void bot() {
    int arr02[] = { 8,10,12,22,24,26,36,38,40 }; // Числа в масиві - це індекси чисел 1,2,3,4,5,6,7,8,9 в масиві arr[]
    srand((unsigned)time(NULL));
     int index = rand() % 9; // випадкове число 
     
         if (arr[arr02[index]] != 'X' && 'O') {
             arr[arr02[index]] = 'O';
         }
         else {
             bot();     
         }
     }

// Вибір гравцем де поставити хрестик.
void vubir() {
    int step;

    cin >> step;
    switch (step) {
    case 1:
        arr[8] = char('X');
        doska();
        break;
    case 2:
        arr[10] = char('X');
        doska();
        break;
    case 3:
        arr[12] = char('X');
        doska();
        break;
    case 4:
        arr[22] = char('X');
        doska();
        break;
    case 5:
        arr[24] = char('X');
        doska();
        break;
    case 6:
        arr[26] = char('X');
        doska();
        break;
    case 7:
        arr[36] = char('X');
        doska();
        break;
    case 8:
        arr[38] = char('X');
        doska();
        break;
    case 9:
        arr[40] = char('X');
        doska();
        break;
    }
}

3

(5 відповідей, залишених у Залізо)

0xDADA11C7 написав:

Пропилососте й протріть чистим спиртом плату, перевірте чи не закоротило ЮСБ, та скиньте налаштування біосу до типових (Load default settings).

"На око" ніяких фізичних пошкоджень не виявив,  пропилососив.  Настройки біосу не відкриваються.

reverse2500 написав:

CMOS може і сіла біосна батарейка

Спочатку була лише помилка з USB. Коли я зрозумів що біос не запускається, замінив батарейку і тепер ще зявилася друга помилка. Причому коли змінюю батарейку на стару, помилка не зникає.


________
В сервісний центр якось не хочеться віддавати комп, оскільки він старий дуже і ремонт може обійтися в пів його ціни)

4

(5 відповідей, залишених у Залізо)

Під час запуску компютера, видає наступні 2 помилки:
1) usb device over current status detected
2) cmos checksum bad
Ось:
https://pp.сайт-злодій/c639731/v639731966/16687/ONVLH9voH4Q.jpg

Спочатку було лише одна помилка "usb device over current status detected"
Шукаючи в інтеренті рішення, знайшов рекомендації просто відключити всі USB пристрої від материнської плати. Не допомогло.

Також рекомендували обновити БІОС, а якщо не допоможе замінити батарейку. Після заміни батарейки, обзавівся ще і цим "cmos checksum bad"

Порадьте щось, буду вдячний.

5

(1 відповідей, залишених у C++)

Вітаю. Мета моєї курсової робити - шашки.

Трохи помучившись, мені вдалося написати код, який виводить на екран доску і самі шашки. Шашки теж рухаються по досці (поки по всіх клітинках).

Не можу зрозуміти як написати алгоритм зрубання (биття) шашок.

Може хтось підкаже як, або дайте якусь літературу де це можна знайти.

ось код:

#include <iostream>
#include <time.h>
#include <SFML/Graphics.hpp>

using namespace sf;
using namespace std;

int boardSize = 63;

Sprite playerSprites[24];

int board[8][8] =
{-1, 0,-1, 0,-1, 0,-1, 0,
 0,-1, 0,-1, 0,-1, 0,-1,
-1, 0,-1, 0,-1, 0,-1, 0,
 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0,
 0, 1, 0, 1, 0, 1, 0, 1,
 1, 0, 1, 0, 1, 0, 1, 0,
 0, 1, 0, 1, 0, 1, 0, 1 };

void loadPosition()
{
    int k = 0;
    for(int i = 0 ; i < 8 ; i++)
        for (int j = 0; j < 8; j++)
        {
            int n = board[i][j];
            if (!n) continue;
            if (n < 0) playerSprites[k].setTextureRect(IntRect(0,0,62,62));
            else playerSprites[k].setTextureRect(IntRect(62, 0, 62, 62));
            playerSprites[k].setPosition(boardSize*j, boardSize*i);
            k++;
        }
}

int main()
{
    RenderWindow window(VideoMode(500, 500), "Chererboard");

    Texture players, boardTex;

    boardTex.loadFromFile("images/board.jpg");
    players.loadFromFile("images/players.png");

    Sprite checkerBoard(boardTex);

    for (int i = 0; i < 24; i++) playerSprites[i].setTexture(players);

    loadPosition();

    bool isMoving = false;
    float dx = 0, dy = 0;
    int playerIndex = 0;

    while (window.isOpen())
    {
        Vector2i mousePosition = Mouse::getPosition(window);

        Event _event;
        while (window.pollEvent(_event))
        {
            if (_event.type == Event::Closed)
                window.close();

            if(_event.type == Event::MouseButtonPressed)
                if(_event.key.code == Mouse::Left)
                    for(int i = 0; i < 24; i++)
                    if (playerSprites[i].getGlobalBounds().contains(mousePosition.x, mousePosition.y))
                    {
                        isMoving = true;
                        playerIndex = i;
                        dx = mousePosition.x - playerSprites[i].getPosition().x;
                        dy = mousePosition.y - playerSprites[i].getPosition().y;
                    }

            if (_event.type == Event::MouseButtonReleased)
                if (_event.key.code == Mouse::Left)
                {
                    isMoving = false;
                    // Position locking
                    Vector2f position = playerSprites[playerIndex].getPosition() + Vector2f(boardSize / 2, boardSize / 2);
                    Vector2f newPosition = Vector2f(boardSize*int(position.x / boardSize), boardSize*int(position.y / boardSize));
                    playerSprites[playerIndex].setPosition(newPosition);
                }
        }

        if (isMoving) playerSprites[playerIndex].setPosition(mousePosition.x - dx, mousePosition.y - dy);

        // Draw window
        window.clear();
        window.draw(checkerBoard);
        for (int i = 0; i < 24; i++) window.draw(playerSprites[i]);
        window.display();
    }
    
    //system("PAUSE");
    return 0;
}

6

(4 відповідей, залишених у Системне програмування)

Сам розібрався, просто не розумів що до чого, дякую.

Допоможіть розібрати код, при можливості, надпишіть збоку кожного рядка що він виконую, буду дуже вдячний.

.8086
.model small
.stack 200h
.data
x dw 17
a db 7

.code
.startup

mov ax,x        ; завантажити в регістр ах значення х
div a               ; if  ah = 0 => k= 0 else k=1
or ah,ah    
jz m1

cmp ah,1h
jnz m2

int 21h
jmp m3
m1:
   mov cx,0
   jmp m3
m2:
   mov cx,1
   jmp m3
m3:
   .exit 0
 end @startup

8

(2 відповідей, залишених у C++)

Вітаю, стоїть завдання: Створити двійковий файл структур та впорядкувати файл по зростанню кодів виробів.

Не можу зрозуміти як створювати бінарні файли і не можу написати алгоритм, за яким у файлі коди виробів були би в порядку зростання :,(

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct base
{
    string name;
    string code;
    string price;
};
int main()
{
    int const MAX = 2;
    base b[MAX];
    for (int i = 0;i<MAX;++i)
    {
        cout << "Enter name :" << endl;
        cin >> b[i].name;
        cout << "Enter code :" << endl;
        cin >> b[i].code;
        cout << "Enter price :" << endl;
        cin >> b[i].price;
    }

    ofstream outfile;
    outfile.open("Out.txt");
    for (int i = 0;i<MAX;++i)
        outfile << b[i].name << " " << b[i].code << " " << b[i].price << endl;

    system("pause");
    return 0;
}