Другое С/С++ Вопрос - Ответ

traceattack

Известный
218
119
Подскажите пожалуйста что не так сделал, с комментариями того, что вы добавляете. Был бы оооочень признателен :3
Напишите программу, находящую в этом массиве два соседних элемента, значения которых наименее близки, то есть абсолютная величина их разности максимальна. Если таких пар несколько, можно взять любую из них
Код:
#include <iostream>
using namespace std;
void main()
{
    setlocale(0, "");
    int a[5], k = INT_MIN;
    for (int i = 0; i < 5; i++) cin >> a[i];
    for (int i = 0; i < 4; i++)
    {
        if ((abs(a[i + 1]) - abs(a[i])) / (abs(a[i + 1]) + abs(a[i])) > k) k= (abs(a[i + 1]) - abs(a[i])) / (abs(a[i + 1]) + abs(a[i]));
        cout << a[i] << ", " << a[i + 1];
    }
    cin.get(); cin.get();
}
В твоей "Мега - формуле" не очень хочется разбираться.
А так , читай задание внимательней
C++:
#include <iostream>
using namespace std;
int main(void)
{
    const int N = 5;
    
    int k = -1;
    int arr[N];
    int m1, m2;
    
    for(int i = 0; i < N; i++)  cin >> arr[i];
    for(int i = 0; i < N - 1; i++)
    {
        int temp = abs(arr[i] - arr[i+1]);
        if(temp > k)
        {
            k = temp;
            m1 = arr[i];
            m2 = arr[i+1];
        }
        
    }
    cout << m1 << " " << m2;
}
 

bet.io

Известный
117
16
В твоей "Мега - формуле" не очень хочется разбираться.
А так , читай задание внимательней
C++:
#include <iostream>
using namespace std;
int main(void)
{
    const int N = 5;
    
    int k = -1;
    int arr[N];
    int m1, m2;
    
    for(int i = 0; i < N; i++)  cin >> arr[i];
    for(int i = 0; i < N - 1; i++)
    {
        int temp = abs(arr[i] - arr[i+1]);
        if(temp > k)
        {
            k = temp;
            m1 = arr[i];
            m2 = arr[i+1];
        }
        
    }
    cout << m1 << " " << m2;
}
Разве m1 и m2 не должны быть float? И да, как я написал будет работать, либо где-то накосячил?
Код:
#include <iostream>
using namespace std;
void main()
{
	setlocale(0, "");
	float d, r;
	int a[5], k = INT_MIN;
	for (int i = 0; i < 5; i++) cin >> a[i];
	for (int i = 0; i < 4; i++)
	{
		if (abs(a[i + 1] - a[i] > k))
		{
			k = abs(a[i + 1] - a[i]);
			d = a[i];
			r = a[i + 1];
		}
	}
	cout << d << ", " << r;
	cin.get(); cin.get();
}
 

traceattack

Известный
218
119
Разве m1 и m2 не должны быть float? И да, как я написал будет работать, либо где-то накосячил?
Код:
#include <iostream>
using namespace std;
void main()
{
    setlocale(0, "");
    float d, r;
    int a[5], k = INT_MIN;
    for (int i = 0; i < 5; i++) cin >> a[i];
    for (int i = 0; i < 4; i++)
    {
        if (abs(a[i + 1] - a[i] > k))
        {
            k = abs(a[i + 1] - a[i]);
            d = a[i];
            r = a[i + 1];
        }
    }
    cout << d << ", " << r;
    cin.get(); cin.get();
}
Ты сам изначально писал код в *int*, теперь ты меня спрашиваешь о float, хотя задание изначально у тебя. Плюс переиначил в каком-то роде мой код и спрашиваешь о его работоспособности , у тебя там все хорошо??? 😕
 

bet.io

Известный
117
16
Ты сам изначально писал код в *int*, теперь ты меня спрашиваешь о float, хотя задание изначально у тебя. Плюс переиначил в каком-то роде мой код и спрашиваешь о его работоспособности , у тебя там все хорошо??? 😕
Хахахахах, да не, я просто некоторые переменные там заменил. Я бы протестил на числах, да не совсем понимаю как отбирается абсолютная велечина
 

traceattack

