Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Примеры решенных задач

Пример 1 Табулирование функции с записью результатов на диск.

Постановка задачи. Табулировать функцию y = в n равноостоящих точках, начиная от значения x = xn вплоть до x = xk. Результаты табулирования записать в текстовый файл.

Решение.

Один из возможных вариантов решения рассматриваемой задачи имеет следующий вид.

/* Файл table.c. */

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

 

void table_file(double xn, double xk, int n, FILE* out);

int main(void)

{

int n;

double x1, x2;

FILE* out_file;

 

clrscr();

printf(“Количество расчетных точек = ”);

scanf(“%d”, &n);

printf(“Начальное значение аргумента=”);

scanf(“%lf”, &x1);

printf(“Конечное значение аргумента=”);

scanf(“%lf”, &x2);

 

if ((out_file = fopen(“out_file.txt”, “w”) == NULL))

{

printf(“Не могу открыть файл out_file.txt\n”);

exit(1);

}

 

table_file(x1, x2, n, out_file);

fclose(out_file);

printf(“Файл сформирован\n”);

getch();

return 0;

}

 

void table_file(double xn, double xk, int n, FILE* out)

{

double x, dx;

int i;

fprintf(out, “%5s%15s%15s\n”, “Номер”, “Аргумент”, “Функция”);

 

dx = (xk - xn) /(n - 1);

x = xn;

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

{

fprintf(out, “%5d%15.2f%15.2f\n”, i, x, x * x);

x += dx;

}

}

 

Пример 2. Запись содержимого двух массивов в текстовый файл

Постановка задачи. Имеются два массива, содержащие числа типа double. Записать содержимое этих массивов в текстовый файл. Вывод организовать в виде таблицы, снабженной заголовком. Таблица должна содержать три колонки. В первой колонке должен выводиться порядковый номер элемента, в двух других элементы массивов. В заголовке следует указать имена выводимых массивов.

Решение

Оформим решение данной задачи в виде функции. Эта функция должна иметь шесть параметров. Первый из них должен служить для передачи в функцию файлового указателя на файл, в который будет выполняться вывод. Два параметра необходимы для передачи массивов, значения которых следует выводить в файл. Затем еще два параметра необходимы для передачи в функцию имен выводимых массивов. Наконец, последний параметр должен служить для передачи в функцию количества выводимых элементов массива.

#include<stdio.h>

void save_arrays(FILE* out, double * arr1, double * arr2,

char * name1, char * name2, int num)

{

int i;

fprinf(out, "%6s%15s%15s\n", "НОМЕР", name1, name2);

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

{

fprinf(out, "%6d%15.2f%15.2f\n", i, arr1[i], arr2[i]);

}

}

Пример 3. Чтение из таблицы, хранящейся в файле, двух числовых массивов

Постановка задачи. В текстовом файле имеется таблица, в которой хранится содержимое двух массивов. Таблица содержит три колонки и снабжена заголовком, который находится в первой строке файла. В первой колонке представлен порядковый номер элемента, в двух других - элементы массивов.

Оформим решение данной задачи в виде функции. Эта функция должна иметь три параметра. Первый из них должен служить для передачи в функцию файлового указателя на файл, из которого будет выполняться чтение. Два других параметра необходимы для передачи массивов, в которые будет выполняться чтение данных. Количество прочитанных элементов массивов функция должна вернуть в качестве возвращаемого значения. Для чтения файла будет использоваться функция fgets из стандартной библиотеки языка C. Основу алгоритма функции должен составлять итерационный цикл чтения файла. До входа в цикл необходимо прочитать заголовок таблицы, а в его теле последовательно читать строки таблицы. Строка, полученная в результате чтения заголовка таблицы, в программе не используется.

#include<stdio.h>

/* Чтение массивов */

int load_arrays(FILE* in, double * arr1, double * arr2)

{

int count = 0;

char buf[255];

/* Чтение заголовка таблицы */

fgets(buf, sizeof(buf), in);

while (fgets(buf, sizeof(buf), in)!= NULL)

{

sscanf(buf, "%*d%lf%lf", arr1 + couПримерnt, arr2 + count);

count++;

}

return count;

}

Пример 4. Обработка числовой матрицы, хранящейся на диске

Постановка задачи. Числовая матрица находится в текстовом файле. Первая строка файла содержит данные о размере матрицы. Вычислить сумму элементов в каждой строке матрицы.

Решение

#include<stdio.h>

#include<stdlib.h>

void summa_row_in_text_file(FILE* in, FILE* out)

{

int nrow;

int ncol;

int row;

int col;

double s, x;

fscanf(in, "%d%d", &row, &col);

for (row = 0; row < nrow; row++)

{

s = 0;

for (col = 0; col < ncol; col++)

{

fscanf(in, "%lf", &x);

s += x;

}

fprintf(out, "%10.3f\n", s);

}

}

 

<== предыдущая лекция | следующая лекция ==>
Стандартные потоки. Объявление этой функции имеет следующий вид | Основные понятия и определения. Первый закон термодинамики
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 240; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.