Студопедия

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

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

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






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







    Биномиальный коэффициент — это коэффициент в разложении бинома Ньютона по степеням 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.