- 1
- 2
- 3
- 4
- 5
int k = 0;
for (int i = 1; i<=str.length(); i++){
k = i;
}
System.out.println("dlina: "+k);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+73
int k = 0;
for (int i = 1; i<=str.length(); i++){
k = i;
}
System.out.println("dlina: "+k);
Счётчик длины строки....
+27
function makehash($str,$salt='',$strength='08'){
if (!$salt):
$salt = "";
for ($i = 0; $i < 22; $i++) {
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1);
}
endif;
return crypt($str, "$2a$".$strength."$".$salt);
}
no comments
+4
int eval (const Expr& e)
{
Match(e)
Case(const Value& x) return x.value;
Case(const Plus& x) return eval (x.e1)+eval(x.e2);
Case(const Minus& x) return eval(x.e1)−eval(x.e2);
Case(const Times& x) return eval(x.e1)∗eval(x.e2);
Case(const Divide& x) return eval(x.e1)/eval (x.e2);
EndMatch
}
Бьёрн Страуструп выбирает борщ.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3449.pdf
http://www.linux.org.ru/forum/development/9525806
Заметим, что не только Страуструп раскаялся в прошлом. Кармак с энтузиазмом рассказывает, как с головой погрузился в Haskell и Scheme, объясняет, почему хаскель невероятно крут и почему сегодня он бы, вероятно, сделал QuakeScheme вместо QuakeC. Он пишет на хаскеле порт wolf3D.
+130
#include <stdio.h>
int main()
{
int a = 5, b = 6;
void* go;
go = ( a > b )? &&true1: &&false1;
goto *go;
true1:
{
printf("%i > %i\n", a, b);
goto next1;
}
false1:
{
printf("%i <= %i\n", a, b);
}
next1:
a = 7;
go = ( a > b )? &&true2: &&false2;
goto *go;
true2:
{
printf("%i > %i\n", a, b);
goto next2;
}
false2:
{
printf("%i <= %i\n", a, b);
}
next2:
return 0;
}
В GCC есть такой экстеншен http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
Можно в goto передавать переменную и можно работать с адресами меток. В сочетании с тернарной условной операцией, этим можно заменить if
+13
#include <iostream>
#include <vector>
#include <stdlib.h>
#include <time.h>
using std::vector;
void print_vec(const vector<int> v)
{ /* Print Vector */
for(vector<int>::size_type i(0); i!=v.size(); ++i)
std::cout << v[i] << (i!=v.size()-1 ? "|":"\n");
}
bool sort_vec(const vector<int> v)
{ /* Return True if vector sorted */
bool b(true);
for(vector<int>::size_type i(v.size()-1);i!=0;--i)
if (v[i]<v[i-1]) {b=false;}
return b;
}
int main()
{
vector<int> VectorForNumber;
const unsigned int ConstMaxElement(10);
srand(time(NULL));
for(vector<int>::size_type i(0);i!=ConstMaxElement;++i)
VectorForNumber.push_back(rand() % 50); // Max Number. Unsigned int && 0<N!
while (not sort_vec(VectorForNumber))
{
print_vec(VectorForNumber);
std::swap(VectorForNumber[rand() % ConstMaxElement],VectorForNumber[rand() % ConstMaxElement]);
}
print_vec(VectorForNumber);
return 0;
}
Менять местами два элемента вектора до тех пор, пока он не станет отсортированным по возрастанию.
С выводом сортирует примерно за 30 секунд вектор из 10 элементов, без вывода - от 0.5-1 секунды.
−90
/**
* better,faster OLD SCHOOL HACKS ^^
* **/
public static function compareObject(obj1:Object, obj2:Object):Boolean {
var buffer1:ByteArray = new ByteArray();
buffer1.writeObject(obj1);
var buffer2:ByteArray = new ByteArray();
buffer2.writeObject(obj2);
// compare the lengths
var size:uint = buffer1.length;
if (buffer1.length == buffer2.length) {
buffer1.position = 0;
buffer2.position = 0;
// then the bits
while (buffer1.position < size) {
var v1:int = buffer1.readByte();
if (v1 != buffer2.readByte()) {
return false;
}
}
return true;
}
return false;
}
Сравнение объектов сериализацией, по моему такого тут еще не было...
−45
#include <iostream>
#include <conio.h>
using namespace std;
void iswap(int &n1, int &n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
int main()
{
int const n = 100;
int a[n];
for ( int i = 0; i < n; ++i ) { a[i] = n - i; cout << a[i] << " "; }
//заполняем массив для наглядности.
//-----------сортировка------------//
//сортирует по-возрастанию. чтобы настроить по-убыванию,
//поменяйте знаки сравнения в строчках, помеченных /*(знак)*/
int sh = 0; //смещение
bool b = false;
for(;;)
{
b = false;
for ( int i = 0; i < n; i++ )
{
if( i * 2 + 2 + sh < n )
{
if( ( a[i + sh] > /*<*/ a[i * 2 + 1 + sh] ) || ( a[i + sh] > /*<*/ a[i * 2 + 2 + sh] ) )
{
if ( a[i * 2 + 1 + sh] < /*>*/ a[i * 2 + 2 + sh] )
{
iswap( a[i + sh], a[i * 2 + 1 + sh] );
b = true;
}
else if ( a[i * 2 + 2 + sh] < /*>*/ a[ i * 2 + 1 + sh])
{
iswap( a[ i + sh], a[i * 2 + 2 + sh]);
b = true;
}
}
}
else if( i * 2 + 1 + sh < n )
{
if( a[i + sh] > /*<*/ a[ i * 2 + 1 + sh] )
{
iswap( a[i + sh], a[i * 2 + 1 + sh] );
b = true;
}
}
}
if (!b) sh++; //смещение увеличивается, когда на текущем этапе
//сортировать больше нечего
if ( sh + 2 == n ) break;
} //конец сортировки
cout << endl << endl;
for ( int i = 0; i < n; ++i ) cout << a[i] << " ";
_getch();
return 0;
}
Запостил как-то на вики как более короткая реализация с++, более понятная и главное - рабочая. Не признали. Сам смотрю - не понимаю че там написано )))
−40
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <string>
using namespace std;
static char ifnm[100];
string *tags = new string [100];
int tags_init(string stag[]){
int i=0;
stag[i++]="root";
stag[i++]="word";
stag[i++]="english";
stag[i++]="russian";
stag[i++]="russian2";
// stag[i++]="id";
return i;
};
int main(int argc,char *argv[]){
FILE *fp;
if(argc=0){printf("No file name\n");exit(0);}
strcpy(ifnm,argv[1]);
fp = fopen(ifnm, "r");
if (fp == NULL)exit(-1);
//Error;
char str[180];
int tn=tags_init(tags);
cout<<"<"<<tags[0]<<">"<<endl;
while(fgets(str, 180,fp))
{
fgets(str,180, fp);
//cout<<str<<endl;
char *pname;
pname = strtok (str,"-");
int ti=0;
cout<<"<"<<tags[1]<<">"<<endl;
ti=1;
while (pname != NULL && ti<=tn)
{
ti++;
cout<<"<"<<tags[ti]<<">"<<endl;
printf ("\t%s\n",pname);
cout<<"</"<<tags[ti]<<">"<<endl;
pname = strtok (NULL, "-");
}
cout<<"</"<<tags[1]<<">"<<endl;
}
cout<<"</"<<tags[0]<<">"<<endl;
fclose(fp);
}
Преобразует текстовый файл в xml формат
+964
[Flags]
public enum ColumnState
{
Exist = 1,
NotExist = 2
}
Большинство енумов у нас помечено именно так.
+74
Ваш пароль должен состоять из 6-12 букв или цифр нормальной толщины шрифта.
Не говнокод, но...