- 1
- 2
- 3
- 4
n = strlen(pName);
name = new char[n + 1];
memset(name, 0, n + 1);
memcpy(name, pName, n);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+8
n = strlen(pName);
name = new char[n + 1];
memset(name, 0, n + 1);
memcpy(name, pName, n);
боянчик. std::string наверное религия не позволяет. а strdup() слишком С. oh wait...
+67
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Введите число:");
String data = "";
Integer x;
try {
data = in.readLine();
} catch (IOException ex) {
System.err.println(ex.getLocalizedMessage());
return;
}
try {
x = Integer.parseInt(data);
} catch(NumberFormatException ex) {
System.out.println("Вы ввели не число!");
return;
}
if(x <= 0) {
System.out.println("Число должно быть положительным!");
return;
}
HashMap friends_nums = new HashMap<Integer, Integer>();
for(int i = 0; i <= x; i++) {
int s = 0;
for(int y = 1; y < i; y++) {
if(i % y == 0) { s += y; }
}
int t = 0;
for(int y = 1; y < s; y++) {
if(s % y == 0) { t += y; }
}
if(t == i && s != i && !friends_nums.containsValue(i)) { friends_nums.put(i, s); }
}
if(friends_nums.isEmpty()) {
System.out.println("Дружественных пар не найдено!");
} else {
System.out.println("Найдены следующие дружественные числа:");
Object[] one = friends_nums.keySet().toArray();
Object[] two = friends_nums.values().toArray();
for(int i = 0; i<friends_nums.size(); i++) {
System.out.println(one[i] + " и " + two[i]);
}
}
}
Дружественными числами называются два различных натуральных числа, для которых сумма всех собственных делителей первого числа (сумма всех делителей, отличных от самого числа) равна второму числу и сумма всех собственных делителей второго числа равна первому числу. Примеры дружественных чисел: 220 и 284. Делители числа 220: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 (в сумме дают число 284); делители числа 284: 1, 2, 4, 71, 142 (в сумме 220). Примеры других пар дружественных чисел: 2620 и 2924, 17296 и 18416. Написать программу, которая по заданному натуральному числу N находит все пары дружественных чисел, не превосходящих N.
+35
void GetDPI ()
{
jclass c; jmethodID m; jobject o, dm; jfieldID fxdpi, fydpi;
c = env->FindClass ("android/util/DisplayMetrics");
m = env->GetMethodID (c, "<init>", "()V");
dm = env->NewObject (c, m);
fxdpi = env->GetFieldID (c, "xdpi", "F");
fydpi = env->GetFieldID (c, "ydpi", "F");
c = env->FindClass ("android/app/NativeActivity");
m = env->GetMethodID (c, "getWindowManager", "()Landroid/view/WindowManager;");
o = env->CallObjectMethod (appState->activity->clazz, m);
c = env->GetObjectClass (o);
m = env->GetMethodID (c, "getDefaultDisplay", "()Landroid/view/Display;");
o = env->CallObjectMethod (o, m);
c = env->GetObjectClass (o);
m = env->GetMethodID (c, "getMetrics", "(Landroid/util/DisplayMetrics;)V");
o = env->CallObjectMethod (o, m, dm);
xdpi = env->GetFloatField (dm, fxdpi);
ydpi = env->GetFloatField (dm, fydpi);
LOGI("dpi is (%f, %f)", xdpi, ydpi);
}
Пишем под ведроид, дёргаем жабьи методы
На жабе:
DisplayMetrics d = new DisplayMetrics;
getWindowManager.getDefaultDisplay.getMe trics(d);
xdpi=d.xdpi;
ydpi=d.ydpi;
+90
public enum TimeUnit {
NANOSECONDS {
public long toNanos(long d) { return d; }
public long toMicros(long d) { return d/(C1/C0); }
public long toMillis(long d) { return d/(C2/C0); }
public long toSeconds(long d) { return d/(C3/C0); }
public long toMinutes(long d) { return d/(C4/C0); }
public long toHours(long d) { return d/(C5/C0); }
public long toDays(long d) { return d/(C6/C0); }
public long convert(long d, TimeUnit u) { return u.toNanos(d); }
int excessNanos(long d, long m) { return (int)(d - (m*C2)); }
}
....
public long convert(long sourceDuration, TimeUnit sourceUnit) {
throw new AbstractMethodError();
}
public long toNanos(long duration) {
throw new AbstractMethodError();
}
public long toMicros(long duration) {
throw new AbstractMethodError();
}
public long toMillis(long duration) {
throw new AbstractMethodError();
}
public long toSeconds(long duration) {
throw new AbstractMethodError();
}
public long toMinutes(long duration) {
throw new AbstractMethodError();
}
public long toHours(long duration) {
throw new AbstractMethodError();
}
public long toDays(long duration) {
throw new AbstractMethodError();
}
abstract int excessNanos(long d, long m);
}
Но зачем?
+16
template<typename T1, typename T2, size_t OFFSET = 8>
struct EnumMult
{
template<T1 t1, T2 t2>
struct Static
{
static const size_t V = (t1 << OFFSET) | t2;
};
static size_t Dynamic(T1 t1, T2 t2)
{
return (t1 << OFFSET) | t2;
}
};
// example
#include <iostream>
enum Suit
{
SPADES,
CLUBS,
DIAMONDS,
HEARTS
};
enum Value
{
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING,
ACE
};
int main()
{
typedef EnumMult<Suit, Value> CardMult;
switch (CardMult::Dynamic(CLUBS, SEVEN))
{
case CardMult::Static<SPADES, ACE>::V:
std::cout << "ACE OF SPADES";
break;
case CardMult::Static<CLUBS, SEVEN>::V:
std::cout << "HOOK";
break;
default:
std::cout << "NOTHING SPECIAL";
}
std::cout << std::endl;
return 0;
}
Понадобилось обработать два enum'а конструкцией switch-case, подумал, что было бы круто сделать квадратный свитч-кейс, но пришла и другая идиотская идея: шаблон для декартова умножения двух енумов. Заранее извините, если паттерн известный.
+20
// заполнение массива случайными числами
template <typename T> void fill_array_with_random( T array[], size_t length ) {
for ( size_t i = 0; i < length; i++ ) {
array[i] = rand();
}
}
Главный недостаток - K&R indent style.
+66
if (mysql_num_rows(mysql_query("SELECT * FROM `usermail` WHERE `email` LIKE '%".$_POST['email']."%' "))) {
# email уже есть
} else {
# новый email
}
Проверка на наличие email в таблице. Через SELECT * и LIKE !!!
+140
http://demiart.ru/forum/journal_uploads4/j142469_1323852771.png
http://demiart.ru/forum/journal.php?user=142469
http://demiart.ru/forum/index.php?s=079089252ad62a33ea31e842aa83 e50a&showuser=15046
+94
/**
* Interface for string cleaners. Defines method that takes a string to perform cleaning and returns
* cleaned string.
*
* @author Король Абстракций.
* @version 1.0 29.04.2011
*
*/
public interface StringCleaner {
//---------------------------------------------------------------------------------------------
/**
* Cleans given string. Returns cleaned string.
* @param string String to clean
* @return Cleaned string
* @throws NullPointerException <code>If string == null</code>
* @since 1.0
*/
public String clean(String string);
//---------------------------------------------------------------------------------------------
}
// Далее реализации.
public abstract class SymbolStringCleaner implements StringCleaner { ... }
public final class AllSymbolStringCleaner extends SymbolStringCleaner { ... }
public final class RepeatedSymbolStringCleaner extends SymbolStringCleaner { ... }
public class TrimStringCleaner extends SymbolStringCleaner { ... }
public final class CombinedStringCleaner implements StringCleaner { ... }
// Пример использования.
public class StringCleanerFactory {
private static final char END_OF_LINE_SYMBOL = '\n';
public static synchronized StringCleaner createCommonStringCleaner() {
char[] symbolsToExclude = new char[] {' ', END_OF_LINE_SYMBOL};
StringCleaner repeatedSymbolsCleaner = new RepeatedSymbolStringCleaner(symbolsToExclude);
StringCleaner trimCleaner = new TrimStringCleaner(symbolsToExclude, true, true);
CombinedStringCleaner resultCleaner = new CombinedStringCleaner();
resultCleaner.add(repeatedSymbolsCleaner);
resultCleaner.add(trimCleaner);
return resultCleaner;
}
}
// В реале выходит что-то вроде
return str.trim().replace(" \n", '');
Очистка строк огнем инквизиции еше никогда не была настолько абстрактной.
P.S.
Я удалял этот StringCleaner API 3 раза, и каждый раз наши адепты стринг клинеров под любым
предлогом поднимали это г***о из анналов ада (svn history). Последний раз я сдался и этот
ёжик теперь живет с нами.
+164
function trim(s)
{
var i,j;
for (i = 0; i < s.length && s.charAt(i) == " "; i++);
for (j = s.length-1; j >= 0 && s.charAt(j) == " "; j--);
if (i<=j)
return s.substring(i, j+1);
else
return '';
}