Короткие примеры C++ кода-1 Кувшинов Д



Download 326,03 Kb.
bet4/23
Sana21.03.2020
Hajmi326,03 Kb.
#42712
1   2   3   4   5   6   7   8   9   ...   23
Bog'liq
Короткие примеры C

while (head)

{

auto next_head = next(head);

link_delete(head);

head = next_head;

}

}

///////////////////////////////////////////////////////////////////////////////

#include

#include
/// Звено списка -- одна строка.

struct Line

{

void *prev;

string line;

};
/// Вывести строку и удалить объект Line.

void print_and_delete(void *ptr)

{

auto line = (Line*)ptr;

cout << line->line << '\n';

delete line;

}
int main()

{

Line *head = nullptr;
// Чтение строк.

for (string line; getline(cin, line);)

{

Line *new_line = new Line;

new_line->line = line;

head = (Line*)insert_head(head, new_line);

}
// Вывод количества строк -- элементов списка.

cout << "\nLines: " << size(head) << "\n\n";
// Вывод строк в обратном порядке.

delete_list(head, print_and_delete);
cin.clear();

cin.ignore();
return EXIT_SUCCESS;

}

0400-solve_linear_0.cpp

// solve_linear_0.cpp

#include

#include

using namespace std;
// Решаем уравнение ax + b = 0.

double solve_linear(double a, double b)

{

// Неужели так просто?

return -b / a;

}
int main()

{

cout << "Solving ax + b = 0, enter a, b:\n";

cout.precision(16);

for (double a, b; cin >> a >> b;)

cout << "x == " << solve_linear(a, b) << endl;
return EXIT_SUCCESS;

}

0410-solve_linear_ref.cpp

// solve_linear_ref.cpp

#include

#include

using namespace std;
// Особое значение "бесконечное количество корней".

const int INFINITE_ROOTS = -1;
// Решаем уравнение ax + b = 0.

// Функция возвращает "количество корней".

// Корень записывает по ссылке root.

int solve_linear(double a, double b, double &root)

{

if (a == 0)

return b == 0? INFINITE_ROOTS: 0;

root = -b / a;

return 1;

}
int main()

{

cout << "Solving ax + b = 0, enter a, b:\n";

cout.precision(16);

for (double a, b, x; cin >> a >> b;)

{

const int roots = solve_linear(a, b, x);

if (roots == 0)

cout << "no roots\n";

else if (roots == INFINITE_ROOTS)

cout << "any number is a root\n";

else // один корень, записан в x

cout << "x == " << x << endl;

}
return EXIT_SUCCESS;

}

0420-switch_case_0.cpp

// switch_case_0.cpp

#include

#include

using namespace std;
// Особое значение "бесконечное количество корней".

const int INFINITE_ROOTS = -1;
// Решаем уравнение ax + b = 0.

// Функция возвращает "количество корней".

// Корень записывает по ссылке root.

int solve_linear(double a, double b, double &root)

{

if (a == 0)

return b == 0? INFINITE_ROOTS: 0;

root = -b / a;

return 1;

}
int main()

{

cout << "Solving ax + b = 0, enter a, b:\n";

cout.precision(16);

for (double a, b, x; cin >> a >> b;)

{

const int roots = solve_linear(a, b, x);

switch (roots)

{

case 0:

cout << "no roots\n";

break;

case INFINITE_ROOTS:

cout << "any number is a root\n";

break;

default: // один корень, записан в x

cout << "x == " << x << endl;

}

}
return EXIT_SUCCESS;

}

0430-switch_case.cpp

// switch_case.cpp

#include

#include

using namespace std;
// Особое значение "бесконечное количество корней".

const int INFINITE_ROOTS = -1;
// Решаем уравнение ax + b = 0.

// Функция возвращает "количество корней".

// Корень записывает по ссылке root.

int solve_linear(double a, double b, double &root)

{

if (a == 0)

return b == 0? INFINITE_ROOTS: 0;

root = -b / a;

return 1;

}
int main()

{

cout << "Solving ax + b = 0, enter a, b:\n";

cout.precision(16);

for (double a, b, x; cin >> a >> b;)

{

switch (solve_linear(a, b, x))

{

case 0:

cout << "no roots\n";

break;

case INFINITE_ROOTS:

cout << "any number is a root\n";

break;

default: // один корень, записан в x

cout << "x == " << x << endl;

}

}
return EXIT_SUCCESS;

}

