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



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

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

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

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

Условия, необходимые для появления жизни История жизни и история Земли неотделимы друг от друга, так как именно в процессах развития нашей планеты как космического тела закладывались определенные физические и химические условия, необходимые для появления и развития жизни...

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

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Демографияда "Демографиялық жарылыс" дегеніміз не? Демография (грекше демос — халық) — халықтың құрылымын...

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

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