Студопедия Главная Случайная страница Обратная связь

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

ПРАКТИЧЕСКАЯ ЧАСТЬ. Пример 1. Рассмотрим пример создания проекта в Microsoft Visual Studio 2010, состоящего из одного заголовочного файла (например





Пример 1. Рассмотрим пример создания проекта в Microsoft Visual Studio 2010, состоящего из одного заголовочного файла (например, hfile.h) и двух подключаемых функций, созданных программистом (например, degree(), print()). В файле myfile3.c поместим функцию degree(), а функцию print() отправим в myfile2.c. Файл с главной функцией создаваемого проекта озаглавим как main.c. При этом файлы hfile.h, myfile3.c и myfile2.c разместим на другом диске, например D:.

В качестве примера запрограммируем решение следующей задачи. Сформировать матрицу, состоящую из строк. Число столбцов равно k. Cтолбцы матрицы заполняются +1 или –1 по степеням двойки. То есть первый столбец заполняется +1, –1, +1, –1, +1, –1 и т. д., второй – +1, +1, –1, –1, +1, +1, –1, –1 и т. д., третий – +1, +1, +1, +1, –1, –1, –1, –1 и т. д. Эту матрицу называют матрицей планирования эксперимента типа . Ее расчет должен выполняться в одном файле, а печать результата – в другом, при этом результат можно записать в текстовый файл. В файле main.c происходит обращение к созданным функциям.

Чтобы получить число +1 или –1, следует использовать возведение в степень числа –1. Для нечетной степени получим –1, а для четной – +1. Разработаем специальную функцию возведения целого числа в целую степень. Для вывода результата на консоль или в файл создадим свою функцию.

Программный код решения примера

#include <stdio.h> #include <conio.h> #include <math.h> #include "D:\\hfile.h" int main(void) { double k; printf("\n\tConstruction of a matrix of planning experiment N = 2^k\n"); printf("\n\tEnter a natural number: "); scanf_s("%lf", &k); if (k < 1 || (ceil(k)!= k)) { printf("\n Error! Press any key: "); getch(); return -1; } // Обращение к функции формирования матрицы планирования print((int)k); printf("\n\n Press any key: "); getch(); return 0; }
 
// Файл myfile3.c int degree(int x, int k) { int i, a = 1; for (i = 1; i <= k; ++i) a *= x; return a; }

 

// Файл myfie2.c #include <math.h> #include <stdlib.h> void print(int k) { int i, j, N, *PTR; FILE *fid; N = degree(2,k); // N = 2^k // Динамически выделяемая память PTR = (int *)malloc(N*k*sizeof(int)); for (i = 0; i < N; ++i) for (j = 0; j < k; ++j) PTR[i*k + j] = 0; // заполнение нулями for (i = 0; i < N; ++i) for (j = 0; j < k; ++j) PTR[i*k + j] = degree(-1,(int)floor(i/degree(2,j))); printf("\n Matrix is planning experiment, N = 2^k, N = %d, k = %d\n", N, k); if (k < 5) { for (i = 0; i < N; ++i) { printf("\n%4d) ", i+1); for (j = 0; j < k; ++j) printf(" %3d", PTR[i*k+j]); } } else { fopen_s(&fid, "D:\\data.txt", "w"); fprintf(fid, "\r\n Matrix is planning experiment, N = 2^k, N = %d, k = %d\r\n", N, k); for (i = 0; i < N; ++i) { fprintf(fid, "\r\n%4d) ", i+1); for (j = 0; j < k; ++j) fprintf(fid, "%3d", PTR[i*k+j]); } fclose(fid); printf("\n See the result in the file \"D:\\data.txt\" \n"); } }
 
// Заголовочный файл hfile.h #include "D:\myfile3.c" #include "D:\myfile2.c"

Подключение файлов сделано в двух местах: в главной функции main() и в заголовочном файле hfile.h. При этом прототипы функций не прописаны. Заголовочный файл hfile.h «выгружает» содержимое файлов myfile3.c и myfile2.c перед главной функцией main(), поэтому в теле функции можно обращаться к функциям degree() и print(). Первая предназначена для возведения целого числа в степень, она формирует матрицу планирования (с помощью указателя *PTR) и вывода значений матрицы на консоль и (или) в текстовый файл. Важное значение имеет очередность подключения файлов myfile3.c и myfile2.c. Следует обратить внимание на синтаксис: заключение в двойные ковычки имени текстового файла data.txt. Функция ceil() возвращает наименьшее целое (представленное в виде значения с плавающей точкой), которое больше своего аргумента или равно ему [2]. Она включена на тот случай, если пользователь введет нецелое число.

Возможный результат выполнения программы при выводе искомой матрицы на консоль показан на рис. 17.4.


Рис. 17.4. Матрица планирования

Задание 1

1. Проверьте работу программ при записи результата в файл. В качестве имени текстового файла примите compX.txt, где Х – номер компьютера, на котором выполняется лабораторная работа.

2. В файле hfile.h поменяйте местами подключаемые файлы. Добавьте необходимые изменения, чтобы программа работала корректно (без предупреждений).

3. Вместо разработанной функции degree() примените стандартную функцию pow(). Сравните полученные результаты.

4. В программу добавьте изменения для вывода матрицы планирования при зеркальном отображении столбцов.

5. Дополните программу запросом знак единицы в первом столбце матрицы планирования.

6. В матрицу планирования добавьте в качестве первого столбца массив положительных единиц, т. е. +1.

Пример 2. Написать программу вывода на консоль содержимого текстового файла, расположенного в заданном каталоге, оформить вывод в виде отдельного файла.

Предположим, что программный проект расположен на диске Е:\Project_C, текстовый файл находится на диске D:\data16.txt. Пусть содержимое текстового файла будет следующим:

1, 2, 3, 4, 5







Дата добавления: 2015-09-06; просмотров: 427. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Типология суицида. Феномен суицида (самоубийство или попытка самоубийства) чаще всего связывается с представлением о психологическом кризисе личности...

ОСНОВНЫЕ ТИПЫ МОЗГА ПОЗВОНОЧНЫХ Ихтиопсидный тип мозга характерен для низших позвоночных - рыб и амфибий...

Принципы, критерии и методы оценки и аттестации персонала   Аттестация персонала является одной их важнейших функций управления персоналом...

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

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

Studopedia.info - Студопедия - 2014-2026 год . (0.011 сек.) русская версия | украинская версия