Задачник и решебник (1087980), страница 20
Текст из файла (страница 20)
Решения205pieslice(х,у,О,360,г);setcolor(be);circle(х,у,г);}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();}outtextxy(10,10,"Соблюдайте правила уличного движения!");rectangle(88,88,112,152);// Горит красный светkrug(100,100,10,RED,WHITE);krug(100,120,10,LIGHTGRAY,WHITE);krug(100,140,10,LIGHTGRAY,WHITE);for (int i = 1; i <= 3; i++){// Здесь горит красныйdelay(3000); // задержка 3 секkrugdOO,120,10,YELLOW,WHITE) ; // Включить желтыйdelay(1000);krug(100,100,10,LIGHTGRAY,WHITE); // Выключить красныйkrug(100,120,10,LIGHTGRAY,WHITE); // Выключить желтыйkrug(100,140,10,GREEN,WHITE);// Включить зеленыйdelay(2000);// Мигающий зеленый сигналfor (int j = 1; j <= 5; j++) // мигает 5 раз206C/C-i-'f- в задачах и примерах{delay(500);krug (100 Д 4 0 Д О , GREEN, WHITE) ;// Включить// зеленыйdelay(500);krug(100,140,10,LIGHTGRAY,WHITE);// Выключить// зеленый}krug(100,120,10,YELLOW,WHITE);delaydSOO);krug(100,120,10,LIGHTGRAY,WHITE);krug(100,100,10,RED,WHITE);// Включить// желтый////////ВыключитьжелтыйВключитькрасный}outtextxy(10,25,"Нажмите <Enter>!");getch();closegraph(); // выход из графического режима}Задача 233// Часы с минутной и секундной стрелками#include <graphics.h>#include <stdio.h>#include <conio.h>#include <inath.h>#include <dos.h>#define PATHTODRIVER "c: WborlandcWbgiW"// выводит вектор заданной длины из текущей точки// используется для вывода изображения стрелкиvoid vector(int а,// угол между вектором и осью ОХint 1)// длина вектора{#define G 0.0174532 // коэф.
перевода из градусов в радианыint хО,уО; // координаты начала вектораint х1,у1; // координаты конца вектораЧасть II. Решения207хО = getx();уО = gety();х1 = хО + l*cos(a*G);у1 = уО - l*sin(a*G);lineto(xl,yl);}void clock О{int xO = 80,уО = 80;int d = 50;int s = 0;int m = 0;int as = 90;int am = 90;// координаты центра часов//////////диаметр циферблатавремя, кол-во секундвремя, кол-во минутугол наклона секундной стрелкиугол наклона минутной стрелкиcircle(хО,уО,d+5);setfillstyle(SOLID_FILL, 0);do {// вывести секундную стрелкуmoveto(xO,yO);setcolor(YELLOW);vector(as,d);// вывести минутную стрелкуmoveto(xO,yO);setcolor(GREEN);vector(am,d-10);delay(lOOO); // задержка// стереть стрелкиsetcolor(0);// секунднуюmoveto(xO,yO);vector(as, d);// минутнуюmoveto(xO,yO);vector(am,d-10);S++;208C/C-f"^ в задачах и примерахif (s > 60) {m++;s = 0;am -== 6; // шаг движения минутной стрелки б градусовif (am < 0) am = 354;}as -= 6;if (as < 0) as = 354;} while ( ikbhitO}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode - graphresult();if (errorcode == grOk){clock();closegraph0; // выход из графического режима}else{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();})Задача 234// График функции#include <graphics.h>#include <stdio.h>#include <conio.h>#include <math.h>Часть II.
Решения209_tdefine PATHTODRIVER "с:\\borlandc\\bgi\\"// функции, график которых надо построитьfloat fl(float X){retum(2 * sin(x) * exp(x/5));void grafik(){float xl=0,//х2=25;float у1,у2; //float х;//float у;//float dx=0.01;int 1=50,//Ь=400;int w=300,//h=200;float mx,my; //int хО,уО;//char St[25]; //границы изменения аргумента функцииграницы изменения значения функцииаргумент функциизначение функции в точке х// приращение аргументалевый нижний угол области графикаширина и высота области графикамасштаб по осям X и Yточка - начало координатизображение числа// найдем максимальное и минимальное значение// функций на отрезке [х1,х2]у1 = fl(xl); // минимуму2 = fl(xl); // максимумX = х1 + dx;do {у = fl(x);if (у < yl) yl = у;if (у > у2) у2 = у;X += dx;} while (х <= х2);//тутх//вычислим масштаб по осям= h/fabs(у2-у1);= w/fabs(х2-х1);оси210C/C-^-i' в задачах и примераххО = 1;уО = b-abs(yl*my);line(l,b,l,b-h);Iine(x0,y0,x0+w,yO);// максимальное и минимальное значения функцииsprintf (St, "%3.2f',у2) ;outtextxy(l+5,b-h,St);sprintf(St,"%3.2f",yl);outtextxy(l+5,b,st);// построение графикаX = xl;do {у = f 1 (X) ;putpixel (xO+x*inx, yO-y*my, 15);X += dx;} while (x <= x2);void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode == grOk){grafikO ;getchar();closegraph();}else {printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();}Часть II.
РешенияЗадача 235// Создает на диске файлtinclude "stdio.h"#include "conio.h"#define FNAME "a:\\nuinbers.txt\0" // имя файла#define N 5// количество чисел// Создает на диске А: файл и записывает в него// целые числа, введенные пользователемvoid main(){char fname[20] = FNAME;FILE *out; // файл чиселint n;// числоputs("ХпСоздание файла");printf("Введенные числа будут записаны в файл");printf("%s\n", fname);puts("После ввода каждого числа нажимайте <Enter>\n");//////////if{Открыть файл в режиме записи (w) текста (t)Если файл с таю1м именем уже есть, то новыеданные будут записаны поверх старыхДля дозаписи в конец файла используйтережим добавления (а)((out = fopen(fname, "wt")) == NULL)printf("Ошибка открытия файла для записи");getch();ret\2m;}for (int i = 0; i < N; i++){printf("->");scanf("%i", &n);fprintf(out,"%i",n) ;}fclose(out);// закрыть файл211212C/C-f-t- в задачах и примерахprintf("Введенные числа записаны в файл %s\n", fname);puts("\nJUTR завершения нажмите <Enter>");getch();Задача 236// Добавляет данные в файл#include "stdio.h"#include "conio.h"tdefine FNAME "a: Wnuinbers.
txt\0" // имя файла#define N 5// количество чисел// Дописывает в находящийся на диске А: файл// целые числа, введенные пользователемvoid main(){char fname [20] = FNAiyiE;FILE *out; // файл чиселint n;// числоputs("ХпДобавление в файл");printf("Введенные числа будут добавлены в файл");printf("%s\n", fname);puts("После ввода каждого числа нажимайте <Enter>\n");// Открыть файл в режиме добавления (а) текста (t)// Если файла с таким именем нет, то он будет созданif ((out = fopen(fname, "at")) == NULL){printf("Ошибка открытия файла для добавления");getch();return;}for (int i = 0; i < N; i++){printf("->");scanf("%i", &n);fprintf(out,"%i\n",n);Часть II. Решенияfclose(out);// закрыть файлprintf("Введенные числа добавлены в файл %s\n", fname);puts("\nXlnH завершения нажмите <Enter>");getch();}Задача 237// Выводит на экран содержимое файла#include "stdio.h"#include "conio.h"#define FNAME "a: \\nuinbers.txt\0" // УЕЬЛЯ файлаvoid mainO{char fname[20] = FNAME;FILE *in;// текстовый файлсЬгиг St [80]; // строка из файлаprintf("ХпСодержимое файла %s\n", fname);puts ("") ;// Открыть файл в режиме чтения (г) текста (t)if ((in = fopen(fname, "rt")) == NULL){printf("Ошибка открытия файла для чтения");getch();retiim;}while (!feof(in)){fscanf(in,"%s", &st);printf("%s\n", st);}fclose(in);// закрыть файлputs ("");puts("\nДля завершения нажмите <Enter>");getch();213214С/С->'+ в задачах и примерахЗадача 238// Вычисляет среднее арифметическое чисел,// находящихся в файлах#include "stdio.h"#include "conio.h"#define FNAME "a:\\numbers.txt\0" // имя файлаvoid mainO{char fname[20] = FNAME;FILE *in;// текстовый файлint a;int n - 0;int sum = 0 ;float sr;////////числоколичество чиселсумма чиселсреднее арифметическоеputs("\пВычисление среднего арифметического");printf("чисел, находящихся в файле %s", fname);// Открыть файл в режиме чтения (г) текста (t)if {(in = fopen(fname, "rt")) == NULL){printf("Ошибка открытия файла для чтения");getch();return;}while (!feof(in)){fscanf(in,"%i", &a);sum += a;n++;}fclose(in);// закрыть файлsr = (float) sum / n;printf("Введено чисел: %i\n", n ) ;printf("Сумма 4Vic^Ji: %i\n", sum);printf("Среднее арифметическое: %3.2f", sr);Часть И.
Решения215p u t s ( " \ n Д л я завершения нажмите < E n t e r > " ) ;getch();}Задача 239// Выводит на экран содержимое файла,// имя которого указано пользователем#include "stdio.h"#include "conio.h"#include "string.h"#define MAXLEN 80void main(){char fname[40];FILE *in;// максимальная длина строки в файле// имя файла// текстовый файлchar St[MAXLEN+2];// строка, прочитанная из файлаint n = 0;// кол-во строк, выведенных на экранchar key;// клавиша, нажатая пользователемputs("Просмотр текстового файла");puts("Введите полное имя файла и нажмите <Enter>");ргintf("->");scanf("%s",&fname);// Открыть файл в режиме' чтения (г) текста (t)if ((in = fopen(fname, "rt")) == NULL){printf("Ошибка при обращении к файлу %s\n", fname);getch();return;clrscr0;while (!feof(in)){fgets(st, MAXLEN, in);printf("%s", St);if (++n > 21)216С/С-^-^ в задачах и примерах{printf("\пДля продолжения нажмите");printf("любую клавишу...");key = getch();gotoxy(1,wherey()); // курсор в начало текущей// строкиdelline;// удалить сообщение "Для// продолжения ..."п = 0;}}fclose(in);// закрыть файлprintf("\пДля завершения нажмите <Enter>");getch();}Задача 240// Дописывает в файл фамилию, имя и номер телефонаtinclude "stdio.h"#include "conio.h"#define FNAME "a:Wphone.txt\0" // имя файлаvoid main(){char fname[20] = FNAME;FILE *out; // файл чиселchar fam[15]; // фамилияchar name[15]; // имяchar tel[9];// номер телефонаputs("ХпДобавление в телефонный справочник");// Открыть файл в режиме добавления (а) текста (t)// Если файла с таким именем нет, то он будет созданif ((out = fopen(fname, "at")) == NULL){printf("Ошибка открытия файла для добавления");getch();Часть II.
Решения217return;}// получим данные от пользователяprintf("Фамилия ->");scanf("%s", &fam) ;printf("Имя ->");scanf("%s", &name);printf("Телефон ->");scanf("%s", &tel);/ / и запишем их в файлfprintf(out,"%s %s %s", fam, name, tel);puts("Информация добавлена");fclose(out);// закрыть файлprintf("\п\пДля завершения нажмите <Enter>\n");getch();}Задача 242// Поиск в телефонном справочнике#include "stdio.h"#include "conio.h"#define FNAME "a:Wphone.txt\0" // имя файлаvoid main(){char fname[20] = FNAME;FILE *in;// файл - телефонный справочникchar obr[15];// фамилия - образец для поиска в БД// найденная информацияchar fam[15]; // фамилияchar name[15]; // имяchar tel [9];// номер телефонаint n = 0; // количество записей, удовлетворяющих запросуputs("ХпПоиск в телефонном справочнике");218C/C'^^'^' в задачах и примерах// Открыть файл в режиме чтения (г) текста (t)if ((in = fopen(fname, "rt")) == NULL){p r i n t f ("Ошибка открытия файла %s", fnaitie) ;getch();return;}// получим данные от пользователяprintf("Фамилия - > " ) ;scanf("%s", &obr);// образец для поиска в БДwhile (!feof(in)){fscanf(in,"%s %s %s", &fam, &name, &tel);if (fam == obr){printf("%s %s %s",fam, name, tel);n++;}}if (n )printf("Найдено записей: %i", n ) ;elseprintf("Данных об абоненте %s в БД нет", obr);fclose(in);// закрыть файлputs("\nДля завершения нажмите <Enter>");getch();}Задача 244// Универсальная программа тестирования// имя файла теста задается в инструкции запуска программы#include "stdio.h"#include "conio.h"#include "string.h"void inain(int argc, char* argv[]){Часть II.