Russian Qt Forum
Сентябрь 30, 2024, 16:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 5 6 [7]   Вниз
  Печать  
Автор Тема: Сколько строк кода должен писать в день программист Qt?  (Прочитано 53082 раз)
Bepec
Гость
« Ответ #90 : Сентябрь 30, 2013, 13:03 »

По секрету расскажу - можно. Но это заслуга уже привычки, нежели осознанного воздействия Улыбающийся

Как то выходным днём меня попросили одну программку  нафигачить. До семи вечера с семи утра сидел под чаем и зефиром Веселый Помойму тысяч 5 я настряпал Веселый Сам теперь боюсь в того монстра лезть Веселый
Записан
Alexu007
Гость
« Ответ #91 : Сентябрь 30, 2013, 20:31 »

Код
C
int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a, f[b]=d%--g,d/=g--,--b;d*=b);}
Вот образец компактности кода: одна строка вычисляет 800 знаков пи. Но с таким подходом останешься без штанов.
Записан
Bepec
Гость
« Ответ #92 : Сентябрь 30, 2013, 21:49 »

Берём VS + VS assist, щелкаем переформатирование, получаем строк 30 Веселый Вот так мгновенно повышаем стоимость программы Веселый
Записан
Alexu007
Гость
« Ответ #93 : Октябрь 01, 2013, 08:26 »

Кстати, в порядке оффтопа... никто не знает, какую математическую формулу (или физический принцип) реализует эта программа? Интересно просто. За один цикл вычисляет 4 цифры, если перед значащими цифрами нули - их не вычисляет, приходится добавлять принудительно (в оригинале это делает оператор printf("%.4d",e+d/a)). Вычисляет и 1600, и 3200 знаков Пи, если увеличивать в 2 раза значения с и f[], но начинает работать медленнее и с какого-то момента делает ошибки (скорее всего в результате преполнения переменных). Вот её код в развёрнутом виде (на билдере):

Код
C++ (Qt)
//вывод на экран строки
void print_str(int x)
{
static int Cx = 0;
static AnsiString str;
 
 
 Cx++;
 
 if (x < 10)   str += "0";
 if (x < 100)  str += "0";
 if (x < 1000) str += "0";
 
 str += IntToStr(x); // + " ";
 
 if (Cx % 20 == 0)
   {
   Form1 -> Memo1 ->  Lines -> Add(str);
   str = "";
   }
 
return;
}
 
 
 
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
AnsiString str;
 
unsigned int a = 10000;
unsigned int b = 0;
unsigned int c = 5600;
unsigned int d = 0;
unsigned int e = 0;
unsigned int f[5601];
unsigned int g = 0;
 
 
 Button1 -> Enabled = false;
 
 
 //заполняет массив значением а/5 = 2000
 for (b = 0; b < c+1; b++) f[b] = a/5;
 
 
 //вычисление
 while(c)
   {
   d = 0;
   g = c * 2;
 
   for (b = c; b > 1; b--)
     {
     d += f[b] * a;
     g--;
     f[b] = d % g;
     d /= g;
     g--;
     d *= b;
     }
 
 
 
   //вывод строки на экран
   print_str(e + d/a);
 
   c -= 14;
   e = d % a;
   }
 
 
return;
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #94 : Октябрь 01, 2013, 11:49 »

если перед значащими цифрами нули - их не вычисляет, приходится добавлять принудительно (в оригинале это делает оператор printf("%.4d",e+d/a)).
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const — тебя интересуют 2-й и 4-й параметры
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: 1 ... 5 6 [7]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.153 секунд. Запросов: 23.