Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по летней практике 2012 года (Дмитренко П...docx
Скачиваний:
66
Добавлен:
08.11.2019
Размер:
97.8 Кб
Скачать

3) Используемые технические средства

Интегрируемая среда разработчика Microsoft Visual Studio.

4) Входные и выходные данные

Входные данные: название текстового файла, считываемый текст из файла. Выходные данные: текст (в котором буквы обозначаются ‘2’, знаки препинания – ‘ ’), количество слов одинаковой длины, суммарное количество слов, процентное содержание слов одинаковой длины, округленные значения количества слов одинаковой длины, гистограмма частот появления слов одинаковой длины.

6.Вывод

Программа «practica» считывает текст из заданного файла и строит гистограмму частот появления слов одинаковой длины. Для правильного функционирования программы необходима операционная система Microsoft Windows 95 или более поздние версии, а также 1328КБ свободной памяти. Программа компилируется с помощью интегрируемой среды разработчика Microsoft Visual Studio. Программа отлажена и проверена по разработанной программе испытаний.

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

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <locale>

#include <math.h>

#include <windows.h>

#include <string.h>

//-----------------------//

const int KEY_ENTER = 13; // Клавиша Enter

const int KEY_UP = 72; // Клавиша Cursor Up

const int KEY_DOWN = 80; // Клавиша Cursor Down

//-----------------------//

int menu();

void DrawBorder(HANDLE); // Рисуем рамочку вокруг меню

void DrawMenu(HANDLE,int); // Рисуем пункты меню// В параметрах передаётся выбранный пункт меню

//-----------------------//

void vvodfaila();

void vihod();

int smenu=1;

void main()

{

int choose; // Выбранный пункт меню

system("cls"); // Очистка экрана

while (1)

{

choose = menu();

switch (choose)

{

case 1: vvodfaila(); break; // Вводим название файла

case 2: exit(0); break; // Выход

}

}

return;

}

//выбор пункта меню

int menu()

{

system("cls");

HANDLE dys;

dys = GetStdHandle(STD_OUTPUT_HANDLE);

DrawBorder(dys); // Рисуем рамочку вокруг меню

// Опрос клавиш

int key=0;

DrawMenu(dys,smenu); // Рисуем пункты меню

while (key!=KEY_ENTER)

{

key = getch();

// Нажали вверх?

if (key==KEY_UP)

{

// Переходим к предыдущему пункту меню,

// если можем и перерисовываем меню

if (--smenu<1)

smenu=1;

DrawMenu(dys,smenu);

}

// нажали вниз?

else if (key==KEY_DOWN)

{

// Переходим к следующему пункту меню,

// если можем и перерисовываем меню

if (++smenu>4)

smenu=4;

DrawMenu(dys,smenu);

}

}

return smenu;

}

void DrawBorder(HANDLE dys)

{

// Определяем координаты рамки, цвет её, вид

const int left = 80/2-32/2;

const int top = 20/2-6/2;

char ramka[2][33];

strcpy(ramka[0],"+------------------------------+");

strcpy(ramka[1],"| |");

COORD position;

// Устанавливаем цвет и координаты

position.X = left;

position.Y = top;

SetConsoleTextAttribute(dys,FOREGROUND_GREEN|FOREGROUND_INTENSITY);

SetConsoleCursorPosition(dys,position);

// выводим верхнюю часть рамки

printf("%s",ramka[0]);

// выводим середину

for (int i=0; i<2; i++)

{

position.X = left;

position.Y++;

SetConsoleCursorPosition(dys,position);

printf("%s",ramka[1]);

}

// выводим нижнюю часть

position.X = left;

position.Y++;

SetConsoleCursorPosition(dys,position);

printf("%s",ramka[0]);

// Устанавливаем курсор в левый верхний угол

position.X = 0;

position.Y = 0;

SetConsoleCursorPosition(dys,position);

SetConsoleTextAttribute(dys,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);

return;

}

void DrawMenu(HANDLE dys1,int select)

{

// Константы выбирающие место вывода на экран

const int left = 80/2-32/2+1;

const int top = 20/2- 6/2+1;

COORD pos;

char textmenu[4][31];

// Пункты меню

strcpy(textmenu[0]," 1. Vibrat fail s textom ");

strcpy(textmenu[1]," 2. Exit ");

// Вывод пунктов меню

for (int i=0; i<2; i++)

{

// В зависимости от выбранного пункта меню выставляем цвет

if (select==i+1)

SetConsoleTextAttribute(dys1,BACKGROUND_GREEN);

else

SetConsoleTextAttribute(dys1,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY);

// Выводим

pos.X = left;

pos.Y = top+i;

SetConsoleCursorPosition(dys1,pos);

printf("%s",textmenu[i]);

}

// Устанавливаем курсор в левый верхний угол

pos.X = 0;

pos.Y = 0;

SetConsoleCursorPosition(dys1,pos);

SetConsoleTextAttribute(dys1,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);

return;

}

void vvodfaila()

{

system("cls");

char o[15];

FILE *pr;

printf("Vvedite nazvanie faila\n"); scanf("%s",o);

while ((pr=fopen(o,"rt"))==NULL)

{

if ((pr=fopen(o,"rt"))==NULL)

{

printf("Ne mogy otkrit fail,popitaites snova\n");

}

printf("Vvedite nazvanie faila\n"); scanf("%s",o);

}

HANDLE dys;

dys = GetStdHandle(STD_OUTPUT_HANDLE);

char text[100];

int i,y=0,d,s=0,q,f; int z=0,x=0,c=0,v=0,b=0,n=0,m=0,l=0,k=0,p=0; double t,r,r1;

int z2,x2,c2,v2,b2,n2,m2,l2,k2,j2,p2;

for (d=0;d<100;d++)

{

text[d]=0;

}

while( !feof(pr) )

{

if((fgets(text,sizeof(text),pr))==0) break; s=0;

for(i=0;text[s]!='\0';i++)

{

for (y=0;(isalpha(text[s])==2)&&(text[s]!='\0'); s++,y++)

{

q=isalpha(text[s]);

printf ("%d", q);

}

printf(" ");

switch (y)

{

case 0: break;

case 1: z=z+1; break;

case 2: x=x+1; break;

case 3: c=c+1; break;

case 4: v=v+1; break;

case 5: b=b+1; break;

case 6: n=n+1; break;

case 7: m=m+1; break;

case 8: l=l+1; break;

case 9: k=k+1; break;

default: p=p+1; break;

}

if (text[s]!='\0') s=s+1;

}

}

printf ("\n\n%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n\n",z,x,c,v,b,n,m,l,k,p);

fclose(pr);

r=z+x+c+v+b+n+m+l+k+p;

t=r/100;

printf ("%d, %f\n\n",int(r),t);

double(z1)=z/t;

double(x1)=x/t;

double(c1)=c/t;

double(v1)=v/t;

double(b1)=b/t;

double(n1)=n/t;

double(m1)=m/t;

double(l1)=l/t;

double(k1)=k/t;

double(p1)=p/t;

printf ("%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n\n",z1,x1,c1,v1,b1,n1,m1,l1,k1,p1);

z2=floor(z1); x2=floor(x1); c2=floor(c1); v2=floor(v1); b2=floor(b1);

n2=floor(n1); m2=floor(m1); l2=floor(l1); k2=floor(k1); p2=floor(p1);

r1=z2+x2+c2+v2+b2+n2+m2+l2+k2+p2; printf ("%Lf\n",r1);

int z3,x3,c3,v3,b3,n3,m3,l3,k3,p3;

z3=fmodl(z2,10); if ((3<=z3)&&(z3<=7)) z3=z2-z3+5; if ((0<=z3)&&(z3<=2)) z3=z2-z3; if ((z3==8)||(z3==9)) z3=z2-z3+10; printf ("\n%d",z3);

x3=fmodl(x2,10); if ((3<=x3)&&(x3<=7)) x3=x2-x3+5; if ((0<=x3)&&(x3<=2)) x3=x2-x3; if ((x3==8)||(x3==9)) x3=x2-x3+10; printf ("\n%d",x3);

c3=fmodl(c2,10); if ((3<=c3)&&(c3<=7)) c3=c2-c3+5; if ((0<=c3)&&(c3<=2)) c3=c2-c3; if ((c3==8)||(c3==9)) c3=c2-c3+10; printf ("\n%d",c3);

v3=fmodl(v2,10); if ((3<=v3)&&(v3<=7)) v3=v2-v3+5; if ((0<=v3)&&(v3<=2)) v3=v2-v3; if ((v3==8)||(v3==9)) v3=v2-v3+10; printf ("\n%d",v3);

b3=fmodl(b2,10); if ((3<=b3)&&(b3<=7)) b3=b2-b3+5; if ((0<=b3)&&(b3<=2)) b3=b2-b3; if ((b3==8)||(b3==9)) b3=b2-b3+10; printf ("\n%d",b3);

n3=fmodl(n2,10); if ((3<=n3)&&(n3<=7)) n3=n2-n3+5; if ((0<=n3)&&(n3<=2)) n3=n2-n3; if ((n3==8)||(n3==9)) n3=n2-n3+10; printf ("\n%d",n3);

m3=fmodl(m2,10); if ((3<=m3)&&(m3<=7)) m3=m2-m3+5; if ((0<=m3)&&(m3<=2)) m3=m2-m3; if ((m3==8)||(m3==9)) m3=m2-m3+10; printf ("\n%d",m3);

l3=fmodl(l2,10); if ((3<=l3)&&(l3<=7)) l3=l2-l3+5; if ((0<=l3)&&(l3<=2)) l3=l2-l3; if ((l3==8)||(l3==9)) l3=l2-l3+10; printf ("\n%d",l3);

k3=fmodl(k2,10); if ((3<=k3)&&(k3<=7)) k3=k2-k3+5; if ((0<=k3)&&(k3<=2)) k3=k2-k3; if ((k3==8)||(k3==9)) k3=k2-k3+10; printf ("\n%d",k3);

p3=fmodl(p2,10); if ((3<=p3)&&(p3<=7)) p3=p2-p3+5; if ((0<=p3)&&(p3<=2)) p3=p2-p3; if ((p3==8)||(p3==9)) p3=p2-p3+10; printf ("\n%d",p3);

char(a)='%'; char z4[5];

for (f=20;f>0;f--)

{

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (z3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_GREEN); if (z3==(f*5-10)) printf("~%d%c\t",z2,a); else if (z3==(f*5-5)){ printf(" _ \t");} else if (z3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (x3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_BLUE); if (x3==(f*5-10)) printf("~%d%c\t",x2,a); else if (x3==(f*5-5)){ printf(" _ \t");} else if (x3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (c3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_RED); if (c3==(f*5-10)) printf("~%d%c\t",c2,a); else if (c3==(f*5-5)){ printf(" _ \t");} else if (c3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (v3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_GREEN|FOREGROUND_BLUE); if (v3==(f*5-10)) printf("~%d%c\t",v2,a); else if (v3==(f*5-5)){ printf(" _ \t");} else if (v3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (b3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_BLUE|FOREGROUND_RED); if (b3==(f*5-10)) printf("~%d%c\t",b2,a); else if (b3==(f*5-5)){ printf(" _ \t");} else if (b3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (n3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_RED|FOREGROUND_BLUE); if (n3==(f*5-10)) printf("~%d%c\t",n2,a); else if (n3==(f*5-5)){ printf(" _ \t");} else if (n3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (m3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_GREEN|FOREGROUND_RED); if (m3==(f*5-10)) printf("~%d%c\t",m2,a); else if (m3==(f*5-5)){ printf(" _ \t");} else if (m3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (l3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_GREEN|FOREGROUND_INTENSITY); if (l3==(f*5-10)) printf("~%d%c\t",l2,a); else if (l3==(f*5-5)){ printf(" _ \t");} else if (l3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (k3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_BLUE|FOREGROUND_INTENSITY); if (k3==(f*5-10)) printf("~%d%c\t",k2,a); else if (k3==(f*5-5)){ printf(" _ \t");} else if (k3>=(f*5)) printf ("| |\t"); else printf (" \t");}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN);if (p3!=0) {SetConsoleTextAttribute(dys,FOREGROUND_RED|FOREGROUND_INTENSITY); if (p3==(f*5-10)) printf("~%d%c\t",p2,a); else if (p3==(f*5-5)){ printf(" _ \t");} else if (p3>=(f*5)) printf ("| |\t"); else printf (" \t");}

printf ("\n");

}

SetConsoleTextAttribute(dys,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);

printf ("____________________________________________________________________\n");

if (z3!=0) printf (" 1 \t");

if (x3!=0) printf (" 2 \t");

if (c3!=0) printf (" 3 \t");

if (v3!=0) printf (" 4 \t");

if (b3!=0) printf (" 5 \t");

if (n3!=0) printf (" 6 \t");

if (m3!=0) printf (" 7 \t");

if (l3!=0) printf (" 8 \t");

if (k3!=0) printf (" 9 \t");

if (p3!=0) printf (" >9 \t");

printf ("grafic\n");

// Пауза до нажатия клавиши

getch();

return;

}