-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
#include <iostream>
#include <ctime>
#include <string>
#include <random>
#include <algorithm>
#include <iomanip> // для ограничения количества вводимых симолов для std::cin
void compUsrWthCmptr(std::string userInput, std::string computerInput)
{
std::reverse(userInput.begin(), userInput.end());// Считаем правильно угаданные позиции
std::reverse(computerInput.begin(), computerInput.end());
int guessedPositions{ 0 };
for (int i = 0; (i < userInput.length()) && (i < computerInput.length()); ++i)
{
if (userInput[i] == computerInput[i])
{
guessedPositions++;
}
}
std::string::iterator it_userInput;
std::string::iterator it_computerInput;
it_userInput = std::unique(userInput.begin(), userInput.end()); // Удаляем повторяющиеся цифры
userInput.resize(std::distance(userInput.begin(), it_userInput));
it_computerInput = std::unique(computerInput.begin(), computerInput.end());
computerInput.resize(std::distance(computerInput.begin(), it_computerInput));
int guessedDigits{ 0 }; // Считаем количество правильно угаданных цифр без учета повторяющихся
for (int i = 0; i < userInput.length(); ++i)
{
for (int x = 0; x < computerInput.length(); ++x)
{
if (userInput[i] == computerInput[x])
{
guessedDigits++;
}
}
}
std::cout << " Угадано: " << guessedDigits << ". Соответствует своим разрядам: " << guessedPositions << std::endl << std::endl;
};
void startTheGame()
{
int pcsRandomNumber = getRandomNumber(0, 999); //Загаданое число.
std::cout << " Компьютер загадал трехзначное число от 0 до 999!\n" << " Это: " << pcsRandomNumber << std::endl << std::endl;
std::string pcNumber{ std::to_string(pcsRandomNumber) };
bool win = false;
do
{
int usersGuess = getUsersGuess();
std::string guess{ std::to_string(usersGuess) };
std::cout << " Ваш вариант : " << guess << std::endl;
compUsrWthCmptr(guess, pcNumber);
if (usersGuess == pcsRandomNumber)
{
win = true;
std::cout << " *** Вы угадали число " << pcsRandomNumber << "!***\n";
}
} while (!win);
};
int getUsersGuess()
{
while (true) // цикл продолжается до тех пор, пока пользователь не введет корректное значение
{
std::cout << " Введите коректное значение: ";
int a;
std::cin >> std::setw(3) >> a;
if (std::cin.fail()) // если предыдущее извлечение оказалось неудачным,
{
std::cin.clear(); // то возвращаем cin в 'обычный' режим работы
std::cin.ignore(32767, '\n'); // и удаляем значения предыдущего ввода из входного буфера
std::cout << " Предыдущее извлечение оказалось неудачным. Попытайтесь еще раз.\n\n";
}
else
{
if (a >= 1000 || a < 0)
{
std::cin.ignore(32767, '\n'); // удаляем лишние значения
std::cout << " Введенное число вне требуемого диапазонате. Попытайтесь еще раз.\n\n";
}
else
{
std::cin.ignore(32767, '\n'); // удаляем лишние значения
return a;
}
}
}
}
int getRandomNumber(int min, int max)
{
return static_cast<int>(rand() % (max - min + 1) + min);
}
int main()
{
setlocale(LC_ALL, "Russian");
srand(static_cast<unsigned int>(time(0)));
startTheGame();
return 0;
}
Начинающий говнокодер просит оценить его код. Где/что можно улучшить если возможно. Благодарю
//Напишите программу реализующую игру «Угадай число».Компьютер загадывает число от 0 до 999 (используйте генерацию случайных чисел),
//а пользователь угадывает его.На каждом шаге угадывающий делает предположение, а задумавший число — сообщает, сколько цифр из числа угаданы
//и сколько из угаданных цифр занимают правильные позиции в числе.Например, если задумано число 725 и выдвинуто предположение,
//что задумано число 523, то угаданы две цифры(5 и 2) и одна из них занимает верную позицию.
radionnazmiev,
25 Ноября 2020
-
+2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
ShipType Ship::getShipTypeByLength(int length)
{
switch (length) {
case 1: return BOAT;
case 2: return CRUISER;
case 3: return DESTROYER;
case 4: return BATTLESHIP;
case 5: return AIRCRAFT_CARRIER;
default:
std::cout << "No ship meets the given length: " << length << std::endl;
return ERROR_SHIP;
}
}
int Ship::getShipLengthByType(ShipType type)
{
switch (type) {
case BOAT: return 1;
case CRUISER: return 2;
case DESTROYER: return 3;
case BATTLESHIP: return 4;
case AIRCRAFT_CARRIER: return 5;
default:
std::cout << "No ship meets the given type: " << type << std::endl;
return 0;
}
}
int Ship::getShipAmountByType(ShipType type)
{
switch (type) {
case BOAT: return 4;
case CRUISER: return 3;
case DESTROYER: return 2;
case BATTLESHIP: return 1;
case AIRCRAFT_CARRIER: return 1;
default:
std::cout << "No ship meets the given type: " << type << std::endl;
return 0;
}
}
Coordinates Ship::getFirstBlockCoordinatesByShipData(int x, int y, int length, Orientation orientation)
{
Coordinates result;
if (orientation == HORIZONTAL) {
result.x = x - (length / 2);
result.y = y;
} else {
result.x = x;
result.y = y - (length / 2);
}
return result;
}
Coordinates Ship::getLastBlockCoordinatesByShipData(int x, int y, int length, Orientation orientation)
{
Coordinates result;
if (orientation == HORIZONTAL) {
result.x = x + (length / 2) + (length % 2) - 1;
result.y = y;
} else {
result.x = x;
result.y = y + (length / 2) + (length % 2) - 1;
}
return result;
}
Вот некоторые полезные функции из игры «Морской Бой», которую я зачем-то написал.
oaoaoammm,
21 Ноября 2020
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
#include <iostream>
using namespace std;
int del(int s)
{
int k = 0;
for (int i = 1;i <= 20;i++)
{
if (s % i == 0)
{
k++;
};
};
return k == 20;
}
int main()
{
unsigned long int q = 1;
for (int i = 1;i <= 20;i++)
{
q = q*i;
}
for (int i=1;i<=q;i++)
{
if (del(i))
{
cout << i;
break;
}
}
return 0;
}
2520 - самое маленькое число, которое делится без остатка на все числа от 1 до 10.
Какое самое маленькое число делится нацело на все числа от 1 до 20?
Что за неоптимизированное говно я сейчас сделал.........
NikEral7,
19 Ноября 2020
-
0
- 1
- 2
- 3
- 4
pituhs.reserve(kurochkas.size());
for (auto& kurochka : kurochkas) {
pituhs.push_back(kurochka.snesti_jajichko());
}
reserve заебал.
Коллега (да, тот же самый) пихает его везде.
Я понимаю зачем это нужно, но блядь, я читаю на одну строку больше, чем мог бы, и лишний раз напрягаю мозг.
И это сливается со словом «reverse».
Кстати, оптимизаторы могли бы такую хуйню сами детектить, и резервировать сами.
3_dar,
12 Ноября 2020
-
+2
- 1
Class::Class(Pethu pethu) : pethu(std::move(pethu)) {
std::move заебал. Просто взял, блядь, — и заебал!
Чем это лучше передачи по ссылке?
guestinxo,
12 Ноября 2020
-
+1
- 1
- 2
using T = int;
0 .T::~T();
Чем-то меня эта (полностью валидная) коньструкция очаровала.
gost,
12 Ноября 2020
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
void two(string str, int *mstr,int l) //Замена цифр в строке
{
string base[10] = { "ноль","один","два","три","четыре","пять","шесть","семь","восемь","девять" }; //Строки для замены
int i,j,t;
for (i = 0;i < l;i++)
{
str.insert(mstr[i]+1, base[atoi(&str[mstr[i]])]); //Вставка после числа в строку
t = base[atoi(&str[mstr[i]])].length(); //Смещение последующих чисел в строке
str.erase(mstr[i], 1); //Удаление цифры в строке
for (j = i; j < l;j++) //Новые позиции чисел в строке
{
mstr[j] += t-1;
}
}
cout << "Изменённая строка: " << str << endl;
}
По заданию требовалось обработать символьную строку так, чтобы цифры записывались числительными. В этой функции идет замена цифр в строке. Массив str - строка символов, mstr - int массив, куда записывается позиция числа в строке (т.е в строке aaaa1aaa mstr[0]=4), а l - количество чисел в строке.
Код не мой. Это ад. Неработающий.
Сидел, ржал.
ShadowCat,
07 Ноября 2020
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
//библиотеки cuda_runtime.h и device_launch_parameters.h
//для работы с cyda
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include<vector>
#include<string>//для getline
#include <stdio.h>
#include<fstream>
using namespace std;
__global__ void Upload_to_GPU(unsigned long long *Number,unsigned long long *Stepn, bool *Stop,unsigned long long *INPUT,unsigned long long *max) {
int thread = threadIdx.x;
unsigned long long MAX_DEGREE_OF = max[0];
int X = thread;
unsigned long long Calculated_number = 1;
unsigned long long Current_degree_of_number = 2;
unsigned long long Original_numberP = INPUT[0];
Stop[thread] = false;
bool BREAK = false;
if (X!=0&&X!=1) {
while (!BREAK) {
if (Current_degree_of_number <= MAX_DEGREE_OF) {
Calculated_number = 1;
for (int counter = 0; counter < Current_degree_of_number; counter++) {
Calculated_number *=X;
}
if (Calculated_number == Original_numberP) {
Stepn[thread] = Current_degree_of_number;
Number[thread] = X;
Stop[thread] = true;
BREAK = true;
}
Current_degree_of_number++;
}
else { BREAK = true; }
}
}
}
https://habr.com/post/525892/
> Сравнение времени выполнения алгоритма на CPU и GPU
gost,
31 Октября 2020
-
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
// https://github.com/dotnet/coreclr/blob/a9f3fc16483eecfc47fb79c362811d870be02249/src/vm/i386/cgenx86.cpp#L1613
PCODE DynamicHelpers::CreateHelperWithTwoArgs(LoaderAllocator * pAllocator, TADDR arg, TADDR arg2, PCODE target)
{
#ifdef UNIX_X86_ABI
BEGIN_DYNAMIC_HELPER_EMIT(23);
#else
BEGIN_DYNAMIC_HELPER_EMIT(17);
#endif
#ifdef UNIX_X86_ABI
// sub esp, 4
*p++ = 0x83;
*p++ = 0xec;
*p++ = 0x4;
#else
// pop eax
*p++ = 0x58;
#endif
// push arg
*p++ = 0x68;
*(INT32 *)p = arg;
p += 4;
// push arg2
*p++ = 0x68;
*(INT32 *)p = arg2;
p += 4;
#ifdef UNIX_X86_ABI
// mov eax, target
*p++ = 0xB8;
*(INT32 *)p = target;
p += 4;
#else
// push eax
*p++ = 0x50;
#endif
*p++ = X86_INSTR_JMP_REL32; // jmp rel32
#ifdef UNIX_X86_ABI
*(INT32 *)p = rel32UsingJumpStub((INT32 *)p, (PCODE)DynamicHelperArgsStub);
#else
*(INT32 *)p = rel32UsingJumpStub((INT32 *)p, target);
#endif
p += 4;
END_DYNAMIC_HELPER_EMIT();
}
Функция из дотнеткора, которая нахерачивает опкодов куда-то.
j123123,
28 Октября 2020
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
// удалить cookie
void delete_cookies() {
cout << "Set-Cookie: login = ololo; Max-Age=0\n";
cout << "Set-Cookie: sid = ololo; Max-Age=0\n";
}
// ...
// вывод списка изображений
if(cur_pic>1)
{
cout << "<a href='http://[DELETED URL]/?"<<cur_pic-1<<"' align='middle'> Previous </a>";
}
if(cur_pic==1)
{
cout << "<a href='http://[DELETED URL]/?"<< 1 <<"' align='middle' style='color:#00ff00'> 1 </a>";
}
else
{
cout << "<a href='http://[DELETED URL]/?"<< 1 <<"' align='middle' > 1 </a>";
}
if(cur_pic==2)
{
cout << "<a href='http://[DELETED URL]/?"<< 2 <<"' align='middle' style='color:#00ff00'> 2 </a>";
}
else
{
cout << "<a href='http://[DELETED URL]/?"<< 2 <<"' align='middle' > 2 </a>";
}
CGI-приложение на C++ это весело!
groser,
25 Октября 2020