Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зачет по курсу основы программирования..doc
Скачиваний:
22
Добавлен:
21.03.2015
Размер:
289.79 Кб
Скачать

Пример оформления отчета по практическому заданию.

Министерство образования и науки РФ

ФГБОУ ВПО Тульский государственный педагогический университет

им. Л. Н. Толстого

Динамическое выделение памяти

Лабораторная работа № 10

по курсу «Основы программирования»

Выполнили: студенты группы 120811 __________ автор

(подпись)

_________ автор

(подпись)

Проверил: _________ преподаватель

(подпись)

Тула, 2012 г.

Цель работы

Цель работы - систематизация знаний динамического выделения памяти.

Задание (формулировка по условию)

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

Требуется написать программу, определяющую, какие клавиши сломаются в процессе заданного варианта эксплуатации клавиатуры.

Математическая модель задачи

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

Информационная модель задачи

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

Таблица 1 – Структуры данных, используемые в программе

имя

тип

предназначение

fp1

FILE

указатель на имя входного файла

fp2

FILE

указатель на имя выходного файла

kol_pres

int

указатель на целочисленный массив, контролирующий ресурс клавиш

n

int

кол-во клавиш

k

int

кол-во нажатий на клавиши

i

int

переменная счетчика цикла

t

int

контроль за номером нажатой клавиши

Схема алгоритма

Ниже приведена схема алгоритма для решения данной задачи.

Полотно 22

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

n

kol_pres[i]

k

да

да

Полотно 76

Текст программы

Ниже приведен текст программы для решения данной задачи.

#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;

}