0440-solve_quadratic.cpp

// solve_quadratic.cpp

#include

#include

#include

using namespace std;
// Особое значение "бесконечное количество корней".

const int INFINITE_ROOTS = -1;
// Решаем уравнение ax + b = 0.

// Функция возвращает "количество корней".

// Корень записывает по ссылке root.

int solve_linear(double a, double b, double &root)

{

if (a == 0)

return b == 0? INFINITE_ROOTS: 0;

root = -b / a;

return 1;

}
// Решаем уравнение ax2 + bx + c = 0.

// Функция возвращает "количество корней",

// до двух корней записывает по ссылкам.

int solve_quadratic(double a, double b, double c, double &root1, double &root2)

{

if (a == 0) // сводится к линейному

return solve_linear(b, c, root1);

// a != 0
const double d = b * b - 4.0 * a * c;

if (d < 0) // нет корней

return 0;

if (d == 0) // один корень

{

root1 = -b / (2.0 * a); // обратите внимание на скобки

return 1;

}
// два корня

const double ds = sqrt(d);

root1 = (-b - ds) / (2.0 * a);

root2 = (-b + ds) / (2.0 * a);

return 2;

}
// Вычислить значение квадратного трёхчлена в точке.

double quadratic(double a, double b, double c, double x)

{

return (a * x + b) * x + c;

}

int main()

{

cout << "Solving ax2 + bx + c = 0, enter a, b, c:\n";

cout.precision(16);

for (double a, b, c, x1, x2; cin >> a >> b >> c;)

{

switch (solve_quadratic(a, b, c, x1, x2))

{

case 0:

cout << "no roots\n";

break;

case INFINITE_ROOTS:

cout << "any number is a root\n";

break;

case 1: // один корень, записан в x1

cout << "x == " << x1 << ", error is " << quadratic(a, b, c, x1) << endl;

break;

case 2: // два корня, записаны в x1 и x2

cout << "x1 == " << x1 << ", error is " << quadratic(a, b, c, x1) << endl;

cout << "x2 == " << x2 << ", error is " << quadratic(a, b, c, x2) << endl;

break;

default:

cout << "???\n"; // невозможный случай

}

}
return EXIT_SUCCESS;

}

0450-assert_0.cpp

// assert_0.cpp

#include

#include

#include

#include // assert

using namespace std;
// Особое значение "бесконечное количество корней".

const int INFINITE_ROOTS = -1;
// Решаем уравнение ax + b = 0.

// Функция возвращает "количество корней".

// Корень записывает по ссылке root.

int solve_linear(double a, double b, double &root)

{

if (a == 0)

return b == 0? INFINITE_ROOTS: 0;

root = -b / a;

return 1;

}
// Решаем уравнение ax2 + bx + c = 0.

// Функция возвращает "количество корней",

// до двух корней записывает по ссылкам.

int solve_quadratic(double a, double b, double c, double &root1, double &root2)

{

if (a == 0) // сводится к линейному

return solve_linear(b, c, root1);

// a != 0
const double d = b * b - 4.0 * a * c;

if (d < 0) // нет корней

return 0;

if (d == 0) // один корень

{

root1 = -b / (2.0 * a); // обратите внимание на скобки

return 1;

}
// два корня

const double ds = sqrt(d);

root1 = (-b - ds) / (2.0 * a);

root2 = (-b + ds) / (2.0 * a);

return 2;

}
// Вычислить значение квадратного трёхчлена в точке.

double quadratic(double a, double b, double c, double x)

{

return (a * x + b) * x + c;

}

int main()

{

cout << "Solving ax2 + bx + c = 0, enter a, b, c:\n";

cout.precision(16);

for (double a, b, c, x1, x2; cin >> a >> b >> c;)

{

switch (solve_quadratic(a, b, c, x1, x2))

{

case 0:

cout << "no roots\n";

break;

case INFINITE_ROOTS:

cout << "any number is a root\n";

break;

case 1: // один корень, записан в x1

cout << "x == " << x1 << ", error is " << quadratic(a, b, c, x1) << endl;

break;

case 2: // два корня, записаны в x1 и x2

cout << "x1 == " << x1 << ", error is " << quadratic(a, b, c, x1) << endl;

cout << "x2 == " << x2 << ", error is " << quadratic(a, b, c, x2) << endl;


Download 326,03 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   23




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish