Пример оформления отчета по практическому заданию.
Министерство образования и науки РФ
ФГБОУ ВПО Тульский государственный педагогический университет
им. Л. Н. Толстого
Динамическое выделение памяти
Лабораторная работа № 10
по курсу «Основы программирования»
Выполнили: студенты группы 120811 __________ автор
(подпись)
_________ автор
(подпись)
Проверил: _________ преподаватель
(подпись)
Тула, 2012 г.
Цель работы
Цель работы - систематизация знаний динамического выделения памяти.
Задание (формулировка по условию)
Всем известно, что со временем клавиатура изнашивается, и клавиши на ней начинают залипать. Конечно, некоторое время такую клавиатуру еще можно использовать, но для нажатий клавиш приходиться использовать большую силу. При изготовлении клавиатуры изначально для каждой клавиши задается количество нажатий, которое она должна выдерживать. Если знать эти величины для используемой клавиатуры, то для определенной последовательности нажатых клавиш можно определить, какие клавиши в процессе их использования сломаются, а какие – нет.
Требуется написать программу, определяющую, какие клавиши сломаются в процессе заданного варианта эксплуатации клавиатуры.
Математическая модель задачи
Изначально в файле задано количество клавиш, их ресурс и количество нажатий на каждую из них. При каждом нажатии на клавишу ее ресурс уменьшается на единицу. Чтобы узнать, сломается ли клавиша в процессе эксплуатации, нужно из ее ресурса вычесть количество нажатий. Если получается отрицательное число, то клавиша сломана.
Информационная модель задачи
В таблице 1 представлены структуры данных, которые были использованы в процессе работы программы.
Таблица 1 – Структуры данных, используемые в программе
имя |
тип |
предназначение |
fp1 |
FILE |
указатель на имя входного файла |
fp2 |
FILE |
указатель на имя выходного файла |
kol_pres |
int |
указатель на целочисленный массив, контролирующий ресурс клавиш |
n |
int |
кол-во клавиш |
k |
int |
кол-во нажатий на клавиши |
i |
int |
переменная счетчика цикла |
t |
int |
контроль за номером нажатой клавиши |
Схема алгоритма
Ниже приведена схема алгоритма для решения данной задачи.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
n
kol_pres[i]
k
да
да
Текст программы
Ниже приведен текст программы для решения данной задачи.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp1,*fp2;
if ((fp1=fopen("keyboard.in.txt","r"))==NULL)
{
perror("keyboard.in.txt");
return 1;
}
if ((fp2=fopen("keyboard.out.txt","w"))==NULL)
{
perror("keyboard.out.txt");
return 1;
}
int n,k,t,i;
int *kol_pres;
fscanf_s(fp1,"%d",&n);
kol_pres=(int*)calloc(n,sizeof(int));
for(i=0;i<n;i++)
{
fscanf_s(fp1,"%d",&kol_pres[i]);
}
fscanf_s(fp1,"%d",&k);
for (i=0;i<k;i++)
{
fscanf_s(fp1,"%d",&t);
--kol_pres[t-1];
}
for (i=0;i<n;i++)
{
if(kol_pres[i]<0)
fprintf(fp2,"yes \n");
else fprintf(fp2,"no \n");
}
free(kol_pres);
fclose(fp1);
fclose(fp2);
system("pause");
return 0;
}