Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Вычисление биномиального коэффициента







Биномиальный коэффициент — это коэффициент в разложении бинома Ньютона по степеням x.

 

int binomialCoefficient(int k, int n) { return (n==k || k==0)? 1: binomialCoefficient(k-1, n-1)+binomialCoefficient(k, n-1); }

 

Ханойские башни


#include " stdafx.h" void HanoyTown(int nLevel, char from, char to, char mid) { if (nLevel > 0) { HanoyTown(nLevel-1, from, mid, to); printf(_T(" %c ==> %c\n"), from, to); HanoyTown(nLevel-1, mid, to, from); } } int _tmain(int argc, _TCHAR* argv[]) { HanoyTown(3, 'A', 'B', 'C'); return 0; } /* Простой пример программы обработки списка, в которой используется массив структур. */#include < stdio.h> #include < stdlib.h> #define MAX 100 struct addr { char name[30]; char street[40]; char city[20]; char state[3]; unsigned long int zip; } addr_list[MAX]; void init_list(void), enter(void); void delete(void), list(void); int menu_select(void), find_free(void); int main(void){ char choice; init_list(); /* инициализация массива структур */ for(;;) { choice = menu_select(); switch(choice) { case 1: enter(); break; case 2: delete(); break; case 3: list(); break; case 4: exit(0); } } return 0; }

/* Пример обобщенного ввода с помощью указателей на структуры. */

#include < stdio.h>
#include < conio.h>
#include < string.h>

struct xyinput {
int x, у; /* положение подсказки на экране */
char message[80]; /* подсказка */
int i; /* введенное значение */
};

void input_xy(struct xyinput *info);

int main(void)
{
struct xyinput mess;
mess.x = 10;
mess.у = 10;
strcpy(mess.message, " Enter an integer: ");
clrscr();
input_xy(& mess);
printf(" Your number squared is: %d.", mess.i*mess.i);
return 0;
}

/* вывод сообщения о подсказке в указанной позиции и ввод целочисленного значения */
void input_xy(struct xyinput *info)
{
gotoxy(info-> x, info-> y);
printf(info-> message);
scanf (" %d", & info-> i);
}

 

Тогда, чтобы считать эти данные, мы можем написать такую программу: Стурктура с файлами

#include < stdio.h>

 

main () {

FILE *file;

struct food {

char name[20];

unsigned qty;

float price;

};

struct food shop[10];

char i=0;

 

file = fopen(" fscanf.txt", " r");

 

while (fscanf (file, " %s%u%f", shop[i].name, & (shop[i].qty), & (shop[i].price))! = EOF) {

printf(" %s %u %.2f \n ", shop[i].name, shop[i].qty, shop[i].price);

i++;

}

}

 

 

ШАБЛОНЫ
template
< typename T >

void sort(T array[], int size); // прототип: шаблон sort объявлен, но не определён

 

template < typename T >

void sort(T array[], int size) // объявление и определение

{

T t;

for (int i = 0; i < size - 1; i++)

for (int j = size - 1; j > i; j--)

if (array[j] < array[j-1])

{

t = array[j];

array[j] = array[j-1];

array[j-1] = t;

}

}

 

 


#pragma once

#include " stdafx.h"

#include < stdio.h>

#include < conio.h>

#include < stdlib.h>

#include < windows.h>

#include < iostream>

#include < locale.h>

using namespace std;

class CPoint

{

private: float m_x;

float m_y;

public: CPoint(): m_x(0), m_y(0) {};

CPoint (float x, float y): m_x(x), m_y(y) {};

CPoint (CPoint & o): m_x(o.m_x), m_y(o.m_y) {};

~CPoint () {};

void set_x (float);

void set_y (float);

float get_x (void);

float get_y (void);

void view (char*comm);

CPoint sin_x ();

CPoint sin_y ();

};

 

void CPoint:: set_x (float x)

{m_x=x; }

 

void CPoint:: set_y (float y)

{m_y=y; }

 

float CPoint:: get_x (void)

{return m_x; }

 

float CPoint:: get_y (void)

{return m_y; }

 

void CPoint:: view (char *comm)

{std:: cout < < comm < < '\n'< < std:: endl;

std:: cout < < 'x' < < get_x()< < std:: endl;

std:: cout < < 'y' < < get_y()< < std:: endl;

}

 

CPoint CPoint:: sin_x()

{CPoint temp;

temp. m_x = -get_x();

temp. m_y = get_y();

return temp;

}

 

 

void set_Pos (char);

void set_Count (char);

char get_Pos (void);

char get_Count (void);

void string:: set_Pos (char Pos)

{m_Pos=Pos; }

 

void string:: set_Count (char Count)

{m_Count=Count; }

 

char string:: get_Pos (void)

{return m_Pos; }

 

char string:: get_Count (void)

{return m_Count; }

 

int _tmain(int argc, _TCHAR* argv[])
{
setlocale (LC_ALL, " RUS");
CPoint a1, a2(5, 7), a3(a2);
a1. view (" a1");
a2. view (" a2");
a3. view (" a3");
CPoint a4=a3.sin_x();
a4. view (" a4");
system(" pause");
return 0;
}

 

 


Пример класса со статическими данными

#include " stdafx.h"

#include < iostream>

#include < stdio.h>

#include < conio.h>

#include < stdlib.h>

#include < string>

using namespace std;

class C

{

public:

static double A; // открытый статический член-данное

int m_x, m_y; // нестатические члены-данные

private:

static int B; // закрытый статический член-данное

public:

// конструкторы и деструктор

C (): m_x (0), m_y (0) { }

C (int x, int y): m_x (x), m_y (y) { }

~C () { }

// методы для статического данного B

void setB (int _b) { B = _b; }

int getB () { return B; }

};

// инициализация статических данных

double C:: A = 2.75;

int C:: B = 777;

// главная функция

 

int _tmain(int argc, _TCHAR* argv[])

{

C a (10, 10), b (-10, -10);

// вывод состояния нестатических данных

cout < < " a\t" < < a.m_x < < '\t' < < a.m_y < < endl;

cout < < " b\t" < < b.m_x < < '\t' < < b.m_y < < endl;

// вывод состояния статических данных

cout < < " for a and b static A =\t" < < C:: A < < endl;

cout < < " for a static B =\t" < < a.getB () < < endl;

cout < < " for b static B =\t" < < b.getB () < < endl;

// изменение и вывод значения A

C:: A = 1.2e308;

cout < < " after change A =\t" < < C:: A < < endl;

// изменение значения B в объекте a

a.setB (100);

// вывод значения для B для объекта b

cout < < " after change in a b.B =\t" < < b.getB () < < endl;

// изменение значения B в объекте b

b.setB (-100);

// вывод значения B для объекта a

cout < < " after change in b a.B =\t" < < a.getB () < < endl;

system(" pause");

return 0;

}


 

 

Пример класса со статическими методами

#include < iostream>

using namespace std;

class C

{

public:

// конструкторы и деструктор

C (char* s) { strcpy_s (m_s, 40, s); incObj (); }

C () { m_s [ 0 ] = '\0'; incObj (); }

~C () { --objAmount; }

// открытые статические методы

static void initAmount (const int v) { objAmount = v; }

static int getAmount () { return objAmount; }

private:

// закрытые статические метод и член-данное

static int incObj () { return ++objAmount; }

static int objAmount;

// закрытые нестатический метод и член-данное

int lenS () { return strlen (m_s); }

char m_s [ 40 ];

};

// объявление статической переменной

int C:: objAmount;

// главная функция

int main ()

{

C:: initAmount (0); // инициализация objAmount

// объявление и создание объектов

C o1 (" St. Petersburg"), o2 (" Yalta");

C o [ 12 ], o3;

C* p = new C [ 25 ];

// вывод состояния статической переменной

cout < < C:: getAmount () < < endl; // выводится 40

// разрушение объектов

delete [ ] p;

// вывод состояния статической переменной

cout < < C:: getAmount () < < endl; // выводится 15

return 0;

}

 

 

Для использования строковых классов C++ необходимо включить в программу заголовок < string>.

Прототипы трех самых распространенных конструкторов класса string имеют следующий вид.

string();

string(const char *str);

string(const string & str);

Объекты класса string не заканчиваются нулевым байтом. При обработке строк типа string необходимо использовать методы класса string.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.