Няшная / Говнокод #27215 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
includelib  C:\Irvine\User32.Lib
includelib  C:\Irvine\Kernel32.Lib
includelib  D:\masm32\lib\Irvine32.lib
include     \masm32\include\Irvine32.inc

.data

data_1 dword  45

data_2 dword 29

msg byte ?

.code
main PROC
xor ebx,  ebx
xor eax,  eax
xor edx,  edx
xor esi,  esi

mov cl ,31
mov eax, data_1
mov esi , data_2


lm:

shl esi,   1
jnc one
cmp msg, 1

je two
shl eax,   cl

mov   msg, 1
mov ebx, data_1
jmp one

two:

shl ebx, cl
mov   msg, 0
add eax, ebx
add edx , eax
mov eax, data_1


one:

loop lm

mov eax , edx

call WriteInt
Call CrLf
	
	exit
main ENDP
END main

Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you
Though I know that evening's empire has returned into sand
Vanished from my hand
Left me blindly here to stand, but still not sleeping
My weariness amazes me, I'm branded on my feet
I have no one to meet
And the ancient empty street's too dead for dreaming
Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you
Take me on a trip upon your magic swirling ship
My senses have been stripped
My hands can't feel to grip
My toes too numb to step
Wait only for my boot heels to be wandering
I'm ready to go anywhere, I'm ready for to fade
Into my own parade
Cast your dancing spell my way, I promise to go under it
Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you

Madhouse_camomile Madhouse_camomile, (Updated )

Комментарии (2, +2)

Няшная / Говнокод #27199 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
int hlp_fix(char data[]  , char dump_alpha[] ){
int run = 0;
char prev = '0';
int count_bracket = 0 ;
puts(dump_alpha);
	
if(my_isdigit(data[0]) || my_isalpha(data[0])    ){
					 prev = data[0];
					}
	else if (data[0] == '('){
			count_bracket++;
			 prev = data[0];
	}
 			else{
				  
					puts("!!!  first error  !!!");
				  	exit(1);
				  }

for(run = 1;data[run] != '\0' ;run++){
	
	
	if ( data[run + 1]    == '\0'  &&  isOperator(prev )           ){
					
					puts("!!! error  isOperator  !!!");
				  	exit(1);
			}

	
	if(isgraph(data[run] )){
		
		if( secure_1(data[run], dump_alpha )  ) { 
		  printf("!!! error  this no list = %c !!!",  data[run] );
			exit(1);
		}
		
		if(prev == '.' ){
			
			if( data[run  - 1 ]   == '.' && my_isdigit(data[run])      )   {
						 prev = data[run];
				}
		
		 else{
				  	
					puts(" !!! error point !!!");
				  	exit(1);
				  }
			}
		
			else	if(my_isdigit(prev)  ){
				
			
			if(  data[run] == ')' )   {
					 	 prev = data[run];
					 	--count_bracket;
					 }
				
			else	if(	 (	my_isdigit(data[ run - 1  ])       	||	data[run - 1 ] == '.' || 
					
					isOperator(data[run]) )    ){
					 prev = data[run];
					
			}
					 
			else{
				  puts("error  isdigit");
				  	exit(1);
				  }
				}
		
			else	if(isOperator(prev)){
			
				if( (my_isdigit(data[run])  || my_isalpha(data[run] )       )   ){
						 prev = data[run];
				}
					else if ( data[run] == '('  ){
							 prev = data[run];
							 count_bracket++;
					}
					
			else{
				  	
					puts("error  isOperator");
				  	exit(1);
				  }
				}
			
			else	if(prev == '(' ){
			
				if( (my_isdigit(data[run] )  || my_isalpha(data[run] )  ) ){
					 prev = data[run];
				
				}
				else if ( data[run] == '('){
					 count_bracket++;
					 prev = data[run];
				}
				
				
				else{

Ни что так не вдохновляет на бейсджампинг без парашюта как "отлов ошибок" который не работает ))))
https://ideone.com/rjrwMQ

Oh-my-God-my-leg Oh-my-God-my-leg, (Updated )

Комментарии (2, +2)

Няшная / Говнокод #27191 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
void s_sort(int *a, size_t sz)
{
  if ((sz == 0) || (sz == 1))
  {
    return;
  }
  if (sz  == 2)
  {
    int a_max = a[0] > a[1] ? a[0] : a[1];
    int a_min = a[0] > a[1] ? a[1] : a[0];
    a[0] = a_min;
    a[1] = a_max;
    return;
  }
  s_sort(a, sz - 1);
  s_sort(a + 1, sz - 1);
  s_sort(a, sz - 1);
}

Крайне тупая по своей сути рекурсивная сортировка. Есть ли у нее название?

Вряд ли она имеет какое-то практическое применение именно как сортировка, но зато можно ее переписать на какой-нибудь Coq и об нее доказывать другие сортировки. Типа если какая-то там другая сортировка на всех возможных входных массивах выдает то же, что и выдает вот эта сортировка, то сортировка правильная.

j123123 j123123, (Updated )

Комментарии (18, +18)

Няшная / Говнокод #27185 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
chek_LD(void)
{
	LOCK_DETECT = read();
	if (LOCK_DETECT == SAVE_LOCK_DETECT)
	{
		return;
	}
	if (LOCK_DETECT == 0)
	{
		LOCK_DETECT = read();
		if (LOCK_DETECT == 0)
		{
			if (LOCK_DETECT != SAVE_LOCK_DETECT)
			{
				SAVE_LOCK_DETECT = 0;
			}
		}
	}
	else
	{
		delay_us(5);
		LOCK_DETECT = read();
		if (LOCK_DETECT == 1)
		{
			if (LOCK_DETECT != SAVE_LOCK_DETECT)
			{
				SAVE_LOCK_DETECT = 1;
			}
		}
	}
	return;
}

пришел на легаси проект. обожаю глобальные переменные на весь проект. еще больше обожаю логику)

