21

Re: Щось там написати студентоті, за спасибі і без напрацювань

ilonkaua25 написав:

А є якась функція яка визначає мінімальне та максимальне значення і як їх поміняти місцями...

Koala написав:

Відкрийте підручник і читайте про цикли

Ви самі просили функціями, а не циклами: https://ideone.com/9AF7fO

Подякували: 0x9111A, leofun012

22 Востаннє редагувалося Fox (17.05.2018 14:49:35)

Re: Щось там написати студентоті, за спасибі і без напрацювань

Хм... Ви просто забили а тут треба термiново написати чи просто не зрозумiли ?

PS:
https://i.imgur.com/EhJGLHJ.png

Кiт
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <climits>

using namespace std;
typedef void(*FOR_FUNC)(int** matrix, int x, int y);
struct MATRIX {
    int** data;
    int size_x;
    int size_y;
};
struct MATRIX_POSITION {
    int x, y;
};

void matrix_init(MATRIX* matrix, int msize_x, int msize_y)
{
    cout << "[DEBUG] matrix init [" << msize_x << ", " << msize_y << "]" << endl;
    matrix->data = new int*[msize_x];
    for (int i = 0; i < msize_x; i++)
        matrix->data[i] = new int[msize_y];
    matrix->size_x = msize_x;
    matrix->size_y = msize_y;
}

void matrix_foreach(MATRIX matrix, FOR_FUNC func)
{
    cout << "[DEBUG] call matrix_foreach" << endl;
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            func(matrix.data, x, y);
        }
    }
}

void matrix_randomize(MATRIX matrix)
{
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        int random = -10 + (rand() % static_cast<int>(10 + 10 + 1));
        matrix[x][y] = random;
    });
}

void matrix_make(MATRIX matrix, int start)
{
    static int idx = start;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        matrix[x][y] = idx;
        idx++;
    });
}

void matrix_change(MATRIX matrix, MATRIX_POSITION a, MATRIX_POSITION b)
{
    int buf = matrix.data[a.x][a.y];
    matrix.data[a.x][a.y] = matrix.data[b.x][b.y];
    matrix.data[b.x][b.y] = buf;
}

void matrix_print(MATRIX matrix)
{
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            cout << setw(5) <<  matrix.data[x][y] << " ";
        }
        cout << endl;
    }
}

MATRIX_POSITION matrix_getmax(MATRIX matrix)
{
    static int buff = INT_MIN;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] > buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}

MATRIX_POSITION matrix_getmin(MATRIX matrix)
{
    static int buff = INT_MAX;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] < buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}
Готовий кiт
Може самi ?
Ну добре...
Але без ctrl+V

https://i.imgur.com/SFyQdKe.png

Зберете такий конструктор ?)

Подякували: leofun011

23 Востаннє редагувалося Kizyak (17.05.2018 14:56:28)

Re: Щось там написати студентоті, за спасибі і без напрацювань

Прихований текст
Fox написав:

Хм... Ви просто забили а тут треба термiново написати чи просто не зрозумiли ?

PS:
https://i.imgur.com/EhJGLHJ.png

Кiт
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <climits>

using namespace std;
typedef void(*FOR_FUNC)(int** matrix, int x, int y);
struct MATRIX {
    int** data;
    int size_x;
    int size_y;
};
struct MATRIX_POSITION {
    int x, y;
};

void matrix_init(MATRIX* matrix, int msize_x, int msize_y)
{
    cout << "[DEBUG] matrix init [" << msize_x << ", " << msize_y << "]" << endl;
    matrix->data = new int*[msize_x];
    for (int i = 0; i < msize_x; i++)
        matrix->data[i] = new int[msize_y];
    matrix->size_x = msize_x;
    matrix->size_y = msize_y;
}

void matrix_foreach(MATRIX matrix, FOR_FUNC func)
{
    cout << "[DEBUG] call matrix_foreach" << endl;
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            func(matrix.data, x, y);
        }
    }
}

void matrix_randomize(MATRIX matrix)
{
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        int random = -10 + (rand() % static_cast<int>(10 + 10 + 1));
        matrix[x][y] = random;
    });
}

void matrix_make(MATRIX matrix, int start)
{
    static int idx = start;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        matrix[x][y] = idx;
        idx++;
    });
}

