1осн[393-397], 2осн[406-436], 3осн[108-128], 6доп[200-209], 8доп[13-16]
Тема 14. Составление программ решения задач с использованием файла произвольного доступа.
Форма проведения: Решение задач.
Задание 1. Создать массив записей в соответствии с заданной структурой. Реализовать ввод и обработку записей, используя файлы записей. Все действия пользователя должны контролироваться и снабжаться осмысленными сообщениями. Результат (база данных) должен запоминаться тоже в файле и быть доступен для последующей (многократной) обработки.
Варианты заданий:
Предусмотреть вывод значений для полей элементов массива записей по следующим ключам: дате, предмету судебного разбирательства, названию фирмы-истца, названию фирмы-обвиняемого.

Запросы:
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 |


