+148
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
int main()
{
int chisl,znam,cel;
Fraction fA,fB,fC;
cout<<"Vvedite fA v vide dvux 4isel\n";cin>>fA.chisl>>fA.znam;
cout<<"Vvedite fB v vide dvux 4isel\n";cin>>fB.chisl>>fB.znam;
cout<<"Vvedite celoe chislo\n";cin>>cel;
if ((fA.znam!=0)&&(fB.znam!=0)&&(cel!=0))
{
fC=fA+fB;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Summa: "<< chisl << "/" << znam <<'\n';
else
cout<<"Summa: "<< chisl <<'\n';
fC=fA-fB;
fC.getFraction(chisl,znam);
if ((znam!=1)&&(chisl!=0))
cout<<"Raznost: "<< chisl << "/" << znam <<'\n';
else
cout<<"Raznost: "<< chisl <<'\n';
fC=fA*fB;
fC.getFraction(chisl,znam);
if ((znam!=1)&&(chisl!=0))
cout<<"Proizvedenie: "<< chisl << "/" << znam <<'\n';
else
cout<<"Proizvedenie: "<< chisl <<'\n';
fC=fA/fB;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0)&&(znam!=0))
cout<<"Chastnoe: "<< chisl << "/" << znam <<'\n';
else if(znam==0)
cout<<"Chastnogo drobei ne sushestvuet\n";
else
cout<<"Chastnoe: 0\n";
fC=fA+cel;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Summa 1 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Summa 1 drobi i celogo 4isla: "<< chisl <<'\n';
fC=fA-cel;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Raznost 1 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Raznost 1 drobi i celogo 4isla: "<< chisl <<'\n';
fC=fA*cel;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Proizvedenie 1 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Proizvedenie 1 drobi i celogo 4isla: "<< chisl <<'\n';
fC=fA/cel;
fC.getFraction(chisl,znam);
if ((znam!=1)&&(chisl!=0))
cout<<"Chastnoe 1 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Chastnoe 1 drobi i celogo 4isla: 0\n";
fC=fB+cel;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Summa 2 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Summa 2 drobi i celogo 4isla: "<< chisl <<'\n';
fC=fB-cel;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Raznost 2 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Raznost 2 drobi i celogo 4isla: "<< chisl <<'\n';
fC=fB*cel;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Proizvedenie 2 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Proizvedenie 2 drobi i celogo 4isla: "<< chisl <<'\n';
fC=fB/cel;
fC.getFraction(chisl,znam);
if ((znam!=1)&&(chisl!=0))
cout<<"Chastnoe 2 drobi i celogo 4isla: "<< chisl << "/" << znam <<'\n';
else
cout<<"Chastnoe 1 drobi i celogo 4isla: 0\n";
fC=~fA;
fC.getFraction(chisl,znam);
if((znam!=1)&&(chisl!=0))
cout<<"Sokrashennaya drob ravna: "<< chisl << "/" << znam <<'\n';
else
cout<<"Sokrashennaya drob ravna: "<< chisl <<'\n';
}
else
cout<<"Znamenatel drobi ili celoe chislo raven nulu, poetomu drobi net"<<'\n';
return 0;
}
Задача. Определить класс натуральная дробь, объекты которого числитель и знаменатель. Надо перегрузить операторы сложения, вычитания, умножения, делания и сокращения дробей, а так же сложения, вычитания, умножения и деления дроби и целого числа. То есть калькулятор дробей фактически. Написал, как-то жестоко получилось. Добавлю сразу, чтобы не было лишних разговоров. Это не задание в универе, сессия закончилась, каникулы, это для интереса, смотрю то, что мы еще не проходили. Кажется условий слишком много, короче ведь можно сделать?
ForEveR,
15 Июня 2010
+160
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
void check( const elemType eps = std::numeric_limits<elemType>::epsilon() ){
count = 4;
int isAB=0, isAC=0, isAD=0, isBC=0, isBD=0, isCD=0;
if(A==B) isAB = 1;
if(A==C) isAC = 1;
if(A==D) isAD = 1;
if(B==C) isBC = 1;
if(B==D) isBD = 1;
if(C==D) isCD = 1;
if(isAB) {B=C;C=D;--count;}
if(isAC) {C=D;--count;}
if(isAD) {--count;}
if(isBC) {C=D;--count;}
if(isBD) {--count;}
if(isCD) {--count;}
if(count<3){std::cerr <<"Warning: Bad Frame.\n";}
}
Есть структура. В ней четыре поля. Два любых поля могут совпадать, могут не совпадать. Если два поля совпадают, то лишнее нужно удалить и установить счетчик в 3. Если больше двух полей совпадают сообщить об ошибке. Как это попроще (покрасивше) это сделать в стиле cpp?
blackhearted,
15 Июня 2010
+154
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
//TransFunc.h
//Девиз
#ifndef MyOwn
#define MyOwn
#define Blackjack J♠
#define Hookers
#endif
class TransferFunction
{
private:
//...
class Polynom
{
Polynom(TransferFunction * Base); //Ссылка на базовый класс обязательна!
//...
}
Polynom *Numerator, *Denominator;
//...
class TransferProcess
{
TransferProcess(TransferFunction * Base); //Ну куда же я без него...
DynamicArray<double> TransGraphic; //Данные графика.
//...
}
TransferProcess * TrancProc;
//...
class SystemOptimisator
{
SystemOptimisator(TransferFunction * Base); //Именно так и никак иначе.
TransferFunction * TempFunction; //Это я так, на всякий случай...
Polynom *Backup_Numerator, *Backup_Denominator;
DynamicArray<Polynom> CorrectingDevice; //А чо? Работает ведь...
//...
}
SystemOptimisator * Opt;
//Тут ещё классы "Matrix", "Vector", "Report" и многие другие.
publuc:
TransferFunction();
~TransferFunction();
void Optimize();
};
Краткость - сестра таланта:-)
Захотелось мне удивить преподавателя (в программировании он не особо подкован (впрочем, как и я :-) )) короткой и простой "программой". Оно работало, до определенного момента, когда я попытался вставить ещё один класс... Потом я, конечно, всё переписал, по-человечески структурировав и избавившись от DynamicArray, но эти грабли я запомнил на всю жизнь.
maniac,
14 Июня 2010
+161
- 1
- 2
- 3
- 4
- 5
QString sq(int deep, QString table, QString field, bool fin = false){
if(fin) return sq(deep, table, field)+ ";";
if(!deep) return "select min(" + field + ") from " + table;
return "select " + field + " from " + table + " where " + field + " in(" + sq(deep-1, table, field) + ")";
}
Так изнутри клиентского кода двоичным поиском выясняется, какое у БД ограничение на количество вложенных подзапросов.
kit,
14 Июня 2010
+162
- 1
- 2
- 3
- 4
- 5
bool GenerateException(int Code)
{
assert(false);
return false; //WTF??? Нужно перерефакторить.
};
Ещё одно проектное решение...
Говногость,
13 Июня 2010
+165
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
char *ptr1;
char *ptr2;
//...
try {
throw ptr2 - ptr1;
}
catch (int e) {
std::cout << "exception addr dif" << e << std::endl;
}
Говногость,
13 Июня 2010
+152
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
typedef signed int s32;
//...
void SomeStruct::SomeFunc(const char* ipImageName /*, ... */ )
{
// ...
s32 imageNameSize = strlen(ipImageName) * sizeof(char) + 1;
this->mpImageName = new char[imageNameSize];
strcpy(this->mpImageName, ipImageName);
// ...
}
А теперь представим, что вместо char будет wchar_t... ...автор - лид-программист...
Kirinyale,
13 Июня 2010
+158
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
#include <math.h>
#include <stdio.h>
double zero = 0, three = 3, four = 4;
class Complex
{
public:
double &x, &y;
Complex() : x(zero), y(zero) { }
Complex( double &z ) : x(y), y(z) { }
Complex( double &_x, double &_y ) : x(_x), y(_y) { }
};
double square( double const &x ) { return x * x; }
double absValue( Complex &c ) { return sqrt( square(c.x)+square(c.y) ); }
int main()
{
Complex c(four);
printf( "absolute value is %g\n", absValue( c ) );
return 0;
}
говно отсюда http://www.gimpel.com/html/bugs.htm
xXx_totalwar,
13 Июня 2010
+158
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
double** QRSLAU_check(matrix n1, matrix n0, double eps){
double** x;
x = (double**) calloc(2,sizeof(double*));
x[0]= (double*) calloc(n1.i,sizeof(double));
x[1]=(double*) calloc(n1.i,sizeof(double));
for (int a=0; a<n1.i; a++){ x[0][a]=1; x[1][a]=1;}
for (int a=0; a<n1.i; a++)
for (int b=a+1; b<n1.i; b++)
if(n1.M[b][a]>eps || n1.M[b][a]<-eps) x[0][a]=0;
for (int a=0; a<n1.i-1; a++)
if(((n1.M[a][a]+n1.M[a+1][a+1])-(n0.M[a][a]+ n0.M[a+1][a+1]))>eps ||
((n1.M[a][a]+n1.M[a+1][a+1])-(n0.M[a][a]+ n0.M[a+1][a+1])) <-eps ||
((sqrt(-(n1.M[a][a]*n1.M[a][a]+ n1.M[a+1][a+1]*n1.M[a+1][a+1]-2*n1.M[a+1][a+1]*n1.M[a][a]+4*n1.M[a][a+1]*n1.M[a+1][a])))-
(sqrt(-(n0.M[a][a]*n0.M[a][a]+ n0.M[a+1][a+1]*n0.M[a+1][a+1]-2*n0.M[a+1][a+1]*n0.M[a][a]+4*n0.M[a][a+1]*n0.M[a+1][a]))))>eps ||
((sqrt(-(n1.M[a][a]*n1.M[a][a]+ n1.M[a+1][a+1]*n1.M[a+1][a+1]-2*n1.M[a+1][a+1]*n1.M[a][a]+4*n1.M[a][a+1]*n1.M[a+1][a])))-
(sqrt(-(n0.M[a][a]*n0.M[a][a]+ n0.M[a+1][a+1]*n0.M[a+1][a+1]-2*n0.M[a+1][a+1]*n0.M[a][a]+4*n0.M[a][a+1]*n0.M[a+1][a]))))<-eps){
x[1][a]=0;
if(a==n1.i-2)x[1][a+1]=0;
}
else a++;
return x;
}
какая-та штука для QR-алгоритма и поиска собственных значений
Shiz89,
09 Июня 2010
+178
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
#ifndef TSTACK_H
#define TSTACK_H
#include <iostream.h>
using namespace std
template.......
Это начало программы "самостоятельно" написаной от руки на бумажке студентом с целью получения зачета по объектно ориентированному программированию. Дальше я читать не стал
klavdiev,
09 Июня 2010