I.G.O.R.E.K.
>Toxic moder
- Регистрация
- 28 Ноя 2008
- Сообщения
- 762
- Реакции
- 3
- Баллы
- 0
- Возраст
- 32
- Адрес
- Пермь
- Веб-сайт
- Посетить сайт
Думаю, некоторых эта тема может затронуть в какой то мере.
#include <stdio.h>
const int N=32;
char arr[N];
FILE *f_out;
int main(void)
{
f_out = fopen("test1.out","w");
int x,y,z,d;
for (int k=0;k<N; k++)
arr[k]='0';
for (x=0; x<N; x++)
{
printf("%d ",x);
for(y=x+1; y<N; y++)
{
for(z=y+1; z<N; z++)
{
for(d=z+1; d<N; d++)
{
arr[x]='1';
arr[y]='1';
arr[z]='1';
arr[d]='1';
fprintf(f_out,"%.32s \n",arr);
arr[x]='0';
arr[y]='0';
arr[z]='0';
arr[d]='0';
}
}
}
}
printf("1");
for (int k=0;k<N; k++)
arr[k]='0';
for(y=0; y<N; y++)
{
for(z=y+1; z<N; z++)
{
for(d=z+1; d<N; d++)
{
arr[y]='1';
arr[z]='1';
arr[d]='1';
fprintf(f_out,"%.32s \n",arr);
arr[y]='0';
arr[z]='0';
arr[d]='0';
}
}
}
printf("2");
for (int k=0;k<N; k++)
arr[k]='0';
for(z=0; z<N; z++)
{
for(d=z+1; d<N; d++)
{
arr[z]='1';
arr[d]='1';
fprintf(f_out,"%.32s \n",arr);
arr[z]='0';
arr[d]='0';
}
}
printf("3");
for (int k=0;k<N; k++)
arr[k]='0';
for(d=0; d<N; d++)
{
arr[d]='1';
fprintf(f_out,"%.32s \n",arr);
arr[d]='0';
}
for (int k=0;k<N; k++)
arr[k]='0';
printf("4");
for(d=0; d<N; d++)
{
arr[d]='0';
}
fprintf(f_out,"%.32s \n",arr);
fclose(f_out);
}
#include <stdio.h>
#define N 100
#define M 350
int word[N];
char phrase[M];
char mas[M][M];
int numbers[M];
void main(void)
{
char c=0;
printf("Input word\t");
int i=0;
int length_word=0;
while((c=getchar())!='\n')
{
word[i]=c;
i++;
length_word++;
}
i=0;
int j=0;
int u=0;
int count=0;
int g=0;
printf("Input phrase\t");
do
{
c=getchar();
if ((c!=' ') && (c!=',') && (c!='\n'))
{
mas[i][j]=c;
j++;
}
else
{
g++;
numbers[u]=j;
u++;
i++;
j=0;
count++;
}
}
while(c!='\n');
if (count>=2)
{
int max=numbers[i]+numbers[i+1];
int place=0;
for (i=0;i<count;i++)
{
if (max<(numbers[i+1]+numbers[i+2]))
{
place=i+1;
max=(numbers[i+1]+numbers[i+2]);
}
}
//printf("%d\n",max); printf("%d\n",place);
if (g==2)
{
for(i=0;i<(place);i++)
{
for(j=0;j<=numbers[i];j++)
{
printf("%c",mas[i][j]);
}
printf(" ");
}
for(i=0;i<length_word;i++)
printf("%c",word[i]);
printf(" ");
for(i=(place);i<u;i++)
{
for(j=0;j<=numbers[i];j++)
{
printf("%c",mas[i][j]);
}
printf(" ");
}
printf("\n");
}
else
{
if ((u%2)==0)
{
for(i=0;i<=(place);i++)
{
for(j=0;j<=numbers[i];j++)
{
printf("%c",mas[i][j]);
}
printf(" ");
}
for(i=0;i<length_word;i++)
printf("%c",word[i]);
printf(" ");
for(i=(place+1);i<u;i++)
{
for(j=0;j<=numbers[i];j++)
{
printf("%c",mas[i][j]);
}
printf(" ");
}
printf("\n");
}
else
{
for(i=0;i<(place+1);i++)
{
for(j=0;j<=numbers[i];j++)
{
printf("%c",mas[i][j]);
}
printf(" ");
}
for(i=0;i<length_word;i++)
printf("%c",word[i]);
printf(" ");
for(i=(place+1);i<u;i++)
{
for(j=0;j<=numbers[i];j++)
{
printf("%c",mas[i][j]);
}
printf(" ");
}
}
}
}
else
{
printf("You have entered less than 2 words\n");
}
}
змейку выложи, может еще кому-нибудь пригодитьсяP.S. А почему нельзя делать отступы от начала строчки в посте О_о((программа некрасиво выглядит.
Кому интересно, могу выложить змейку.
:huh:
program snake;
uses crt;
var
a:array of array of integer;
ch:char;
x,y,i,j,z,s,g,k,t,e:integer;
d:boolean;
n,m:byte;
begin
clrscr;
setlength(a,3,2);
x:=3;
y:=1;
z:=2;
g:=1;
i:=1;
t:=0;
d:=false;
randomize;
n:=40;
m:=12;
clrscr;
textcolor(red);write('Введите скорость');readln(e);
a[0,0]:=1; a[0,1]:=1;
a[1,0]:=2; a[1,1]:=1;
a[2,0]:=3; a[2,1]:=1;
repeat
if d=true then begin textcolor(red);gotoxy(1,1);write('Ты Неудачник,очков получил:',t);
readln;{delay(2000);} break;
end;
if keypressed=true then ch:=readkey;
gotoxy(1,1);
delay(e);
clrscr;
case ch of
#72:begin j:=-1;i:=0;end;
#80:begin j:=1;i:=0;end;
#75:begin i:=-1;j:=0;end;
#77:begin i:=1;j:=0;end;
end;
x:=x+i; y:=y+j;
if(x<1) or (y<1) or (x>80) or (y>25) then begin textcolor(red);gotoxy(1,1);
write('Ты неудачник, очков набрано:',t);readln;{delay(2000);}break;
end;
textcolor(10);
for k:=z downto 1 do
begin
gotoxy(a[k,0],a[k,1]);
write('*');
end;
if (x=n) and (y=m) then begin;
z:=z+1;
inc(t);
setlength(a,z+1,2);
n:=random(79)+1;
m:=random(24)+1;
end;
a[z,0]:=x; a[z,1]:=y;
for k:=0 to z-1 do
begin
a[k,0]:=a[k+1,0];
a[k,1]:=a[k+1,1];
end;
textcolor(13);
gotoxy(n,m);
write('*');
for k:=0 to z-2 do if (x=a[k,0]) and (y=a[k,1]) then d:=true;
gotoxy(a[z,0],a[z,1]);
write('@');
textcolor(15);
gotoxy(1,1);textcolor(green);write('Очки:',t);
until ch=#27;
End.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Edit1: TEdit;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s:string[255];a,b:real;op:integer;
implementation
{$R *.dfm}
procedure TForm1.Button10Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'0';
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
if Edit1.Text='' then exit;
b:=strtofloat(Edit1.Text);
if (op=1) then Edit1.Text:=Floattostr(a+b);
if (op=2) then Edit1.Text:=Floattostr(a-b);
if (op=3) then Edit1.Text:=Floattostr(a*b);
if (op=4) then Edit1.Text:=Floattostr(a/b);
if (op=5) then Edit1.Text:=Floattostr(a*a);
if (op=6) then Edit1.Text:=Floattostr(a*a*a);
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
if Edit1.Text='' then exit;
a:=strtofloat(Edit1.Text);
Edit1.Text:='';
op:=1;
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
if Edit1.Text='' then exit;
a:=strtofloat(Edit1.Text);
Edit1.Text:='';
op:=2;
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
if Edit1.Text='' then exit;
a:=strtofloat(Edit1.Text);
Edit1.Text:='';
op:=3;
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
if Edit1.Text='' then exit;
a:=strtofloat(Edit1.Text);
Edit1.Text:='';
op:=4;
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
Edit1.Text:='';
end;
procedure TForm1.Button1Click(Sender:TObject);
begin
Edit1.Text:=Edit1.Text+'1';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'2';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'3';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'4';
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'5';
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'6';
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'7';
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'8';
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'9';
end;
procedure TForm1.Button17Click(Sender: TObject);
begin
if Edit1.Text='' then exit;
a:=strtofloat(Edit1.Text);
Edit1.Text:='';
op:=5;
end;
procedure TForm1.Button18Click(Sender: TObject);
begin
if Edit1.Text='' then exit;
a:=strtofloat(Edit1.Text);
Edit1.Text:='';
op:=6;
end;
end.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
FILE *f_out;
#define N 50
#define M 50
#define PEOPLE 100
void menu();
void new_f();
void con_menu();
void show();
void search();
void save();
void correct();
void add();
void delete_f();
void load();
bool flag2;
#pragma pack(push)
#pragma pack(1)
struct phonebook
{
long phone;
char name[N];
char sirname[N];
int length_1;
int length_2;
int year_birth;
int month_birth;
int day_birth;
} persons[PEOPLE];
#pragma pack(pop)
int count;
void main(void)
{
int i,j;
i=0;
count=0;
j=0;
int u=0;
char c=0;
/*printf("Input number of records you want to fill in\n");
f_out=fopen("test.out","wb");
scanf("%d",&count);
system("cls");
c=getchar();
{
for (i=0;i<count;i++)
{
printf("Input information about the ");
printf("%d",i+1);
printf(" person\n");
printf("Input name\t");
do
{
c=getchar();
if ((c!=' ') && (c!=',') && (c!='\n'))
{
persons[i].name[j]=c;
j++;
}
}
while (c!='\n');
//persons[i].name[j] = 0;
persons[i].length_1=j;
j=0;
printf("Input surname\t");
do
{
c=getchar();
if ((c!=' ') && (c!=',') && (c!='\n'))
{
persons[i].sirname[j]=c;
j++;
}
}
while (c!='\n');
persons[i].length_2=j;
//persons[i].sirname[j] = 0;
j=0;
printf("Input phone\t");
scanf("%d",&persons[i].phone);
printf("Input day of birth\t");
scanf("%d",&persons[i].day_birth);
printf("Input month of birth\t");
scanf("%d",&persons[i].month_birth);
printf("Input year of birth\t");
scanf("%d",&persons[i].year_birth);
system("cls");
c=getchar();
}
}
system("cls");
fprintf(f_out,"%d\n",count);
fprintf(f_out,"%d\n",count);
for (int u=0;u<count;u++)
{
fprintf(f_out,"%s\n",persons[u].name);
fprintf(f_out,"%s\n",persons[u].sirname);
fprintf(f_out,"%d\n",persons[u].day_birth);
fprintf(f_out,"%d\n",persons[u].length_1);
fprintf(f_out,"%d\n",persons[u].length_2);
fprintf(f_out,"%d\n",persons[u].month_birth);
fprintf(f_out,"%d\n",persons[u].phone);
fprintf(f_out,"%d\n",persons[u].year_birth);
}
fclose(f_out);*/
menu();
for(;;)
{
int flag=0;
c=getchar();
switch(c)
{
case '0':system("cls");delete_f();menu();break;
case '1':system("cls");search();menu();break;
case '2':system("cls");add();menu();break;
case '3':system("cls");correct();menu();break;
case '4':system("cls");show();menu();break;
case '5':system("cls");load();menu();break;
case '6':system("cls");new_f();menu();break;
case '7':system("cls");save();menu();break;
case '8':system("cls");flag=1;break;
}
if (flag==1)
break;
if (flag2)
fclose(f_out);
}
}
void menu()
{
printf("\n");
printf("0-delete record\n");
printf("1-find record\n");
printf("2-add record\n");
printf("3-correct record\n");
printf("4-show records\n");
printf("5-load base\n");
printf("6-start new base\n");
printf("7-save\n");
printf("8-exit\n");
printf("\n");
}
void con_menu()
{
char c=0;
system("cls");
printf("Choose the field you want to search\n");
printf("1-searching using name\n");
printf("2-searching using surname\n");
printf("3-searching using phone\n");
printf("4-searching using the year of birth\n");
printf("5-searching using the month of birth\n");
printf("6-searching using thr day of birth\n");
c=getchar();
}
void search()
{
//int k=0;
if (count!=0)
{
int j=0;
con_menu();
char key=getchar();
if (key=='5')
{
system("cls");
int month_s=0;
int k5=0;
printf("Input month of birth\t");
scanf("%d",&month_s);
for(j=0;j<count;j++)
{
if (persons[j].month_birth==month_s)
{
k5++;
printf("Name\t");
for (int u=0;u<persons[j].length_1;u++)
putchar(persons[j].name[u]);
printf(" ");
for (int u=0;u<persons[j].length_2;u++)
putchar(persons[j].sirname[u]);
printf("\n");
printf("Phone\t");
printf("%d\n",persons[j].phone);
printf("Date of Birth\t");
printf("%d",persons[j].day_birth);
printf(".");
printf("%d",persons[j].month_birth);
printf(".");
printf("%d\n",persons[j].year_birth);
}
}
if (k5==0)
printf("There is no such person in the base");
}
if (key=='6')
{
system("cls");
int day_s=0;
int k6=0;
printf("Input day of birth\t");
scanf("%d",&day_s);
for(j=0;j<count;j++)
{
if (persons[j].day_birth==day_s)
{
k6++;
printf("Name\t");
for (int u=0;u<persons[j].length_1;u++)
putchar(persons[j].name[u]);
printf(" ");
for (int u=0;u<persons[j].length_2;u++)
putchar(persons[j].sirname[u]);
printf("\n");
printf("Phone\t");
printf("%d\n",persons[j].phone);
printf("Date of Birth\t");
printf("%d",persons[j].day_birth);
printf(".");
printf("%d",persons[j].month_birth);
printf(".");
printf("%d\n",persons[j].year_birth);
}
}
if (k6==0)
printf("There is no such person in the base");
}
if (key=='3')
{
system("cls");
long phone_s=0;
int k1=0;
printf("Input phone\t");
scanf("%d",&phone_s);
for(j=0;j<count;j++)
{
if (persons[j].phone==phone_s)
{
k1++;
printf("Name\t");
for (int u=0;u<persons[j].length_1;u++)
putchar(persons[j].name[u]);
printf(" ");
for (int u=0;u<persons[j].length_2;u++)
putchar(persons[j].sirname[u]);
printf("\n");
printf("Date of Birth\t");
printf("%d",persons[j].day_birth);
printf(".");
printf("%d",persons[j].month_birth);
printf(".");
printf("%d\n",persons[j].year_birth);
}
}
if (k1==0)
printf("There is no such person in the base");
}
if (key=='4')
{
int k2=0;
system("cls");
int date_s=0;
printf("Input year of birth\t");
scanf("%d",&date_s);
for (j=0;j<count;j++)
{
if (persons[j].year_birth==date_s)
{
k2++;
printf("Name\t");
for (int u=0;u<persons[j].length_1;u++)
putchar(persons[j].name[u]);
printf(" ");
for (int u=0;u<persons[j].length_2;u++)
putchar(persons[j].sirname[u]);
printf("\n");
printf("Phone\t");
printf("%d\n",persons[j].phone);
printf("Date of Birth\t");
printf("%d",persons[j].day_birth);
printf(".");
printf("%d",persons[j].month_birth);
printf(".");
printf("%d\n",persons[j].year_birth);
}
}
if (k2==0)
printf("There is no such person in the base");
}
if (key=='1')
{
int dl=0;
int k3=0;
system("cls");
char name_1[N];
printf("Input name\t");
scanf("%s",&name_1);
dl=strlen(name_1)-1;
for (j=0;j<count;j++)
{
int schet1=0;
if (dl!=persons[j].length_1-1)
{
}
else
{
for(int i=0;i<persons[j].length_1;i++)
{
if (persons[j].name[i]!=name_1[i])
schet1++;
}
if (schet1==0)
{
k3++;
printf("Surname\t");
for (int u=0;u<persons[j].length_2;u++)
putchar(persons[j].sirname[u]);
printf("\n");
printf("Phone\t");
printf("%d\n",persons[j].phone);
printf("Date of Birth\t");
printf("%d",persons[j].day_birth);
printf(".");
printf("%d",persons[j].month_birth);
printf(".");
printf("%d\n",persons[j].year_birth);
}
}
}
if (k3==0)
printf("There is no such person in the base\n");
}
if (key=='2')
{
int dl=0;
int k4=0;
system("cls");
char sirname_1[N];
printf("Input surname\t");
scanf("%s",&sirname_1);
dl=strlen(sirname_1)-1;
for (j=0;j<count;j++)
{
int schet2=0;
if (dl!=persons[j].length_2-1)
{
}
else
{
for(int i=0;i<persons[j].length_2;i++)
{
if (persons[j].sirname[i]!=sirname_1[i])
schet2++;
}
if (schet2==0)
{
k4++;
printf("Name\t");
for (int u=0;u<persons[j].length_1;u++)
putchar(persons[j].name[u]);
printf("\n");
printf("Phone\t");
printf("%d\n",persons[j].phone);
printf("Date of Birth\t");
printf("%d",persons[j].day_birth);
printf(".");
printf("%d",persons[j].month_birth);
printf(".");
printf("%d\n",persons[j].year_birth);
}
}
}
if (k4==0)
printf("There is no such person in the base\n");
}
}
else
printf("The base is empty");
}
void add()
{
char c=0;
system("cls");
c=getchar();
int j=0;
persons[count].length_1=0;
persons[count].length_2=0;
printf("Adding information about the ");
printf("%d",count+1);
printf(" person\n");
printf("Input name\t");
do
{
c=getchar();
if ((c!=' ') && (c!=',') && (c!='\n'))
{
persons[count].name[j]=c;
j++;
}
}
while (c!='\n');
//persons[count].name[j] = 0;
persons[count].length_1=j;
j=0;
printf("Input surname\t");
do
{
c=getchar();
if ((c!=' ') && (c!=',') && (c!='\n'))
{
persons[count].sirname[j]=c;
j++;
}
}
while (c!='\n');
persons[count].length_2=j;
//persons[count].sirname[j] = 0;
j=0;
printf("Input phone\t");
scanf("%d",&persons[count].phone);
printf("Input day of birth\t");
scanf("%d",&persons[count].day_birth);
printf("Input month of birth\t");
scanf("%d",&persons[count].month_birth);
printf("Input year of birth\t");
scanf("%d",&persons[count].year_birth);
system("cls");
c=getchar();
count++;
}
void show()
{
int j=0;
system("cls");
for (j=0;j<count;j++)
{
printf("Name\t");
for (int u=0;u<persons[j].length_1;u++)
putchar(persons[j].name[u]);
printf(" ");
for (int u=0;u<persons[j].length_2;u++)
putchar(persons[j].sirname[u]);
printf("\n");
printf("Phone\t");
printf("%d\n",persons[j].phone);
printf("Date of Birth\t");
printf("%d",persons[j].day_birth);
printf(".");
printf("%d",persons[j].month_birth);
printf(".");
printf("%d\n",persons[j].year_birth);
}
}
void delete_f()
{
if (count!=0)
{
system("cls");
printf("Input the number of the struct, you want to delete\t");
int num=0;
scanf("%d",&num);
if ((num<=count) && (num>=1))
{
int per=num-1;
int i=0;
int j=0;
for (int u=per;(u+1)<count;u++)
{
for (i=0;i<persons[u+1].length_1;i++)
{
persons[u].name[i]=persons[u+1].name[i];
}
for (i=0;i<persons[u+1].length_2;i++)
{
persons[u].sirname[i]=persons[u+1].sirname[i];
}
persons[u].day_birth=persons[u+1].day_birth;
persons[u].month_birth=persons[u+1].month_birth;
persons[u].year_birth=persons[u+1].year_birth;
persons[u].phone=persons[u+1].phone;
}
count--;
}
else
printf("There is no element you want to delete\n");
}
else
printf("The base is empty");
}
void correct()
{
if (count!=0)
{
system("cls");
char c=getchar();
printf("Input the number of the struct, you want to correct\t");
int num=0;
scanf("%d",&num);
if ((num<=count) && (num>=1))
{
for (int k=0;k<persons[num-1].length_1;k++)
persons[num-1].name[k]=' ';
for (int k=0;k<persons[num-1].length_2;k++)
persons[num-1].sirname[k]=' ';
persons[num-1].length_1=0;
persons[num-1].length_2=0;
int j=0;
int i=0;
i=num-1;
c=getchar();
printf("Input new name\t");
do
{
c=getchar();
if ((c!=' ') && (c!=',') && (c!='\n'))
{
persons[i].name[j]=c;
j++;
}
}
while (c!='\n');
//persons[i].name[j] = 0;
persons[i].length_1=j;
j=0;
printf("Input new surname\t");
do
{
c=getchar();
if ((c!=' ') && (c!=',') && (c!='\n'))
{
persons[i].sirname[j]=c;
j++;
}
}
while (c!='\n');
persons[i].length_2=j;
//persons[i].sirname[j] = 0;
j=0;
printf("Input new phone\t");
scanf("%d",&persons[i].phone);
printf("Input new day of birth\t");
scanf("%d",&persons[i].day_birth);
printf("Input new month of birth\t");
scanf("%d",&persons[i].month_birth);
printf("Input new year of birth\t");
scanf("%d",&persons[i].year_birth);
}
else
printf("There is no number you want to correct\n");
}
else
printf("The base is empty");
}
void save()
{
f_out=fopen("test.out","wb");
fprintf(f_out,"%d\n",count);
for (int u=0;u<count;u++)
{
fprintf(f_out,"%s\n",persons[u].name);
fprintf(f_out,"%s\n",persons[u].sirname);
fprintf(f_out,"%d\n",persons[u].day_birth);
fprintf(f_out,"%d\n",persons[u].length_1);
fprintf(f_out,"%d\n",persons[u].length_2);
fprintf(f_out,"%d\n",persons[u].month_birth);
fprintf(f_out,"%d\n",persons[u].phone);
fprintf(f_out,"%d\n",persons[u].year_birth);
}
system("cls");
fclose(f_out);
}
void load()
{
f_out=fopen("test.out","rb");
if (f_out== NULL)
{
printf("No file");
}
else
{
flag2=true;
}
fscanf(f_out,"%d",&count);
for (int u=0;u<count;u++)
{
fscanf(f_out,"%s",persons[u].name);
fscanf(f_out,"%s",persons[u].sirname);
fscanf(f_out,"%d",&persons[u].day_birth);
fscanf(f_out,"%d",&persons[u].length_1);
fscanf(f_out,"%d",&persons[u].length_2);
fscanf(f_out,"%d",&persons[u].month_birth);
fscanf(f_out,"%d",&persons[u].phone);
fscanf(f_out,"%d",&persons[u].year_birth);
}
system("cls");
fclose(f_out);
}
void new_f()
{
count=0;
for (int u=0;u<count;u++)
{
persons[u].length_1=0;
persons[u].length_2=0;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100000
#define M 8
#pragma pack(push)
#pragma pack(1)
struct sym
{
int n;
char ch;
float freq;
char code[255];
sym *left;
sym *right;
};
#pragma pack(pop)
void through_tree(sym *root);
sym *makeTree(sym *psym[],int k);
void makeCodes(sym *root);
FILE *fp,*fp2,*fp3;
struct read
{
char ch;
char code[255];
int len1;
}sim[256];
void main(void)
{
char mode=0;
char c=0;
int chh;
int k=0;
int kk=0;
int fsize2=0;
int ts;
int kolvo[256]={0};
sym simbols[256]={0};
sym *psym[256];
float summir=0;
int mes[8];
int j=0;
sym *symbols=(sym*)malloc(k*sizeof(sym));
sym **psum=(sym**)malloc(k*sizeof(sym*));
printf("a-code\n");
printf("d-recode\n");
printf("Input mode\t");
scanf("%c",&mode);
if (mode=='a')
{
printf("Input name of input file\t");
char name_in[N];
scanf("%s",name_in);
printf("Input name of output file\t");
char name_out[N];
scanf("%s",name_out);
fp=fopen(name_in,"rt");
if(fp==NULL)
{
puts("FILE NOT OPEN!!!!!!!");
}
else
{
fp2=fopen("teemp.txt","wt");
fp3=fopen("7777.txt","wt");
while((chh=fgetc(fp))!=EOF)
{
for(int j=0; j<256; j++)
{
if (chh==simbols[j].ch)
{
kolvo[j]++;
kk++;
break;
}
if (simbols[j].ch==0)
{
simbols[j].ch=(char)chh;
kolvo[j]=1;
k++;
kk++;
break;
}
}
}
for(int i=0;i<k;i++)
simbols[i].freq=(float)kolvo[i]/kk;
for(int i=0;i<k;i++)
psym[i]=&simbols[i];
sym tempp;
for(int i=1;i<k;i++)
for(int j=0;j<k-1;j++)
if(simbols[j].freq<simbols[j+1].freq)
{
tempp=simbols[j];
simbols[j]=simbols[j+1];
simbols[j+1]=tempp;
}
for(int i=0;i<k;i++)
{
summir+=simbols[i].freq;
}
sym *root=makeTree(psym,k);
makeCodes(root);
rewind(fp);
for(int i=0;i<k;i++)
{
sim[i].len1=strlen(simbols[i].code);
}
while((chh=fgetc(fp))!=EOF)
{
for(int i=0;i<k;i++)
if(chh==simbols[i].ch)
{
fwrite(simbols[i].code,sim[i].len1,1,fp2);
}
}
for (int i=0;i<k;i++)
fputc(simbols[i].ch,fp2);
//through_tree(root);
fclose(fp2);
fp2=fopen("teemp.txt","rt");
if(fp2==NULL)
{
puts("FILE NOT OPEN!!!!!!!");
}
else
{
unsigned long long int counter1=0;
int chhh=0;
while((chhh=fgetc(fp2))!=EOF)
{
counter1++;
}
rewind(fp2);
FILE *fp4=fopen(name_out,"wt");
char simbol=0;
for (unsigned long long int i=0;i<counter1;)
{
char byte=0;
for(int bit = 0;bit<8 && i<counter1;++bit,++i)
{
simbol=fgetc(fp2);
byte <<= 1;
byte |= simbol- '0';
}
fputc(byte,fp4);
}
fclose(fp2);
int i=0;
rewind(fp3);
fprintf(fp3,"%s\n",name_in);
fprintf(fp3,"%d\n",k);
for(i=0;i<k;i++)
{
fprintf(fp3,"%c\n",simbols[i].ch);
fprintf(fp3,"%s\n",simbols[i].code);
sim[i].len1=strlen(simbols[i].code);
fprintf(fp3,"%d\n",sim[i].len1);
}
}
}
//remove("7777.txt");
}
else
{
if (mode=='d')
{
printf("Input input file\t");
char name_inn[256];
scanf("%s",name_inn);
printf("Input output file\t");
char name_out[256];
scanf("%s",name_out);
FILE *fp_res=fopen(name_inn,"rt");
if (fp_res==NULL)
puts("FILE NOT OPEN!!!!!!!");
else
{
fp3=fopen("7777.txt","rt");
if(fp3==NULL)
{
puts("FILE NOT OPEN!!!!!!!");
}
else
{
char name_in[256];
fscanf(fp3,"%s",name_in);
FILE *res;
res=fopen(name_out,"wb");
int chh=0;
unsigned long long int counter1=0;
FILE *fp=fopen(name_in,"rb");
while((chh=fgetc(fp))!=EOF)
{
counter1++;
}
rewind(fp);
for (unsigned long long int i=0;i<counter1;i++)
{
chh=fgetc(fp);
putc(chh,res);
}
/*FILE *fp5=fopen("recode.txt","wb");
rewind(fp_res);
for (unsigned long long int i=0;i<counter1;)
{
char byte=0;
for(int bit = 0;bit<8 && i<counter1;++bit,++i)
{
char simbol=fgetc(fp_res);
byte >>= 1;
byte &= simbol- '0';
}
fputc(byte,fp5);
}*/
fcloseall();
}
}
}
else
printf("You have pressed the wrong key\n");
}
}
sym *makeTree(sym *psym[],int k)
{
sym *temp;
temp=(sym*)malloc(sizeof(sym));
temp->freq=psym[k-1]->freq+psym[k-2]->freq;
temp->code[0]=0;
temp->left=psym[k-1];
temp->right=psym[k-2];
if(k==2)
return temp;
else
{
for(int i=0;i<k;i++)
if (temp->freq>psym[i]->freq)
{
for(int j=k-1;j>i;j--)
psym[j]=psym[j-1];
psym[i]=temp;
break;
}
}
return makeTree(psym,k-1);
}
void through_tree(sym *root)
{
struct stek
{
sym *d;
stek *s;
} *st,*st1=NULL;
sym *dr1;
dr1=root;
int pr=1;
int i=0;
for(i=0;i<2;i++)
{
st=(stek*)calloc(1,sizeof(stek));
st->d=dr1;
st->s=st1;
st1=st;
}
FILE *fp5=fopen("tree.txt","wt");
fprintf(fp5,"%c\n",fp5,dr1->code,dr1->n);
while(st)
{
do
{
if(pr && dr1->left) dr1=dr1->left;
else
if(dr1->right) dr1=dr1->right;
pr=1;
if(dr1->left && dr1->right)
{
st=(stek*)malloc(sizeof(stek));
st->d=dr1;
st->s=st1;
st1=st;
}
}
while(dr1->left || dr1->right);
fprintf(fp5,"%c\n",fp5,dr1->code,dr1->n);
dr1=st->d;
st1=st->s;
free(st);
st=st1;
if(dr1->right) pr=0;
}
}
void makeCodes(sym *root)
{
if(root->left)
{
strcpy(root->left->code,root->code);
strcat(root->left->code,"0");
makeCodes(root->left);
}
if(root->right)
{
strcpy(root->right->code,root->code);
strcat(root->right->code,"1");
makeCodes(root->right);
}
}