void matrix_change(MATRIX matrix, MATRIX_POSITION a, MATRIX_POSITION b)
{
    int buf = matrix.data[a.x][a.y];
    matrix.data[a.x][a.y] = matrix.data[b.x][b.y];
    matrix.data[b.x][b.y] = buf;
}

void matrix_print(MATRIX matrix)
{
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            cout << setw(5) <<  matrix.data[x][y] << " ";
        }
        cout << endl;
    }
}

MATRIX_POSITION matrix_getmax(MATRIX matrix)
{
    static int buff = INT_MIN;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] > buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}

MATRIX_POSITION matrix_getmin(MATRIX matrix)
{
    static int buff = INT_MAX;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] < buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}
Готовий кiт
Може самi ?
Ну добре...
Але без ctrl+V

https://i.imgur.com/SFyQdKe.png

Зберете такий конструктор ?)

Прихований текст

Дуже схоже, що ви використовуєте MS VC++.

Подякували: Chemist-i1

24 Востаннє редагувалося Fox (17.05.2018 15:07:43)

Re: Щось там написати студентоті, за спасибі і без напрацювань

Kizyak написав:
Прихований текст
Fox написав:

Хм... Ви просто забили а тут треба термiново написати чи просто не зрозумiли ?

PS:
https://i.imgur.com/EhJGLHJ.png

Кiт
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <climits>

using namespace std;
typedef void(*FOR_FUNC)(int** matrix, int x, int y);
struct MATRIX {
    int** data;
    int size_x;
    int size_y;
};
struct MATRIX_POSITION {
    int x, y;
};

void matrix_init(MATRIX* matrix, int msize_x, int msize_y)
{
    cout << "[DEBUG] matrix init [" << msize_x << ", " << msize_y << "]" << endl;
    matrix->data = new int*[msize_x];
    for (int i = 0; i < msize_x; i++)
        matrix->data[i] = new int[msize_y];
    matrix->size_x = msize_x;
    matrix->size_y = msize_y;
}

void matrix_foreach(MATRIX matrix, FOR_FUNC func)
{
    cout << "[DEBUG] call matrix_foreach" << endl;
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            func(matrix.data, x, y);
        }
    }
}

void matrix_randomize(MATRIX matrix)
{
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        int random = -10 + (rand() % static_cast<int>(10 + 10 + 1));
        matrix[x][y] = random;
    });
}

void matrix_make(MATRIX matrix, int start)
{
    static int idx = start;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        matrix[x][y] = idx;
        idx++;
    });
}

void matrix_change(MATRIX matrix, MATRIX_POSITION a, MATRIX_POSITION b)
{
    int buf = matrix.data[a.x][a.y];
    matrix.data[a.x][a.y] = matrix.data[b.x][b.y];
    matrix.data[b.x][b.y] = buf;
}

void matrix_print(MATRIX matrix)
{
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            cout << setw(5) <<  matrix.data[x][y] << " ";
        }
        cout << endl;
    }
}

MATRIX_POSITION matrix_getmax(MATRIX matrix)
{
    static int buff = INT_MIN;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] > buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}

MATRIX_POSITION matrix_getmin(MATRIX matrix)
{
    static int buff = INT_MAX;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] < buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}
Готовий кiт
Може самi ?
Ну добре...
Але без ctrl+V

https://i.imgur.com/SFyQdKe.png

Зберете такий конструктор ?)

Прихований текст

Дуже схоже, що ви використовуєте MS VC++.

I що?

25

Re: Щось там написати студентоті, за спасибі і без напрацювань

Fox написав:
Kizyak написав:
Прихований текст
Fox написав:

Хм... Ви просто забили а тут треба термiново написати чи просто не зрозумiли ?

PS:
https://i.imgur.com/EhJGLHJ.png

Кiт
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <climits>

using namespace std;
typedef void(*FOR_FUNC)(int** matrix, int x, int y);
struct MATRIX {
    int** data;
    int size_x;
    int size_y;
};
struct MATRIX_POSITION {
    int x, y;
};

void matrix_init(MATRIX* matrix, int msize_x, int msize_y)
{
    cout << "[DEBUG] matrix init [" << msize_x << ", " << msize_y << "]" << endl;
    matrix->data = new int*[msize_x];
    for (int i = 0; i < msize_x; i++)
        matrix->data[i] = new int[msize_y];
    matrix->size_x = msize_x;
    matrix->size_y = msize_y;
}

