Главная страница
Навигация по странице:

  • Лекция Форматирование Создать массив ( целый и вещественный ) в зависимости от флагов форматирования

  • ///////////////////////////////////// void create(ifstreamf, int x[n])

  • Файловый ввод-вывод. Задача 1

  • Лекция Файловый ввод и вывод (продолжение) на примере печати таблицы «Успеваемость на факультете ВМК»

  • Лекции 1 семестр матанализ. лекции 1 семестр (1). Литература Герберт. Шилдт. С руководство для начинающих


    Скачать 1.38 Mb.
    НазваниеЛитература Герберт. Шилдт. С руководство для начинающих
    АнкорЛекции 1 семестр матанализ
    Дата19.02.2023
    Размер1.38 Mb.
    Формат файлаdoc
    Имя файлалекции 1 семестр (1).doc
    ТипЛитература
    #945406
    страница4 из 9
    1   2   3   4   5   6   7   8   9

    Вычисление многочлена по схеме Горнера

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

    #include "stdafx.h"

    #include

    #include
    using namespace std;

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

    double Gorner(double* a, int n, double x)

    {

    double s = a[0];

    int i;

    for (i = 1; i < n; i++)

    s = s * x + a[i];

    return s;

    }

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

    void Create(ifstream& f, double* x, int n)

    {

    int i;

    for (i = 0; i < n; i++)

    f >> x[i];

    }

    //////////////////////////////
    void Show(ofstream& f, double* x, int n)

    {

    int i;

    for ( i = 0; i < n; i++)

    f << x[i] << ' ' ;

    f << endl;

    }

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

    int main()

    {

    ifstream in("in.txt");

    ofstream out("out.txt");
    if (!in)

    {

    cout << "Can't open file! " << endl;

    system("pause");

    exit(-1);

    }
    int n, m;

    cout<<"Введите размерность коэффициентов n= " ;

    cin >> n;

    double* a = new double[n];

    cout << "Введите размерность аргументов m= " ;

    cin >> m;

    double* x = new double[m];

    double* y = new double[m];

    Create(in, a, n);

    Create(in, x, m);

    out<<" Коэффициенты многочлена: "<< endl;

    Show(out, a, n);

    out << "Аргументы многочлена: "<
    Show(out, x, m);

    int i;

    for ( i = 0; i < n; i++)

    y[i] = Gorner(a, m, x[i]);

    out << "Значения многочлена: " << endl;

    Show(out, y, m);

    delete []a;

    delete []x;

    delete []y;
    in.close();

    out.close();

    system("pause");

    return 0;

    }
    Входной файл in.txt

    5 4 3 2 1

    1 2 3 4 5 0.6 0.7 1 0 1
    Выходной файл out.txt

    Коэффициенты многочлена:

    5 4 3 2 1

    Аргументы многочлена:

    1 2 3 4 5 0.6 0.7 1 0 1

    Значения многочлена:

    15 129 547 1593 3711 4.792 6.4425 15 1 15

    Лекция

    Форматирование

    Создать массив ( целый и вещественный ) в зависимости от флагов форматирования
    #include "stdafx.h"

    #include

    #include

    #include //манипуляторы

    using namespace std;
    const int n=10;

    void create(ifstream&f, int x[n]);

    void create(ifstream&f, double x[n]); // перегрузка функции create

    void show(ofstream&f, int x[n], int k);

    void show(ofstream&f, double x[n], int k);

    // перегрузка функции show
    int main()

    {

    ifstream in1("in1.txt");

    ifstream in2("in2.txt");

    ofstream out1("out1.txt");

    ofstream out2("out2.txt");

    out1.setf( ios::left); //установить флаг форматирования

    out1.setf( ios::show pos) ;

    out1.setf( ios::oct);

    out1.unset( ios::oct);

    out1.setf( ios::right);

    out2.setf( ios::saentific);

    // saentific-плавающая точка; fixed-фиксированная точка

    out2.unset( ios:: saentific);

    //установка точности

    out2. precision(2);

    double b[n];

    int a[n];

    create (in1,a);

    in1.close();

    show(out1,a);

    out1.close();

    create (in2,b,20);

    in2.close();

    show(out2,b,20);

    out2.close();

    system("pause");

    return 0;
    }

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

    void create(ifstream&f, int x[n])

    {int i;

    for (i=0;i
    f>>x[i];

    }

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

    void create(ifstream&f, double x[n])

    {int i;

    for (i=0;i
    f>>x[i];

    }

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

    void show(ifstream&f, int x[n], int k)

    { int i;

    for (i=0; i
    {

    f. width(k);

    f.fill(‘#’);

    f<
    }

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

    void show(ifstream&f, double x[n], int k)

    { int i;

    for (i=0; i
    {

    f. width(k);

    f.fill(‘#’);

    f<
    }

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

    Файловый ввод-вывод.
    Задача 1
    // Поиск минимального элемента в массиве.

    // Ввод массива из файла fstream.h

    // Вывод на экран iostream.h
    #include "stdafx.h"

    #include

    #include

    using namespace std;
    int main()

    {

    int i, min, mas[10];

    ifstream myin("test.txt"); //Открытие файла для ввода.

    for(i=0;i<10;i++)

    myin >> mas[i];
    min=mas[0];

    for(i=1;i<10;i++)

    if (mas[i]
    min=mas[i];

    cout << "min = " << min << '\n';

    system("pause");

    return 0;
    }

    Задача 2
    // Приближенное вычисление 1/x

    // Последовательности {ак} и {вк} заданы рекуррентно: а0 =1,

    // в0=1-х; (0
    // ак= ак-1(1+вк-1), вк2к-1, к=1,2,…

    // Вычислить аn для наименьшего n, при котором вn ≤ ∂ (∂>0).

    // Ввод значения переменной х с экрана iostream.h

    // Вывод всех членов последовательностей a и b,

    // а также результата в файл fstream.h
    #include "stdafx.h"

    #include

    #include

    using namespace std;
    const double eps= 0.001;

    int main()

    {

    double a=1, b, x;

    ofstream myout("result.txt"); //Открытие файла для вывода.

    cout << "Enter x:";

    cin >> x;

    if (x<=0 || x>=2)

    cout << "not decision";

    else

    {

    b=1-x;

    do

    {

    a=a*(1+b);

    b=b*b;

    myout << "a = " << a << " b = " << b << endl;

    }

    while(b>eps);

    myout << "1/x=" << a << endl;

    cout<<Проверка Вычислений "<< 1/x <
    }

    system("pause");

    return 0;

    }


    Задача 3
    // Запись вектора в обратном порядке

    // Файловый ввод-вывод fstream.h

    #include "stdafx.h"

    #include

    #include

    using namespace std;
    const int SIZE= 9;

    int main()

    {

    int i, k, mas[SIZE];

    ifstream myin("test.txt"); //Открытие файла для ввода.

    ofstream myout("result.txt"); //Открытие файла для вывода.

    for(i=0;i
    myin >> mas[i];

    for(i=0;i
    {

    k=mas[i];

    mas[i]= mas[SIZE-i-1];

    mas[SIZE-i-1] = k;

    }

    for(i=0;i
    myout << mas[i] << " ";

    cout<
    system("pause");

    return 0;
    }


    Задача 4
    // Транспонирование матрицы.

    // Файловый ввод-вывод fstream.h

    #include "stdafx.h"

    #include

    #include

    using namespace std;

    int main()

    {

    int i, j;

    const int n = 4;

    double b[n][n], x;

    ifstream myin("test.txt"); //Открытие файла для ввода.

    ofstream myout("result.txt"); //Открытие файла для вывода.

    for (i = 0; i < n; i++)

    for (j = 0; j < n; j++)

    myin >> b[i][j];

    for (i = 0; i < n - 1; i++)

    for (j = i + 1; j < n; j++)

    {

    x = b[i][j];

    b[i][j] = b[j][i];

    b[j][i] = x;

    }

    myout << "Транспонированная матрица :”<
    for (i = 0; i < n; i++)

    {

    for (j = 0; j < n; j++)

    myout << b[i][j] << ' ';

    myout << endl; // Построчный вывод матрицы.

    }

    system("pause");

    return 0;

    }

    Задача 5
    /* Дан текст, состоящий из слов, разделенных пробелами.

    Выполнить форматирование текста, печатая в каждой строке

    не более SIZE символов.

    */

    // Чтение производится в буфер (массив) по одному слову.

    // Длина каждого слова не должна превышать 29 символов.

    // Файловый ввод-вывод fstream.h
    #include "stdafx.h"

    #include

    #include

    #include

    using namespace std;
    const int SIZE =30;

    int main()

    {

    char buf[30];

    int n, len=0;

    ifstream myin("text.txt");

    ofstream myout("result.txt");

    myin >> buf;

    while( !myin.eof() )

    {

    n = strlen(buf);

    if (len+n <= SIZE)

    len=len+n+1;

    else

    {

    len=n+1;

    myout << '\n';

    }

    myout << buf << ' ';

    myin >> buf;

    }

    system("pause");

    return 0;

    }

    Задача 6
    /* В упакованном представлении текста – цифра “К” означает

    К-кратное повторение следующей за ним буквы. Например,

    текст “3bc3a” интерпретируется как ”bbbcaaa”.

    Выполнить распаковку текста, считая, что символы символы- цифры рядом не встречаются. */

    // Посимвольный ввод входного текста.

    // Длина слов не не ограничена.

    // Функция get() вводит очередной символ из входного потока

    // и возвращает его в качестве своего значения.

    // Функция put(f) вводит символ f в выходной поток.

    // Файловый ввод-вывод.
    #include "stdafx.h"

    #include

    #include

    using namespace std;
    int main()

    {

    char symb;

    int n, i;

    ifstream myin("text.txt");

    ofstream myout("result.txt");

    symb=myin.get();

    while( !myin.eof() )

    {

    if ( symb >='0' && symb <='9')

    {

    n = symb - '0';

    symb=myin.get();

    if (!myin.eof() )

    for(i=1; i<=n; i++)

    myout.put(symb);

    }

    else

    myout.put(symb); // Вывод символа в файл.

    symb=myin.get();

    }

    system("pause");

    return 0;
    }

    Задача 7
    /* Дан текст, состоящий из слов, разделенных пробелами.

    В каждой строке текста первое и последнее слово поменять

    местами.

    */

    #include "stdafx.h"

    #include

    #include

    #include

    using namespace std;
    int main()

    {

    const size=81; // Длина строки не более 80 символов.

    char buf[size];

    int n, i;

    int first; // Позиция начала первого слова строки

    int count_first; // Кол-во символов первого слова

    int last; // Позиция окончания последнего слова

    int count_last; // Кол-во символов последнего слова

    ifstream myin("text.txt"); // Открытие файла для ввода

    ofstream myout("result.txt"); // Открытие файла для вывода

    while( !myin.eof() )

    { // Чтение строки в буфер

    myin.getline(buf, size, '\n');

    n=strlen(buf); // n – кол-во символов в buf (без ‘\0’)

    // Вывод начальных пробелов строки

    for(i=0; i<=n; i++)

    if(buf[i]==' ')

    myout.put(buf[i]);

    else

    break;

    if(buf[i]=='\0') // Если пустая строка

    {

    myout.put('\n');

    continue; // Переход к следующей итерации цикла

    }

    first=i; // Позиция начала первого слова строки

    count_first=1;

    // Подсчет кол-ва символов в первом слове

    for(i=first+1; i
    if(buf[i]!=' ' && buf[i]!='\0')

    count_first++;

    else

    break;

    // Пропуск пробелов в конце строки

    for(i=n-1; i>=0 && buf[i]==' '; i--);

    last=i; // Позиция окончания последнего слова строки

    count_last=0;

    // Подсчет кол-ва символов в последнем слове

    for(i=last; i>=0; i--)

    if(buf[i]!=' ')

    count_last++;

    else

    break;

    // Если в строке только одно слово

    if(first+count_first > last-count_last)

    myout << buf << '\n'; // Вывод всей строки без изменений

    else

    { // Вывод последнего слова

    for(i=last-count_last+1; i<=last; i++)

    myout.put(buf[i]);

    // Вывод “середины” строки

    for(i=first+count_first; i<=last-count_last; i++)

    myout.put(buf[i]);

    // Вывод первого слова

    for(i=first; i
    myout.put(buf[i]);

    myout << '\n';

    }

    }
    system("pause");

    return 0;
    }


    Задача 8
    // Подсчет количества строк, слов и символов в тексте

    #include "stdafx.h"

    #include

    #include

    using namespace std;
    const int SIZE=512;

    int main()

    {

    int nl=0; // Кол-во строк

    int nw=0; // Кол-во слов

    int nc=0; // Кол-во символов

    int n,i;

    char buf[SIZE]; // Размерность физического блока на диске

    bool inword=false; // Находимся в слове

    ifstream myin("text.txt");

    while( !myin.eof() )

    {

    myin.read(buf, SIZE); // Чтение в буфер

    n=myin.gcount();

    nc+=n;

    for(i=0; i
    {

    if(buf[i]=='\n')

    ++nl;

    if(buf[i]=='\n' || buf[i]==' ')

    inword=false;

    else

    if (!inword)

    {

    inword=true;

    ++nw;

    }

    }

    }

    cout<<"Lines= "<
    cout<<"Words= "<
    cout<<"Symbols= "<
    system("pause");

    return 0;

    }
    Задача
    #include "stdafx.h"

    #include

    #include

    using namespace std;
    int main()

    {

    int a=904;

    double b=905.906901;

    cout<
    cout<
    cout<
    cout<
    cout<system("pause");

    return 0;

    }


    Лекция

    Файловый ввод и вывод (продолжение)

    на примере печати таблицы

    «Успеваемость на факультете ВМК»
    //arb2009_table_file_VMK
    #include "stdafx.h"

    #include

    #include

    #include

    #include

    using namespace std;
    const int numberCourse=5;

    const int numberMark=4;

    const int lengthIndent=7;// длина абзаца

    const int lengthTable=56;// длина таблицы

    const int lengthColumn=10;// длина колонки

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

    void star(ofstream &f,int n,int m)

    {

    f.width(n);

    int i;

    for (i=0;i
    f<<'*';

    f<
    }

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

    void star1(ofstream &f,int n)

    {

    int i;

    f.width(n);

    f<<"*";

    f.width(lengthColumn+1);

    f<<"*";
    for (i=0;i
    {

    f.width(lengthColumn+1);

    f<<'*';

    }

    f<
    }

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

    int main()

    {

    char name_Course[numberCourse][15];

    char name_Mark[numberMark][20];

    int number_Student[numberCourse][numberMark];

    char name_Faculty[80];

    int Total[numberMark];

    ifstream in("arb.txt");

    ofstream out("vmk.txt");

    int i,j;

    in.getline(name_Faculty,80);

    for (i=0;i
    in>>name_Course[i];
    for (i=0;i
    in>> name_Mark[i];
    for (i=0;i
    for (j=0;j
    in>> number_Student[i][j];

    in.close();

    out<
    out.width( lengthTable + 4 );

    out<
    out<star(out,lengthIndent+1,lengthTable);//

    star1(out,lengthIndent+1);
    out.width(lengthIndent+1);

    out<<"*";

    out.width(lengthColumn+1);

    out<<"*";
    for(i=0;i
    {

    out<<" "<
    out.width(lengthColumn-strlen(name_Mark[i]));

    out<<"*";

    }

    out<star1(out,lengthIndent+1);

    star(out,lengthIndent+1,lengthTable);
    for(i=0;i
    {

    star1(out,lengthIndent+1);

    out.width(lengthIndent+1);

    out<<"*";

    out<<" "<
    out.width(lengthColumn-strlen(name_Course[i]));

    out<<"*";
    for(j=0;j
    {

    out<
    out<
    out<<"*";

    }

    out<
    star1(out,lengthIndent+1);

    star(out,lengthIndent+1,lengthTable);

    }
    for(j=0;j
    {

    Total[j]=0;

    for(i=0;i
    Total[j]+=number_Student[i][j];

    }

    star(out,lengthIndent+1,lengthTable);

    star1(out,lengthIndent+1);
    out.width(lengthIndent+1);

    out<<"*"<<" Total *";

    for(j=0;j
    {

    out<
    out<
    out<<"*";

    }

    out<
    star1(out,lengthIndent+1);

    star(out,lengthIndent+1,lengthTable);

    out<
    system("pause");

    return 0;
    }
    1   2   3   4   5   6   7   8   9


    написать администратору сайта