1. Си / Говнокод #5222

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    /* 
     * Тема: "Двумерные массивы"
     * Разработать программу для решения указанной ниже задачи.
     * Поиск строк или столбцов и преобразование матрицы оформить в виде подпрограммы.
     * Глобальные переменные не использовать.
     * В заданной матрице поменять местами столбцы, содержащие следующие элементы:
     * первый четный и последний нечетный.
     */
    #include <stdio.h>
    
    void raschet(int a[][20], int size, int *key) {
    	/*******************************************
    	 * Поиск столбцов и преобразование матрицы */
    	int i, j;							/* Индексы массива */
    	int buffer;							/* Временное место для копирования элементов столбца */
    	int first, second;					/* Первый и второй столбцы удовлетворяющие условию соответственно */
    	int flag = 1;						/* Переключатель найденых столбцов */
    	*key = 0;							/* Обнулить сообщение для главной программы о выполнении условия */
    	
    	
    	for(j=0; j<size; j++)						/* Перебор столбцов	*/
    		if(a[0][j]%2==0 && a[size-1][j]%2!=0) {	/* Если найден удовлетворяющий условию столбец	*/
    			if(flag == 1) {						/* Если найден первый столбец */
    				first = j;						/* Записать его положение в first */
    				flag = 2;						/* В случае нахождения след. столбца выполнится след. else if */
    				*key = 1;						/* Сообщить главной программе что найден 1 столбец уд. усл. */
    			}
    			else if(flag == 2) {				/* Если найден второй */
    				second = j;						/* Записать его положение в second */		
    				*key = 2;						/* Сообщение для главной программы о выполнении условия задачи */
    				for(i=0; i<size; i++) {			/* Перебор элементов столбцов*/
    					buffer=a[i][first];			/* Элемент столбца first копируется в buffer  */
    					a[i][first]=a[i][second];	/* Элемент столбца second копируется вместо эл-та first */
    					a[i][second]=buffer;		/* Элемент из buffer копируется в столбец second */
    				}
    				first = j;						/* Записать положение текущего столбца в first */
    			}
    		}		
    }	
    void main() {
    	int key;							/* Сообщение для главной программы о выполнении условия */
    	int i, j;							/* Индексы элементов масcивов */
    	int size = 8;							/* Размерность массива(матрицы) */ 
    	/***************
    	 * Ввод данных */
            int a[20][20] = {
                    {1, 2, 3, 4, 6, 8, 7, 2},
                    {1, 2, 3, 4, 1, 1, 2, 3},
                    {1, 2, 3, 4, 5, 3, 3, 3},
                    {2, 5, 7, 9, 3, 1, 2, 3},
                    {2, 5, 7, 9, 3, 1, 2, 3},
                    {2, 5, 7, 9, 3, 1, 2, 3},
                    {2, 5, 7, 9, 3, 1, 2, 3},
                    {2, 5, 7, 9, 3, 5, 2, 9}
            };  
    	/*************************
    	 * Вывод исходных данных */
    	system("cls");
    	printf("В заданной матрице поменять местами столбцы, содержащие следующие элементы:\n");
    	printf("первый четный и последний нечетный.\n");
    	printf("\nИсходная матрица имеет вид:\n");
    	for(i=0; i<size; i++) {
    		for (j=0; j<size; j++)
    			printf("%5d", a[i][j]);
    			printf("\n");
    	}
    	raschet(a, size, &key);				/* Функция поиска столбцов и преобразования матрицы */
    	/*********************
    	 * Вывод результата */ 	
    	if(key == 0)
    		printf("\nСтолбцов удовлетворяющих условию не найдено.");
    	else if(key == 1)
    		printf("\nНайден только один столбец удовлетворяющий условию.");
    	else {
    		printf("\nРезультирующая матрица имеет вид:\n");
    		for(i=0; i<size; i++) {
    			for (j=0; j<size; j++)
    			printf("%5d", a[i][j]);
    			printf("\n");
    		}
    	}
    	printf("\n\n");
    	printf("Конец!\n");
    	system("PAUSE");
    }

    http://ideone.com/3Qa2n оно выполняется !
    что тут говно, а что стерильно ?

    diimdeep , 12 Января 2011

    Комментарии (0)
  2. Си / Говнокод #5220

    +130

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    char unsigned c;
    DWORD m;
    DWORD n;
    int i = 0;
    BOOL b = TRUE;
    
    HANDLE hFile = CreateFile(szFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if (hFile == INVALID_HANDLE_VALUE) 
    { 
    	printf("Could not open File");
    	return NULL;
    } 
    // узнаем размер файла
    while (b)
    {
    	b = ReadFile(hFile, &c, 1, &m, NULL);
    	if (m == 0)
    	{
    		printf("STOP ");
    		printf("%i\n", i);
    		break;
    	}
    	i++;
    }

    собственно узнаем размер файла, что тут еще скажешь)

    dIsoVi, 11 Января 2011

    Комментарии (34)
  3. Си / Говнокод #5186

    +125

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    int function(void) {
        static int i, state = 0;
        switch (state) {
            case 0: /* start of function */
            for (i = 0; i < 10; i++) {
                state = 1; /* so we will come back to "case 1" */
                return i;
                case 1:; /* resume control straight after the return */
            }
        }
    }

    Нестандартное применение свитча.
    Тут оно нафиг не нужно.
    Источник: http://www.gamedev.ru/code/forum/?id=142536

    TarasB, 09 Января 2011

    Комментарии (83)
  4. Си / Говнокод #5176

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    void epilog()
    {  
    	fprintf(fvih,"\tINCLUDE\tstd.asm\n");
    	fprintf(fvih,"_KOM\tENDS\n");
    	fprintf(fvih,"_STEK\tSEGMENT USE16\tSTACK\n");
    	fprintf(fvih,"\tDW\t100 DUP (?)\n");
    	fprintf(fvih,"_DNOST\tDW\t?\n");
    	fprintf(fvih,"_STEK\tENDS\n");
    	if (kolglb > 0) {  
    		fprintf(fvih,"_DAN\tSEGMENT USE16\n");
    		for (i = 1; i <= kolglb; i++)
    			if (tabim[i].vidob == 1)      /* пеpеменная */
    				if (tabim[i].typ == int_t)
    					fprintf(fvih,"%s\tDW\t?\n",tabim[i].imja);
    				else
    					fprintf(fvih,"%s\tDD\t?\n",tabim[i].imja);
    		fprintf(fvih,"_DAN\tENDS\n");
    	}
    	if (est6_main)
    		fprintf(fvih,"\tEND\t_main\n");
    	else fprintf(fvih,"\tEND\n");
    	fprintf(fvih,";Компилятоp С0 от 9/10/92:\n;колич. ошибок %d\n",kolosh);	
    	printf("Компилятоp С0 от 9/10/92:\nколич. ошибок %d\n",kolosh);
    }
    
         /**********************************************/
         /*             Основная пpогpамма             */
         /**********************************************/
    int main(int agrc, char *argv[])
    {  
    	int i;
    	for (i=0; i<=255; i++) leksim[i]=osh;
    	leksim['+']=plus;  leksim['-']=minus;  leksim['*']=umn;
    	leksim['/']=del;   leksim['%']=ost;    leksim['=']=prisv;
    	leksim['<']=men;   leksim['>']=bol;    leksim['(']=lskob;
    	leksim[')']=pskob; leksim['{']=flskob; leksim['}']=fpskob;
    	leksim[',']=zpt;   leksim[';']=tchzpt; 
    
        /* множество начальных лексем выpажения */
    	nvir = st2[ident] | st2[chislo] | st2[minus] | st2[lskob];
    
    	/* мн-во нач-х лексем оп-pа */
    	noper = st2[flskob] | st2[ifsl] | st2[whilesl] | st2[retsl] | st2[tchzpt] | st2[dosl] | nvir; 
    	vhstr[0]=' '; 
    	vhstr[1]='\0'; 
    	usim = vhstr;kolglb =kolim =ef =	tipop =est6_main =kolosh =kmet =0;
    	is_leave_old = false;
    	fvh=fopen("C://p.c0","r");
    	//fvh=fopen(argv[1],"r");            /* откpыть входной файл  */
    	fvih=fopen("C://p.asm","w"); 
    	//fvih=fopen(argv[2],"w");          /* откpыть выходной файл */
    	if ((fvh == NULL) || (fvih == NULL))
    		oshibka(8);                      /*  файлы не откpылись */
    	else {
    		prolog();
    		while (!ef) {
    			chleks();
    			if (leksema == intsl) {              /* слово int        */
    				opisper(0); 
    				kolglb=kolim; 
    			}/*описание глоб-х пер-х*/
    			else if (leksema == longsl) {              /* слово int        */
    				opisper_long(0); 
    				kolglb=kolim; 
    			}/*описание глоб-х пер-х*/
    			else if (leksema == ident)      /* имя                 */
    				oprfun();                  /* опpеделение функции */
    			else if (!ef)    /* тpебуется опис-е пеp-х или ф-ции */
    				test(st2[intsl] | st2[ident],st2[pskob] | st2[tchzpt],3);
    		}
    		epilog();
    		fclose(fvh);
    	    fclose(fvih);
    	}
    	return 0;
    }

    qbasic, 07 Января 2011

    Комментарии (1)
  5. Си / Говнокод #5169

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    //********henry+ disable battery command after select disable battery, 2010.8.5 add bypass more command when EC FW update
    if (iflag_disabel_battery==1 
            && pRequest->RequestType == NvEcRequestResponseType_Battery
            && pRequest->RequestType == NvEcRequestResponseType_System
            && pRequest->RequestType == NvEcRequestResponseType_Gpio
            && pRequest->RequestType == NvEcRequestResponseType_Sleep
            && pRequest->RequestType == NvEcRequestResponseType_Keyboard
            && pRequest->RequestType == NvEcRequestResponseType_AuxDevice){
            //NvOsDebugPrintf("Henry: disable Battery command request! \n");
            //return NvSuccess-1;
            return NvSuccess; //2010.6.29 fix EC TimeOut
    }
    //***********************************************************************************************

    Генри хуйни не сделает!

    muromec, 06 Января 2011

    Комментарии (2)
  6. Си / Говнокод #5133

    +132

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    struct 
    {
    	unsigned char * low;  //младшая часть адреса
      	unsigned char * high; //страшая часть адреса(только младших 3 бита)
    } padr;
    
    void filladdr(unsigned int * addr) //подготовка адресных ног МК
    {
    	padr.low = (unsigned char *)addr;
    	padr.high = padr.low + 1;
    	PORTB = *padr.low;
    	PORTE &= 0x8;
    	PORTE |= *padr.high;
    
    }
    
    unsigned char readFromSRAM(unsigned int * adrss)
    {
    	char outD;
    	TRISD = 0xFF;
    	filladdr(adrss);
    	PORTA &= 0xFC;
    	NOP(); // задержка на время доступа
    	outD = PORTD;
    	PORTA |= 0x7;
    	return outD;
    }
    
    void writeToSRAM(unsigned int * adrss, unsigned char * data)
    {
    	TRISD = 0x0;
    	filladdr(adrss);
    	PORTD = *data;
    	PORTA &= 0xF8;
    	NOP();  // задержка на время доступа
    	PORTA |= 0x7;
    	PORTD = 0x0;
    }

    говнокод для работы с 2кб внешней SRAM памяти для микроконтролеров pic

    nice_penguin, 02 Января 2011

    Комментарии (41)
  7. Си / Говнокод #5069

    +141

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    char *nvram_get(int index, char *name)
    {
            /* Initial value should be NULL */
            char *recv = NULL;
    
            //LIBNV_PRINT("--> nvram_get\n");
            nvram_init(index);
    
            recv = nvram_bufget(index, name);
    
            //btw, we don't return NULL anymore!
            if (!recv)
                recv = "";
    
            //Always need close nvram
            nvram_close(index);
    
        return recv;
    }
    
    char *nvram_bufget(int index, char *name)
    {
            int idx;
            /* Initial value should be NULL */
            static char *ret = NULL;
    
            //LIBNV_PRINT("--> nvram_bufget %d\n", index);
            LIBNV_CHECK_INDEX("");
            LIBNV_CHECK_VALID();
            idx = cache_idx(index, name);
    
            if (-1 != idx) {
                    if (fb[index].cache[idx].value) {
                            //duplicate the value in case caller modify it
                            //Tom.Hung 2010-5-7, strdup() will cause memory leakage
                            //but if we return value directly, it will cause many other crash or delete value to nvram error.
                            ret = strdup(fb[index].cache[idx].value);
                            LIBNV_PRINT("bufget %d '%s'->'%s'\n", index, name, ret);
    
                            //btw, we don't return NULL anymore!
                            if (!ret)
                                ret = "";
    
                        return ret;
                    }
            }
    
            //no default value set?
            //btw, we don't return NULL anymore!
            LIBNV_PRINT("bufget %d '%s'->''(empty) Warning!\n", index, name);
            return "";
    }

    Кусочек кода из библиотеки работы с nvram для железок на SoC Ralink. Китайцы плакали, кололись о утечки памяти, но продолжали настойчиво мешать указатели на статические строки с указателями на динамически выделенные в куче...

    NiTr0man, 27 Декабря 2010

    Комментарии (49)
  8. Си / Говнокод #5060

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    // © Код Арсения
    #include <stdio.h>
    #include <conio.h>
    #define N 100
    int n,kol=1;  //одекватен до 6!
     
    void SAW(int *a,int *b)
    {
        *a-=*b;
        *b+=*a;
        *a=*b-*a;
         kol=kol+1;
    }
    
    void deduction(int A[])
    {
        int i;
        printf(" %5d : ",kol);
        for (i=0;i<n;i++)
            printf(" %d ",A[i]);
        printf("\n");
        if (kol%290==0)
            getch();
    }
    
    void Shift(int A[], int k)
    {
        int i;
        if(k<2)return;
        for (i=0;i<k-1;i++)
        {
             Shift(A, k-1);
             if (!(i>=2 && k%2==0))SAW(&A[k-1],&A[0]);
             else SAW(&A[k-1],&A[i-1]);
             deduction(A);
        } 
        Shift(A, k-1);
    }
    
    void main()
    {
        int A[N],i;
        printf("vvedite n\n");
        scanf("%d",&n);
        for (i=0;i<n;i++)
            A[i]=i+1;
        deduction(A);
        Shift(A,n);
        printf("\n %d \n",kol);
    }

    Классический вариант быдлокода в программе, которая печатает всевозможные комбинации перестановок цифр заданной длины. Для того чтобы поменять два значения местами используется отдельная функция SAW, которой передаются указатели на переменные (автор думает, что это круто), в самой же функции производится обмен значений, на которые указывают указатели без помощи дополнительной переменной (опять же автор считает, что это круто), причем, стоит обратить внимание, каким образом это делается (видимо операция XOR этому кодеру пока не известна). Далее классический стиль написания быдлокодера прослеживается буквально в каждой строчке, включая названия функций. Стоит также обратить внимание на оригинальную реализацию рекурсивной процедуры, проницательный читатель сразу же поймет смысл комментария в строке: int n,kol=1;//одекватен до 6!

    jkoff, 25 Декабря 2010

    Комментарии (265)
  9. Си / Говнокод #5057

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <time.h>
    #include <sys/types.h>
    
    int main(int argc, char ** argv)
    {
    //...
    time_t time0=time(NULL);
    //...
    if ((f=fopen(argv[1],"r"))==NULL)
    {
    	//...
    }
    while ((fscanf(f,"%i %s",&tim[i],buffer[i]))!=EOF)
    {
    	i++;
    	if (i>=n)
    	{
    		n=i+10;
    		tim=(int*)realloc(tim,n*sizeof(int));
    		buffer=(char**)realloc(buffer,n*sizeof(char*));
    		for (k=k; k<n; k++)
    		{
    			buffer[k]=(char*)realloc(buffer[k],256*sizeof(char));
    		}
    	}
    }
    if (fclose(f)==-1)
    {
    	//...
    }
    //------------finished reading input file-------------------
    //------------sorting (bubble =) )--------------------------
    while (flag)
    	{
    		flag=0;
    		for (j=0; j<=i-2; j++)
    		{
    			if (tim[j]>tim[j+1])
    			{
    				tmpi=tim[j];
    				tim[j]=tim[j+1];
    				tim[j+1]=tmpi;
    				tmpc=buffer[j];
    				buffer[j]=buffer[j+1];
    				buffer[j+1]=tmpc;
    				flag=1;
    			}
    		}
    	}
    //-----------executing------------------------------
    k=0;
    while(k<=i-1)
    {
    	if (tim[k]==(int)(time(NULL)-time0))
    	{
            if(!(pid=fork()))
            {
            	execv(buffer[k],NULL);
            }
            else
            {
            	k++;
            }
    	}
    }
    //...
    return 0;
    }

    Читает из файла таймер до запуска и имя программы. Я плакалъ...

    krems, 25 Декабря 2010

    Комментарии (7)
  10. Си / Говнокод #5026

    +141

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    void array_random_input(int *array, unsigned int *array_size)
    {
    	unsigned register int i, j;
    	for(i=0; i<(*array_size); i++)
    		for(j=0; j<(*array_size); j++)
    			*(array + (*array_size) * i + j) = rand()%100;
    }
    
    void array_recombination(int *array, unsigned int *array_size)
    {
    	unsigned register int i, j, tmp;
    	for(i=0; i<(*array_size)/2; i++)
    		for(j=0; j<(*array_size)/2; j++)
    			{
    				tmp = *(array + (*array_size) * i + j);
    				*(array + (*array_size) * i + j) = *(array + (*array_size) * ((*array_size)/2 + i) + ((*array_size)/2 + j));
    				*(array + (*array_size) * ((*array_size)/2 + i) + ((*array_size)/2 + j)) = tmp;
    			}
    			
    	for(i=0; i<(*array_size)/2; i++)
    		for(j=(*array_size)/2; j<(*array_size); j++)
    			{
    				tmp = *(array + (*array_size) * i + j);
    				*(array + (*array_size) * i + j) = *(array + (*array_size) * ((*array_size)/2 + i) + (j - (*array_size)/2));
    				*(array + (*array_size) * ((*array_size)/2 + i) + (j - (*array_size)/2)) = tmp;
    			}
    }
    
    //ardent greetings to my teacher F.S.V.! :)

    Условие задачи: необходимо создать динамический двумерный массив размерностью 2n и сделать перестановку крест накрест его четвертей. В качестве параметров все функции принимают указатели. Для пущего brainfuck'а доступ к элементам массива осуществлялся с использованием одномерной адресации (по другому никак не получалось :)
    Для сокращения привожу только функции наполнения массива случайными значениями и перестановки элементов.

    mr_visor, 23 Декабря 2010

    Комментарии (48)