void matrix_foreach(MATRIX matrix, FOR_FUNC func)
{
    cout << "[DEBUG] call matrix_foreach" << endl;
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            func(matrix.data, x, y);
        }
    }
}

void matrix_randomize(MATRIX matrix)
{
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        int random = -10 + (rand() % static_cast<int>(10 + 10 + 1));
        matrix[x][y] = random;
    });
}

void matrix_make(MATRIX matrix, int start)
{
    static int idx = start;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        matrix[x][y] = idx;
        idx++;
    });
}

void matrix_change(MATRIX matrix, MATRIX_POSITION a, MATRIX_POSITION b)
{
    int buf = matrix.data[a.x][a.y];
    matrix.data[a.x][a.y] = matrix.data[b.x][b.y];
    matrix.data[b.x][b.y] = buf;
}

void matrix_print(MATRIX matrix)
{
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            cout << setw(5) <<  matrix.data[x][y] << " ";
        }
        cout << endl;
    }
}

MATRIX_POSITION matrix_getmax(MATRIX matrix)
{
    static int buff = INT_MIN;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] > buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}

MATRIX_POSITION matrix_getmin(MATRIX matrix)
{
    static int buff = INT_MAX;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] < buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}
Готовий кiт
Може самi ?
Ну добре...
Але без ctrl+V

https://i.imgur.com/SFyQdKe.png

Зберете такий конструктор ?)

Прихований текст

Дуже схоже, що ви використовуєте MS VC++.

I що?

Прихований текст

ну, нічого страшного, просто до вас будуть відноситись, як до другосортної людини..

26

Re: Щось там написати студентоті, за спасибі і без напрацювань

FakiNyan написав:

ну, нічого страшного, просто до вас будуть відноситись, як до другосортної людини..

Чому ?

27 Востаннє редагувалося 0x9111A (17.05.2018 16:48:13)

Re: Щось там написати студентоті, за спасибі і без напрацювань

FakiNyan написав:

ну, нічого страшного, просто до вас будуть відноситись, як до другосортної людини..

MSVC взагалі то найкраща IDE для C/C++, мені її дуже не вистачає на лінупсі.
Тху ти, це не про IDE. Треба йти додомцю відпочивати

28

Re: Щось там написати студентоті, за спасибі і без напрацювань

0x9111A написав:
FakiNyan написав:

ну, нічого страшного, просто до вас будуть відноситись, як до другосортної людини..

MSVC взагалі то найкраща IDE для C/C++, мені її дуже не вистачає на лінупсі.
Тху ти, це не про IDE. Треба йти додомцю відпочивати

чим це вона краща? хіба там не тре інклудити якусь специфічну фігню, і юзати ще якісь незрозумілі макроси, чи якось так?

29

Re: Щось там написати студентоті, за спасибі і без напрацювань

Мені здається що це хтось проводить нами вами дослід.

30

Re: Щось там написати студентоті, за спасибі і без напрацювань

Прихований текст

Схоже Факi випив щось)

31

Re: Щось там написати студентоті, за спасибі і без напрацювань

Прихований текст
FakiNyan написав:
Fox написав:
Kizyak написав:
Прихований текст
Прихований текст

Дуже схоже, що ви використовуєте MS VC++.

I що?

Прихований текст

ну, нічого страшного, просто до вас будуть відноситись, як до другосортної людини..

Прихований текст

ставитись

32 Востаннє редагувалося /KIT\ (27.07.2021 11:32:23)

Re: Щось там написати студентоті, за спасибі і без напрацювань

FakiNyan написав:
0x9111A написав:

MSVC взагалі то найкраща IDE для C/C++, мені її дуже не вистачає на лінупсі.
Тху ти, це не про IDE. Треба йти додомцю відпочивати

чим це вона краща? хіба там не тре інклудити якусь специфічну фігню, і юзати ще якісь незрозумілі макроси, чи якось так?

то ви про #include "stdafx.h"?

Подякували: FakiNyan1

33

Re: Щось там написати студентоті, за спасибі і без напрацювань

/KIT\ написав:
FakiNyan написав:
0x9111A написав:

MSVC взагалі то найкраща IDE для C/C++, мені її дуже не вистачає на лінупсі.
Тху ти, це не про IDE. Треба йти додомцю відпочивати

чим це вона краща? хіба там не тре інклудити якусь специфічну фігню, і юзати ще якісь незрозумілі макроси, чи якось так?

то ви про #include "stdafx.h"?

так

34 Востаннє редагувалося Fox (17.05.2018 22:23:37)

Re: Щось там написати студентоті, за спасибі і без напрацювань

FakiNyan написав:
/KIT\ написав:
FakiNyan написав:

чим це вона краща? хіба там не тре інклудити якусь специфічну фігню, і юзати ще якісь незрозумілі макроси, чи якось так?

то ви про #include "stdafx.h"?

так

Так я не юзаю його.
Я створив пустий проект i в ньому файл main.cpp а там точку входу main

Подякували: leofun011

35

Re: Щось там написати студентоті, за спасибі і без напрацювань

Fox написав:
FakiNyan написав:
/KIT\ написав:

то ви про #include "stdafx.h"?

так

Так я не юзаю його.
Я створив пустий проект i в ньому файл main.cpp а там точку входу main

і працює?

36

Re: Щось там написати студентоті, за спасибі і без напрацювань

FakiNyan написав:
/KIT\ написав:

то ви про #include "stdafx.h"?

так

MSVC не заставляє його використовувати.
https://replace.org.ua/misc.php?action=pun_attachment&amp;item=1825&amp;download=0

Post's attachments

MSVC_CPP_Proj_Create.png 40.01 kb, 106 downloads since 2018-05-17 

Подякували: FakiNyan1

37

Re: Щось там написати студентоті, за спасибі і без напрацювань

а нащо воно тре, і яка різниця, що з ним, а що без нього?

38

Re: Щось там написати студентоті, за спасибі і без напрацювань

FakiNyan написав:

а нащо воно тре, і яка різниця, що з ним, а що без нього?

А біс його знає. На msdn і на stack'у пишуть що це прискорює збирання проекту, тобто linker працює швидше за рахунок того, що всі часто використовувані класи і функції вже скомпільовані в stdafx.obj і не змінюються.

upd: Попередню картинку я змінив, бо навіть з виключеним "Precompiled header" (але не порожнім проектом) VisualStudio2013 все одно створює файли stdafx.h, stdafx.cpp.

Подякували: FakiNyan1

39 Востаннє редагувалося ReAl (17.05.2018 23:25:38)

Re: Щось там написати студентоті, за спасибі і без напрацювань

FakiNyan написав:

а нащо воно тре, і яка різниця, що з ним, а що без нього?

Є така штука, як precompiled headers (Вам домашнє завдання — перекладіть цю статтю enwiki->українська вікіпедія, бо я геть не маю на те часу).
Компілятор переганяє h-файли у своє власне внутрішнє представлення (вже у вигляді різних геш-таблиць, inline-функцій у внутрішньому проміжному форматі, …), записує у файл і використовує це при наступних компіляціях для пришвидшення роботи.
Але тут головне у правильному місці зупинитися, інакше ці файли передкомпільованих заголовків будуть різні для кожного файлу проекту, займуть купу місця на вінчестері, при дрібних змінах ±h-файл мінятимуться (вимагатимуть перекомпіляції) і ефект зменшиться у тому числі через зайві шарудіння диском.
Зазвичай у великих проектах дуже багато файлів потребують немалої кількості однакових h-файлів (ОС, тулкіти, …), але для розшарювання передкомпільованих заголовків між ними треба, щоб набори були зовсім однакові (кількість і порядок). Все, що вище того, краще компілювати кожен раз із самим файлом.
Ну от оцей stdafx.h призначений для гарантування такої однаковості стандартного (для даної програми) набору заголовків і їхнього порядку. Все спільне для всіх файлів проекту та ще таке, що дуже рідко міняється — у той файл, а вже його — на початок кожного файлу коду.

Подякували: leofun011

40

Re: Щось там написати студентоті, за спасибі і без напрацювань

leofun01 написав:

upd: Попередню картинку я змінив, бо навіть з виключеним "Precompiled header" (але не порожнім проектом) VisualStudio2013 все одно створює файли stdafx.h, stdafx.cpp.

Та однак це зручне місце для спільного, просто при вимкнених воно не буде переганятися у той файл, а компілюватиметься заново кожен раз. Той же #pragma hdrstop у старючому ще досівському BC3 стояв собі після набору стандартних заголовків і нікому не заважав незалежно від того, ключ use precompiled стояв чи ні.

Подякували: leofun011