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

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

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




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


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


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


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

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

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

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

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

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