Известный
218
119
Хахахахах, да не, я просто некоторые переменные там заменил. Я бы протестил на числах, да не совсем понимаю как отбирается абсолютная величина
Абсолютная величина - это модуль обычный: | 1 | == 1 , | -1 | == 1 ;
Если смотреть допустим на примере этой задачи , есть некий массив с элементами 1 , 2 , -10 ;
Сначала рассматриваем первую пару и находим абсолютную величину их разности : | 1 - 2 | == 1
Теперь рассматриваем вторую пару и находим уже у нее : | 2 - (-10) | == 12
Т.к 12 > 1 , то мы выводим вторую пару , а именно числа 2 и -10 в любом порядке
 

bet.io

Известный
117
16
Абсолютная величина - это модуль обычный: | 1 | == 1 , | -1 | == 1 ;
Если смотреть допустим на примере этой задачи , есть некий массив с элементами 1 , 2 , -10 ;
Сначала рассматриваем первую пару и находим абсолютную величину их разности : | 1 - 2 | == 1
Теперь рассматриваем вторую пару и находим уже у нее : | 2 - (-10) | == 12
Т.к 12 > 1 , то мы выводим вторую пару , а именно числа 2 и -10 в любом порядке
Понял. Пасибо большое :3 В интернете посмотрел, там чего только не написано насчёт этой темы, ты сразу же ясно и простыми словами написал
 

legendabrn

Известный
Проверенный
121
171
как изменить в адресе памяти значение string:
44972

Адрес известен, нужен код на c++ для изменения
пытался через reinterpret_cast, не получается
 

Вложения

  • 1575388659215.png
    1575388659215.png
    1.8 KB · Просмотры: 201

ALF

Известный
Проверенный
320
539
как изменить в адресе памяти значение string:Посмотреть вложение 44972
Адрес известен, нужен код на c++ для изменения
пытался через reinterpret_cast, не получается
ну вот пример
C++:
char szPath[MAX_PATH] = { 0 };
strcpy(szPath, reinterpret_cast<char *>(0xC9ADD8)); // путь до gta_sa.exe
 

ALF

Известный
Проверенный
320
539
C++:
DWORD dwProtect = PAGE_EXECUTE_READWRITE;
VirtualProtect(reinterpret_cast<LPVOID>(samp.dll + 0xE5B98), size, dwProtect, &dwProtect);
strcpy(reinterpret_cast<char *>(samp.dll + 0xE5B98), "text");
VirtualProtect(reinterpret_cast<LPVOID>(samp.dll + 0xE5B98), size, dwProtect, nullptr);
 

ALF

Известный
Проверенный
320
539
Дарова всем, не особо по теме самого языка, но к нему относится. Я решил закомпилить файлик, но понял, что он не компилится. Выдает ошибку "файл не найден". Чекал в инете, ничего дельного не нашел, решил создать пустой файл (так в гайде было), не помогло, хз что делать. Сам визуал работает прекрасно, все компилится, но когда беру сурс для создания чего либо на сф апи, ничего не компилится. Компилится только фул мои проекту. Надеюсь на помощь новичку.
скриншот сделай
 

ALF

Известный
Проверенный
320
539
Он и не должен запускаться. Переходи по этому пути, там будет файл.
 

Fomikus

Известный
Проверенный
474
347
Как заставить работать при открытом диалоге?
C:
SF->getGame()->isKeyPressed(0x4B))
 

ufdhbi

Известный
Проверенный
1,463
867
Как заставить работать при открытом диалоге?
C:
SF->getGame()->isKeyPressed(0x4B))
C++:
// не забудь инициализировать хук (InitHooks())

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_KEYUP && wParam == VK_F2) {
        // code
    }
    return CallWindowProcA((WNDPROC)prevWndProc, hWnd, uMsg, wParam, lParam);
}

void InitHooks()
{
    prevWndProc = SetWindowLongA(FindWindowA(NULL, "GTA:SA:MP"), GWL_WNDPROC, (LONG)WindowProc);
}
 
  • Нравится
Реакции: sc6ut и Fomikus

mrdiimax

Известный
566
79
Как получить здоровье игрока через DK22 plugin SDK, я нашел CPed, но как вызвать оттуда функцию