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

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

ПРАКТИЧЕСКАЯ ЧАСТЬ. Пример 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; просмотров: 401. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

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

Методика исследования периферических лимфатических узлов. Исследование периферических лимфатических узлов производится с помощью осмотра и пальпации...

Роль органов чувств в ориентировке слепых Процесс ориентации протекает на основе совместной, интегративной деятельности сохранных анализаторов, каждый из которых при определенных объективных условиях может выступать как ведущий...

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

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