КАТЕГОРИИ: Архитектура-(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; Просмотров: 254; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |