1осн[393-397], 2осн[406-436], 3осн[108-128], 6доп[200-209], 8доп[13-16]

Тема 14. Составление программ решения задач с использованием файла произвольного доступа.

Форма проведения: Решение задач.

Задание 1. Создать массив записей в соответствии с заданной структурой. Реализовать ввод и обработку записей, используя файлы записей. Все действия пользователя должны контролироваться и снабжаться осмысленными сообщениями. Результат (база данных) должен запоминаться тоже в файле и быть доступен для последующей (многократной) обработки.

Варианты заданий:

Варианты 1-5.

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

Запросы:

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

2.  Определить, в каком году было больше всего дел, связанных с банкротством.

3.  Определить, в каком году было больше всего дел, связанных с разводами.

4.  Определить, в каком году было больше всего дел, связанных с дискриминацией.

5.  Определить фирму, по которой возбуждалось уголовное дело более 2-х раз.

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

Варианты заданий:

1.  Дана строка S и текстовый файл. Добавить строку S в начало и конец файла.

НЕ нашли? Не то? Что вы ищете?

2.  Дан текстовый файл. Удалить из него первую и последнюю строку.

3.  Дан текстовый файл, содержащий более трех строк. Удалить из него три последние строки.

4.  Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла.

5.  Дан текстовый файл. Удалить из него пустые строки.

Методические рекомендации по проведению СРСП.

Контрольный пример 1. Дан текстовый файл f; записать его в обратном порядке в файл g.

Контрольный пример 2. Дан символьный файл f; заменить в нем все точки и запятые плюсами и записать в файл g.

/* пример 1 */

#include <stdio. h>

#include <string. h>

main()

{ file *f, *g; char *s;

f = fopen("f1.txt", "r"); g = fopen("f2.txt", "w");

while (!feof(f))

{ fgets(s, 20, f);

strrev(s);

fputs(s, g); }

fclose(f); fclose(g);

return 0; }

/* пример 2 */

#include <stdio. h>

main()

{ FILE *f, *g; char с;

f = fopen("f1.txt", "r"); g = fopen("f2.txt", "w");

while (!feof(f))

{ c=fgetc(f);

if (c=='.' || c==',') fputc(‘+’, g);

else fputc(c, g); }

fclose(f); fclose(g);

return 0; }

Контрольный пример 3. Дан файл, содержащий целые числа. Найти сумму и произведение компонент файла.

Контрольный пример 4. Дан текстовый файл. Удалить из него все символы, кроме “.” и ”,”.

/* пример 3 */

#include <stdio. h>

main(void)

{ FILE *f;

int a, s=0, p=1;

f = fopen("f. txt", "r");

while (!feof(f)

{ fscanf(f, "%d", &a);

s+=a; p*=a; }

fclose(f);

printf("s = %d, p = %d", s, p);

return 0; }

/* пример 4 */

#include <stdio. h>

#include <conio. h>

main ()

{ char c;

FILE *f1,*f2;

f1=fopen("f1.txt","r"); f2=fopen("f2.txt","w+");

while(!feof(f1))

{ c=fgetc(f1);

if ((c=='.')||(c==',')) fputc(c, f2); }

fclose(f1); fclose(f2);

getch(); return 0; }

Контрольный пример 5. Дан файл, содержащий сведения о сотрудниках фирмы: фамилия, имя, адрес, возраст, телефон, зарплата. Вывести сведения о сотрудниках чей возраст превышает 50 лет.

/* пример 5 */

#include <stdio. h>

#include <conio. h>

#define n 3

struct person

{ char fam[20],name[15], address[30];

int age, phone, salary; };

main ()

{ struct person str_pr;

int i; FILE *f;

clrscr();

f=fopen("f. txt","w+");

for (i=0;i<n;i++)

{ printf("%i person\n",i+1);

printf("Fam: "); scanf("%s",str_pr. fam);

printf("Name: "); scanf("%s",str_pr. name);

printf("Address: ");

scanf("%s",str_pr. address);

printf("Age: "); scanf("%i",&str_pr. age);

printf("Phone: "); scanf("%i",&str_pr. phone);

printf("Salary: "); scanf("%i",&str_pr. salary);

printf("\n");

fwrite(&str_pr, sizeof(str_pr), 1, f); }

fclose(f);

f=fopen("f. txt","r");

while (!feof(f))

{

fread(&str_pr, sizeof(str_pr),1,f);

if (str_pr. age>50)

{

printf("Fam: %s\n",str_pr. fam);

printf("Name: %s\n",str_pr. name);

printf("Address: %s\n",str_pr. address);

printf("Age: %i\n",str_pr. age);

printf("Phone: %i\n",str_pr. phone);

printf("Salary: %i\n",str_pr. salary);

}

}

fclose(f);

getch();

return 0;

}

Рекомендуемая литература.

1осн[425-444], 2осн[437-450], 5доп[51-54],6доп[235-242], 8доп[16-23]

Тема 15. Алгоритмизация графических построений.

Форма проведения: Решение задач.

Задание 1. Задав конкретную функцию F(x), построить на символьном экране дисплея ее график и графически найти все возможные решения, не применяя никаких численных методов. При реализации учесть, что вид функции и интервал могут быть любыми (в конкретных вариантах задан тестовый интервал и значение корня на этом интервале – для проверки правильности построения графика данной функции).

Варианты заданий:

1.  F(x) = 3*sin + 0.35*x - 3.8. На интервале [2,3] ответ: x=2.2985.

2.  F(x) = - cos . На интервале [0,1] ответ: x=0.4538.

3.  F(x) = x - 2 + sin . На интервале [1.2,2] ответ: x=1.3077.

4.  F(x) = x*tg x - . На интервале [0.2,1] ответ: x=0.5472.

5.  F(x) = x*x - ln (1+x) - 3. На интервале [2,3] ответ: x=2.0267.

Задание 2. Используя константы, процедуры и функции графической библиотеки, реализовать следующие визуальные эффекты.

Варианты заданий:

1.  Движение планеты (планет) вокруг солнца.

2.  Запуск ракеты в космос.

3.  Растущий цветок.

4.  Домик, у которого открываются и закрываются окна и двери.

5.  Бег ежа с яблоком и грибами на спине.

Методические рекомендации по проведению СРСП.

Контрольный пример 1. Построить кривую Астроида по заданному параметрическому представлению (параметрическое представление кривой l на плоскости с координатами x, y – это две функции , определенные на одном и том же числовом множестве) (рисунок 13): , .

Контрольный пример 2. Изобразить на экране движение прямоугольника.

/* пример 1 */

#include <graphics. h>

#include <stdlib. h>

#include <stdio. h>

#include <conio. h>

#include <math. h>

main()

{

int gdriver = DETECT, gmode, errorcode;

int b, x,y; float t;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode!= grOk)

{

printf("Graphics error: %s\n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

setbkcolor(WHITE);

setcolor(BLUE);

line(getmaxx()/2,0,getmaxx()/2,getmaxy());

line(0,getmaxy()/2,getmaxx(),getmaxy()/2);

t=0; b=150;

while (t<=2*M_PI)

{

x=ceil(b*pow(cos(t),3));

y=ceil(b*pow(sin(t),3));

x+=getmaxx()/2; y=getmaxy()/2-y;

putpixel(x, y,61);

t+=0.00001;

}

getch(); closegraph(); return 0;

}

/* пример 2 */

#include <graphics. h>

#include <stdlib. h>

#include <stdio. h>

#include <conio. h>

#include <dos. h>

main()

{

int gdriver = DETECT, gmode, errorcode;

int i;

float t;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode!= grOk)

{

printf("Graphics error: %s\n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

setbkcolor(WHITE);

setcolor(BLUE);

for(i=1;i<=600;i++)

{

setcolor(GREEN);

rectangle(i,200,i+100,250);

delay(10);

setcolor(WHITE);

rectangle(i,200,i+100,250);

}

getch();

closegraph();

return 0;

}

Тестовые задания для самоконтроля с указанием ключей правильных ответов

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27