viteo viteo, (Updated )

Комментарии (19, +19)

Няшная / Говнокод #27103 Ссылка на оригинал

0

  1. 1
#define LEAP_YEAR_OR_NOT(year)( ( year % 4 ) ? ( 0 ) : ( 1 ) )

Тот кто это писал, видимо рассуждал примерно так:

- В 2100 году это конечно забагует, но это будет уже не моя проблема.

j123123 j123123, (Updated )

Комментарии (36, +36)

Няшная / Говнокод #27067 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
jsonObj_t *__jsonLoad(const char *_str_json, size_t _len_str_json, jsonErr_t *_error) {
	jsonObj_t *obj_json = NULL;
	jsonObj_t *obj_json_children = NULL;	// Тут будет зиждется объект
	jsonObj_t *obj_json_tmp = NULL;	// Тут будет зиждется объект

	size_t index_in_json_str = 0;
	size_t len_key = 0;				// Размер извлекаемого ключа
	size_t len_value = 0;			// Размер извлекаемого значения
	size_t count_hooks = 0;			// Счётчик скобок, чтобы игнорировать их при чтении объекта

	uint8_t flag_found_separator = 0;		// Флаг чтения ключа
	uint8_t flag_found_start = 0;	// Флаг начало JSON-объекта
	// uint8_t flag_found_end = 0;		// Флаг окончания JSON-объекта
	uint8_t flag_read_key = 0;		// Флаг чтения ключа
	uint8_t flag_read_force_read = 0;	// Флаг-костыль для ситуаций, когда число последнее в массиве
	uint8_t flag_read_value = 0;	// Флаг чтения значения
	uint8_t flag_read_array = 0;	// Флаг чтения и обработки массива
	uint8_t flag_want_value = 0;	// Флаг ожидания значения
									// 	(выставляется после успешно прочитанного ключа)

	jsonErr_t json_err = JSON_OK;

	int res = 0;

	jsonValueType_t type_expected_value = JSON_VALUE_NONE;	// Ожидаемы тип считываемого значения

	char chr_open = '\0';
	char chr_close = '\0';

	const char *ptr_key = NULL;		// Указатель на начало извлекаемого ключа
	const char *ptr_value = NULL;	// Указатель на начало извлекаемого значения

	if (_error != NULL)
	{
		*_error = JSON_OK;
	}

	for (index_in_json_str = 0; index_in_json_str < _len_str_json; ++index_in_json_str)
	{
		// Если начало JSON-объекта не найдено, то пропускать
		if (flag_found_start == 0)
		{
			// Поиск начала JSON-объекта
			if (_str_json[index_in_json_str] == '{')
			{
				flag_found_start = 1;
			}

			if (_str_json[index_in_json_str] == '[')
			{
				flag_found_start = 1;
				flag_read_array = 1;
				flag_want_value = 1;
				flag_found_separator = 1;	// Сразу после знака "[" ожидается значение
			}

			continue;
		}

		// Обработка ключа 
		if ((flag_read_key == 0) &&\
			(flag_read_value == 0) &&\
			(flag_want_value == 0) &&\
			(flag_read_array == 0))
		{
			if (((_str_json[index_in_json_str] == '\"') || (_str_json[index_in_json_str] == '\'')))
			{
				chr_close = _str_json[index_in_json_str];
				flag_read_key = 1;	// Флаг начало чтения ключа

				if ((index_in_json_str + 1) != _len_str_json)
				{
					ptr_value = (const char *)(_str_json + index_in_json_str + 1);
					len_value = 1;
				}
				else
				{
					if (_error != NULL)
					{
						*_error = JSON_ERR_BAD_JSON;
					}

					jsonFree(obj_json);
					return (NULL);
				}
			}

			continue;
		}

		// Обработка значения
		if ((flag_want_value == 1) && (flag_read_value == 0))
		{
			// Поиск разделителя ключа и значения
			if (flag_found_separator == 0)
			{
				if ((_str_json[index_in_json_str] == ']') && (flag_read_array == 1))
				{
					// flag_found_end = 1;

Либа продакшеновая, эта функция около 470 строк кода, всё не вместилось... Нет, индусов у нас нет, как и ответственного за качество кода тоже) и да это ещё один парсер. Опирается ли он на спецификацию JSON? Нет конечно же, боже упаси, зачем? Зато она прекрасно понимает TRUE как true и FALSE как false, а ваши жалкие либы такого не могут

viktorokh96 viktorokh96, (Updated )

Комментарии (32, +32)

Няшная / Говнокод #27042 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
double func_atof(char *p){

	double	 integer = 0.0, div = 1.0 , fract = 0.0 , sign = 1.0;
        
        if(   *p == 45  ){
                  sign = -1.0, *p++ ; 
          }
	
        while ( isdigit(*p)  ) { 
	         
            integer = ( *p++ )  +  (10.0   *   integer)  -  48.0 ; 
	}
	
         if(*p == 46  ){

	            (*p++ ) ;
	
        while (  isdigit(*p) )  {
		
             fract = ( *p++ )  +  (10.0   *   fract)  -  48.0  ; 
		
             div *= 10;		

		}

    }
  
return    (integer  +   fract  / div )  * sign    ;
}

Наше всё Гайвер и Сорокин

Oh-my-God-my-leg Oh-my-God-my-leg, (Updated )

Комментарии (14, +14)

Няшная / Говнокод #26993 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
#include <stdio.h>

int main()
{
    goto a;
    h: printf("W"); goto i;
    g: printf(" "); goto h;
    m: printf("!"); goto n;
    i: printf("o"); goto j;
    n: printf("\n"); goto end;
    b: printf("e"); goto c;
    e: printf("o"); goto f;
    j: printf("r"); goto k;
    d: printf("l"); goto e;
    f: printf(","); goto g;
    a: printf("H"); goto b;
    k: printf("l"); goto l;
    l: printf("d"); goto m;
    c: printf("l"); goto d;
    end: ;
    
    return 0;
}

GDMaster GDMaster, (Updated )

Комментарии (39, +39)

Няшная / Говнокод #26982 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
/* https://habr.com/ru/company/piter/blog/491996/

Пусть в Python такая штука и называется генератором, в языке C++ она
называлась бы корутиной. Пример взят с этого сайта: https://masnun.com/2015/11/13/python-generators-coroutines-native-coroutines-and-async-await.html

def generate_nums():
     num = 0
     while True:
          yield num
          num = num + 1	

nums = generate_nums()
	
for x in nums:
     print(x)
	
     if x > 9:
*/

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>

#define START 0
#define YIELD 1

typedef struct 
{
  uint8_t jmpto;
  int num;
} coroutine_state;


int generate_nums(coroutine_state *state)
{
  switch(state->jmpto)
  {
    case START: break;
    case YIELD: goto yield;
  }
  while (true)
  {
    state->jmpto = YIELD; return state->num; yield: // какая питушня

    state->num = state->num + 1;
  }
}




int main(void)
{
  int x;
  coroutine_state st = {START, 0};
  while(true)
  {
    x = generate_nums(&st);
    printf("%d\n", x);

    if (x > 9)
    {
      break;
    }
  }
  return EXIT_SUCCESS;
}

Попробовал переписать эту ко-ко-корутину c питуха на Си - получилась какая-то херня нечитаемая. что еще раз доказывает, что корутины нахуй не нужны

К тому же в крестопарашном говне они требуют хип, а это нахуй не нужно на самом-то деле.

j123123 j123123, (Updated )

Комментарии (16, +16)

Няшная / Говнокод #26975 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
static int parse_num(const char *s, size_t *out) {
    if (s == NULL || *s == '\0')
        return -1;

    char *end = 0;
    errno = 0;
    uint64_t num = strtoull(s, &end, 0);
    if (errno != 0)
        return -1;

    if (*end != '\0')
        return -1;

    if (num > SIZE_MAX)
        return -1;

    *out = (size_t)num;
    return 0;
}

Какие же всё-таки удобные функции в стандартной няшколибе.

bormand bormand, (Updated )

Комментарии (76, +76)