1. Лучший говнокод

    В номинации:
    За время:
  2. C# / Говнокод #3628

    +116

    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
    public void Parse(string sqlScript)
    {
    	batches = new List<string>();
    	State state = State.WaitingGO;
    	StartNewBatch();
    	for(position = 0; position < sqlScript.Length; position++)
    	{
    		char c = sqlScript[position];
    		if(state == State.WaitingGO)
    		{
    			PutToBuffer(c);
    			if(IsWhiteSpace(c) || IsEndOfLineCharacter(c)) continue;
    			else if(c == 'g' || c == 'G') state = State.ReadingGO;
    			else
    			{
    				state = State.ReadingBatch;
    				FlushBuffer();
    			}
    		}
    		else if(state == State.ReadingGO)
    		{
    			PutToBuffer(c);
    			if(c == 'o' || c == 'O') state = State.ReadedGO;
    			else if(IsEndOfLineCharacter(c))
    			{
    				state = State.WaitingGO;
    				FlushBuffer();
    			}
    			else
    			{
    				state = State.ReadingBatch;
    				FlushBuffer();
    			}
    		}
    		else if(state == State.ReadedGO)
    		{
    			if(IsWhiteSpace(c) || IsEndOfLineCharacter(c))
    			{
    				state = State.WaitingGO;
    				FinishBatch();
    				StartNewBatch();
    			}
    			else
    			{
    				state = State.ReadingBatch;
    				PutToBuffer(c);
    				FlushBuffer();
    			}
    		}
    		else if(state == State.ReadingBatch)
    		{
    			PutToBatch(c);
    			if(IsEndOfLineCharacter(c)) state = State.WaitingGO;
    		}
    	}
    	if(state != State.ReadedGO) FlushBuffer();
    	FinishBatch();
    }
    
    private enum State
    {
    	WaitingGO,
    	ReadingGO,
    	ReadedGO,
    	ReadingBatch
    }

    Требовалось распарсить string с sql-текстом на отдельные транзакции (т.е. просто разбить текст по go).
    Функции для работы с Batch-ем не привожу и так уйма говнокода

    FedorFo, 02 Июля 2010

    Комментарии (23)
  3. C++ / Говнокод #3626

    +144

    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
    #include <iostream>
    #include <string>
    #include <ctime>
    using namespace std;
    
    template <typename T>
    void SwowArray(T arr[], int n); // #A
    
    template <typename T>
    void ShowArray(T * arr[], int n); // #B
    
    struct debts
    {
    	char name[50];
    	double amount;
    };
    int main() 
    {
    	int things[6] = {12, 34, 43, 21, 56, 666};
    	struct debts mr_dick[3] =
    	{
    		{"Pizdabol Ivan", 999.0},
    		{"Xuesos Vasya", 45.0},
    		{"Prostitutka Alla", 548.0}
    	};
    
    	double * pedo[3];
    	for(int i = 0; i < 3; i++)
    	{
    		pedo[i] = &mr_dick[i].amount;
    	}
    	
    	cout << "Trololo Mr.Dick: \n";
    	ShowArray(things, 6);
    	cout << "Listening Debilov: \n";
    	ShowArray(pedo, 3);
    	cin.ignore();
    	cin.get();
    	return 0;
    }
    // #A
    
    template <typename T> void ShowArray(T arr[], int n)
    {
    	cout << "Template A \n";
    	for(int i = 0; i < n; i++)
    		cout <<arr[i]<<" ";
    	cout << endl;
    }
    
    template <typename T> void ShowArray(T * arr[], int n)
    {
    	cout << "Template B \n";
    	for(int i = 0; i<n; i++)
    		cout <<*arr[i]<< " ";
    	cout << endl;
    }

    не могу понять почему выводится ошибка, как бы не должно ее быть, компилятор указывает на 34 строку

    trololo101010, 02 Июля 2010

    Комментарии (23)
  4. Java / Говнокод #3569

    +107

    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
    /**
    	 * Проверяет переданную строку на пустую или null
    	 * @param str
    	 * @return
    	 */
    	public static boolean isEmpty(String str) {
    		if (str == null)	return true;
    		if (str.isEmpty())	return true;
    		if (str.length()==0)     return true;
    		return false;
    	}
    	public static boolean isHtmlLink(String link) {
    		if (StringTools.isEmpty(link)) 		   return false;		 
    		if (!link.toLowerCase().startsWith("http:")) return false;
    		return true;
    	}
    	/**
    	 * resolves full link by taking baseLink & relative link  
    	 * @param link
    	 * @param baseURI
    	 * @return
    	 */
    	public static String resolveLink(String link, String baseURL){
    		try{
    			if (baseURL==null)			
    				return (link==null)? "": link;
    			if (link==null || link.isEmpty())
    				return "";
    			return java.net.URI.create(baseURL).resolve(link).toASCIIString();
    		}
    		catch(Exception _){
    			return "";
    		}
    	}

    рефакторил свой старый код писаный у прошлом годе
    стыдно....

    3.14159265, 25 Июня 2010

    Комментарии (23)
  5. VisualBasic / Говнокод #3566

    −101

    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
    For i = 0 To KolVoprTest - 1
                Select Case i
                    Case 0
                        Form2.B1.Text = PravOtvetS(i)
                    Case 1
                        Form2.B2.Text = PravOtvetS(i)
                    Case 2
                        Form2.B3.Text = PravOtvetS(i)
                    Case 3
                        Form2.B4.Text = PravOtvetS(i)
                    Case 4
                        Form2.B5.Text = PravOtvetS(i)
                    Case 5
                        Form2.B6.Text = PravOtvetS(i)
                    Case 6
                        Form2.B7.Text = PravOtvetS(i)
                    Case 7
                        Form2.B8.Text = PravOtvetS(i)
                    Case 8
                        Form2.B9.Text = PravOtvetS(i)
                    Case 9
                        Form2.B10.Text = PravOtvetS(i)
                    Case 10
                        Form2.B11.Text = PravOtvetS(i)
                    Case 11
                        Form2.B12.Text = PravOtvetS(i)
                    Case 12
                        Form2.B13.Text = PravOtvetS(i)
                    Case 13
                        Form2.B14.Text = PravOtvetS(i)
                    Case 14
                        Form2.B15.Text = PravOtvetS(i)
                    Case 15
                        Form2.B16.Text = PravOtvetS(i)
                    Case 16
                        Form2.B17.Text = PravOtvetS(i)
                    Case 17
                        Form2.B18.Text = PravOtvetS(i)
                    Case 18
                        Form2.B19.Text = PravOtvetS(i)
                    Case 19
                        Form2.B20.Text = PravOtvetS(i)
                End Select
            Next i

    Тут прям без фора и без кейса никак не обойтись.

    Index, 25 Июня 2010

    Комментарии (23)
  6. PHP / Говнокод #3543

    +159

    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
    $pass = 12345; 
    
    if (!isset($_POST['pass'])) { 
    $pass = $_GET['pass']; 
    } 
    else 
    { 
    $pass = $_POST['pass']; 
    } 
    if ($pass !== $pass) { 
    
    echo '<form method = "post" action = "pass.php?"> 
          Пароль:<br/> 
          <input name = "pass" type = "password"/><br/> 
          <input type = "submit" value = "OK"/></form>'; 
          } 
          echo 'Тебе сюда можна'; 
          ....блаблабла  
          } else { 
          echo 'Низя :)'; 
          break; 
          } 
          }

    >>Надо чтобы проверял если там дата[2] не пуста то показал форму инпут.
    жесть)))

    Aligan, 23 Июня 2010

    Комментарии (23)
  7. PHP / Говнокод #3522

    +144

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $_GET = array_merge($_GET, $_POST);
    	if($_GET['kalba']) {
    		$kalba=$_GET['kalba'];
    		if($_GET[admin]) echo "".$connect[1]."_".$connect[2]."_".$connect[3]."";
    	} else $kalba="LT";
    
    		if($_SESSION['kalba']="") {
    			session_start(); 
    			$_SESSION['kalba'] = $kalba;
    		} else $_SESSION['kalba'] = $kalba;

    вот кусок из сайта, как писал в http://govnokod.ru/3511#comment33961
    исходное форматирование сохранено

    продолжение причем еще следует

    зы: "kalba" переводится как "язык"

    Lure Of Chaos, 21 Июня 2010

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

    +137

    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
    /*
    sub iterm(i,ne(2),na(2),x(2),xx(2),d(2),p(2),mp,np,ii,im)
    shared nkp
    fl = 0
    FOR k = 1 TO na(0, i): ma = na(k, i): me = ne(k, i)
    FOR j = 1 TO mp
    x=x(j,ma): d=x(j,me)-x: x=x+p(1,i)*d: x(j,ma)=x: ad=ABS(d)
    IF ad > ABS(p(2, i) * x) AND it<im THEN fl = 1
    NEXT j, k: it=it+1: IF fl = 1 THEN ii = p(nkp, i) - 1 else it=0
     end sub: REM ИТЕР-БЛОК (мод.)
    */
    
     void iterm(int i, int ne[4][7],int na[3][7], float x[3][6],
    float d, float p[3][7], int mp, int np, int ii, int im)
    {extern int nkp; float xx,ad; static int it=0;
    int fl = 0, k, j, ma, me;
    for (k = 1; k<=na[0][ i];++k)
    { ma = na[k][ i]; me = ne[k][ i];
    for( j = 1;j<= mp;++j)
    {xx=x[j][ma]; d=x[j][me]-xx; xx=xx+p[1][i]*d; x[j][ma]=xx; ad=fabs(d);
    if( ad > fabs(p[2][ i] * xx) && it<im) fl = 1;
    }} it=it+1; if( fl == 1)  ii = p[nkp][ i] - 1; else it=0;
    } // ИТЕР-БЛОК (мод.)
    
    /*
    cls
    ? fnpr$;  REM ПОДГОТОВКА ДАННЫХ
    REM ОРГАНИЗУЮЩАЯ ПОДПРОГРАММА
    call op(ne(),na(),x(),s(),pr(),md(),n,mp,np,p(),mk,ki,im)
    ?: ?"Общее число итераций ="ki". Жми пробел.": S$=input$(1)
    */

    как обычно вместо того чтобы написать программу с нуля,был найден код на бейсике и начал безжалостно копипаститься в С
    ну и сам код на бэйсике естественно тоже говно

    tz-lom, 14 Июня 2010

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

    +136

    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
    #include <stdio.h>
    #include <string.h>
    int reg (char str[])
    {
    	int i;
    	int n=strlen(str);
    	for (i=0; i<n; i++)
    	if (str[i]<91) str[i]=str[i]+32;
    	return str[i];
    }
    int main ()
    {
    	char str[100]="OlololOlolOloLolOlooLololOlOllllOOOloLoloOlO";
    	int a=reg(str);
    	int i,n=strlen(str);
    	reg(str);
    	printf("%s",str);
    	return 0;
    }

    Программа собственно переводит в нижний регистр. Но как-то жестко написана. Очень сокрушаюсь, что нас еще не научили strwlr и strupr в институте. Оправдано такое написание или все же лучше пользоваться библиотечными функциями?

    ForEveR, 09 Июня 2010

    Комментарии (23)
  10. PHP / Говнокод #3370

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public static function getSizeformat($iNumber){
        $value = "-";
        if($iNumber){
          $iNumber = $iNumber/100000;
          $value = number_format($iNumber, 2, '.', '');
        }
        return $value;
      }

    Кусочек который пришел по наследству, судя по подписям в таблице на фронтэнде в итоге мы должны получить размер файлов в мегабайтах, но как то не получается... :)

    psych, 01 Июня 2010

    Комментарии (23)
  11. C# / Говнокод #3274

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    enum Bool
    {
        True,
        False,
        FileNotFound
    };

    Как оказывается Boolean может быть не только long, но и FileNotFound.

    Нашел зде©ь http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx

    HyperGeek, 19 Мая 2010

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