шпора по проге - все лабы
.doc1 ЛАБА
#include <stdio.h>
#include <conio.h>
void main()
{
int a[10],b[10],c[10],na,nb,flag,nc=0,i,j,q;
clrscr();
printf("Введите длину массива A: ");
scanf("%d",&na);
printf("Введите массив A\n");
for (i=0; i<na; i++)
{
printf("A[%d] = ", i+1);
scanf("%d", &a[i]);
}
printf("Введите длину массива B: ");
scanf("%d",&nb);
printf("Введите массив B\n");
for (j=0; j<nb; j++)
{
printf("B[%d] = ", j+1);
scanf("%d", &b[j]);
}
for (i=0; i<na; i++)
{
for (j=0; j<na && (a[i] !=a[j] || i==j); j++);
if(j<na)
{
for (j=flag=0; j<nb; j++)
if (a[i]==b[j])
flag++;
if (flag==1)
{
for (j=0; j<nc && a[i] !=c[j]; j++);
if (j==nc)
c[nc++]=a[i];
}
}
}
if (nc <= 0)
printf("Массив C пуст\n");
else
{
printf("Массив C\n");
for (i=0; i<nc; i++)
printf("%8d", c[i]);
}
printf("\nНажмите любую клавишу\n");
getch();
}
3 ЛАБА
#include <stdio.h>
#include <conio.h>
#include <string.h>
int substr (char str[][81], char sbstr[][81],int n, int b[])
{
int l=0,i=0,j=0,fl=0,f=0;
char *s, *sn, *sk;
s=str[l];
for(l=0;l<n;l++)
{
s=str[l];
while (*s!='\0')
{
while(*s=='*'&&*s!='\0')
s++;
if(fl==0)
sn=s;
while(*s!='*'&&*s!='\0')
s++;
sk=s-1;
while(*s=='*'&&*s!='\0')
s++;
if(s-sk-1>=3||(*s=='\0'&&f==1))
{
while(sk-sn+1!=0)
sbstr[i][j++]=*(sn++);
sbstr[i][j]='\0';
b[i]=l;
i++;
fl=0;
f=1;
j=0;
}
else
fl=1;
}
f=0;
}
return(i);
}
int maxtoch (char sbstr[][81], int n, int *imax)
{
int f=0, i=0, l=0, k=0, na=0, max=-32768, a[30];
char *s;
for (i=0;i<n;i++)
{
l=strlen(sbstr[i]);
s=&sbstr[i][l-1];
if (*s=='.')
while(*s=='.'&&*s)
{
k++;
s--;
f=1;
}
a[i]=k;
k=0;
}
na=i;
for (i=0;i<na;i++)
if (a[i]>max)
{
*imax=i;
max=a[i];
}
if (f)
{
printf("Подстрока, заканчивающаяся на максимальное кол-во точек:\n");
puts(sbstr[*imax]);
}
else
printf("Подстрок, заканчивающихся на символ '.' нет ");
return(f);
}
void vstavka (char st[])
{
int i=0,l=0, f=0;
char *s, *sk, *sn;
l=strlen(st);
s=st;
while (*s)
{
while (isdigit(*s)==0&&*s)
s++;
if (isdigit(*s))
{
f=1;
sn=&st[l];
sk=&st[l]+3;
while (sn>s)
*sk--=*sn--;
s++;
for(i=0;i<3;i++)
*s++='*';
l+=3;
sk=&(st[l]);
i=0;
}
}
if (f)
{
printf("Строка, содержащая данную подстроку, к которой после каждой цифры\n");
printf("вставлены три звездочки\n");
puts(st);
}
else
printf("В исходной строке цифр нет ");
}
void main()
{
int i=0,j=0,k=0,n=0, *imax, l=0, b[30];
char st[10][81], sbstr[30][81];
clrscr();
printf("Введите строки: \n");
while (*gets(st[k]))
k++;
n=substr(st,sbstr,k,b);
printf("Выделенные подстроки:\n");
for (j=0;j<n; j++)
puts(sbstr[j]);
printf("\n");
if(maxtoch(sbstr,n,imax));
vstavka(st[b[*imax]]);
getch();
}
4 ЛАБА
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct pr
{
char gorod[20];
char zavod[20];
char fam[20];
};
struct tel
{
char nazv[20];
int coast;
int diag;
char color;
struct pr proizv;
};
#define TEL struct tel
#define CLR while (getchar()!='\n')
#define FCLR while (getc(f1)!='\n')
void vvod(TEL *tv, int *n)
{
int i=0;
printf("Введите кол-во записей: ");
scanf("%d",n);
CLR;
for(i=0;i<*n;i++)
{
printf("\n");
printf("Запись #%d: \n",i+1); printf("Введите название: "); gets(&tv[i].nazv); printf("Введите цену: "); scanf("%d",&tv[i].coast); printf("Введите размер диагонали: "); scanf("%d",&tv[i].diag); CLR;
printf("Введите цветность телевизора (ц/ч): "); tv[i].color=getchar();
CLR;
printf("Введите название города производителя: "); gets(&tv[i].proizv.gorod); printf("Введите название завода производителя: "); gets(&tv[i].proizv.zavod);
printf("Введите название фамилию директора завода производителя: "); gets(&tv[i].proizv.fam);
}
}
void vivod (TEL tv[], int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("\n");
printf("Запись #%d: \n",i+1);
printf("Название: %s",tv[i].nazv);
printf("Цена: %d\n",tv[i].coast);
printf("Размер диагонали: %d\n",tv[i].diag);
printf("Цветность телевизора: %c\n",tv[i].color);
printf("Город : %s",tv[i].proizv.gorod);
printf("Завод: %s",tv[i].proizv.zavod);
printf("Фамилия директора завода: %s",tv[i].proizv.fam); }
}
int poisk (TEL tv[], int n, int v)
{
int i=0, f=1;
char name[10];
FILE *f2;
printf("Введите имя файла для записи результатов поиска: "); scanf("%s",name);
f2=fopen(name,"w");
if (v==2)
printf("Результаты поиска: \n");
else
fputs("Результаты поиска: \n",f2); for(i=0;i<n;i++)
{
if (tv[i].diag>50)
{
f=0;
if (v==2)
printf("%s ",tv[i].nazv);
else
fputs(tv[i].nazv,f2);
}
}
if (f)
{
if (v==2)
printf("Телевизоров с диагональю больше 50 cm нет");
else
fputs("Телевизоров с диагональю больше 50 cm нет",f2); }
else
{
if (v==2)
printf("- названия телевизоров с диагоналями больше 50 см"); else
fputs("- названия телевизоров с диагоналями больше 50 см",f2);
}
fclose(f2);
}
void zam (char *st)
{
int l=0;
l=strlen(st);
st[l]='\0';
}
int read(TEL *tv, int *n)
{
int i=0;
FILE *f1;
char name1[10], *s;
printf("Введите имя входного файла: ");
scanf("%s",name1);
while ((f1=fopen(name1,"r"))==NULL)
{
printf("Файл %s не найден! ",name1);
printf("Введите имя входного файла: ");
scanf("%s",name1);
}
fscanf(f1,"%d",n);
FCLR;
for(i=0;i<*n;i++)
{
fgets(tv[i].nazv,30,f1);
zam(tv[i].nazv);
fscanf(f1,"%d",&tv[i].coast);
fscanf(f1,"%d",&tv[i].diag);
FCLR;
tv[i].color=fgetc(f1);
fgets(s,30,f1);
fgets(tv[i].proizv.gorod,30,f1);
zam(tv[i].proizv.gorod);
fgets(tv[i].proizv.zavod,30,f1);
zam(tv[i].proizv.zavod);
fgets(tv[i].proizv.fam,30,f1);
}
fclose(f1);
}
void main()
{
TEL tv[20];
int n,v=2;
FILE *f2;
clrscr();
printf("Введите 1 для ввода структур из файла, 2 - для ввода структур вручную: "); scanf("%d",&v); scanf("%d",&v);
if (v==2)
{
vvod(tv,&n);
vivod(tv,n);
getch();
poisk(tv,n,v);
}
else
{
read(tv,&n);
vivod(tv,n);
getch();
poisk(tv,n,v);
}
getch();
}
5 ЛАБА
#include <stdio.h>
#include <alloc.h>
#include <string.h>
#include <alloc.h>
#include <ctype.h>
#include <conio.h>
#define CLR while(getc(f)!='\n')
struct izgot
{
char gorod[20];
char zavod[20];
char fam[10];
};
struct stul
{
char color[10];
int visota;
struct izgot izg;
char mater[10];
struct stul *sled, *pred;
};
struct stul *stek(FILE *f)
{
struct stul *tek, *s1, *sp;
char str[20];
int fl=1;
printf("");
while(!feof(f))
{
tek=(struct stul*)malloc(sizeof(struct stul));
fgets(tek->color,10,f);
fscanf(f,"%d",&tek->visota);
CLR;
fgets(tek->izg.gorod,20,f);
fgets(tek->izg.zavod,20,f);
fgets(tek->izg.fam,10,f);
fgets(tek->mater,10,f);
if (fl)
{
s1=tek;
sp=tek;
tek->pred=NULL;
}
else
{
tek->pred=sp;
sp->sled=tek;
sp=tek;
}
fl=0;
}//while
tek->sled=s1;
s1->pred=tek;
fclose(f);
return(s1);
}
void frez(struct stul *s1)
{
char name[10];
FILE *f;
struct stul *tek;
printf("Введите имя файла для записи результатов: ");
scanf("%s",name);
f=fopen(name,"w");
tek=s1;
do
{
fputs(tek->color,f);
fprintf(f,"%d\n",tek->visota);
fputs(tek->izg.gorod,f);
fputs(tek->izg.zavod,f);
fputs(tek->izg.fam,f);
fputs(tek->mater,f);
tek=tek->sled;
}
while (s1!=tek);
fclose(f);
}
void del(struct stul *s1)
{
struct stul *tek, *sn, *sp;
char clr[10], name[10];
int f;
printf("Введите цвет для поиска стульев: ");
scanf("%s",clr);
tek=s1;
sn=tek;
do
tek=tek->sled;
while(!strcmp(tek->color,clr)&&tek!=s1);
sn=tek->sled;
tek=s1->pred;
sp=tek;
do
tek=tek->pred;
while(!strcmp(tek->color,clr)&&tek!=sn);
sp=tek;
if(sn!=sp)
{
sn->sled=sp;
sp->pred=sn;
frez(s1);
}
else
printf("Никаких изменений в списке сделано не было.");
}
void vivod(struct stul *s1)
{
struct stul *tek;
do
{
puts(tek->color);
printf("%d\n",tek->visota);
printf("\n");
puts(tek->izg.gorod);
puts(tek->izg.zavod);
puts(tek->izg.fam);
puts(tek->mater);
tek=tek->sled;
getch();
}
while (s1!=tek);
}
void main()
{
char name1[10], name2[10];
FILE *f1, *f2;
struct stul *s1;
clrscr();
printf("Введите имя входного файла: ");
scanf("%s",name1);
while ((f1=fopen(name1,"r"))==NULL)
{
printf("Файл %s не найден! ",name1);
printf("Введите имя входного файла: ");
scanf("%s",name1);
}
s1=stek(f1);
vivod(s1);
del(s1);
getch();
}
6 ЛАБА_1
#include <stdio.h>
int binom(int m,int n)
{ if (n==1 ||m==n) return 1;
return binom(m-1,n)+binom(m-1,n-1);
}
void main()
{ int m,n;
clrscr();
printf("Введите степень 'm' и номер 'n' (0<n<m):'\n");
do
scanf("%d%d",&m,&n);
while(m<n||m<0||n<0);
printf("Полученный коэффициент: %d\n",binom(m,n));
getch();
}
6 ЛАБА_2
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
#include <ctype.h>
#include <math.h>
#define NODE struct node
NODE
{int info;
NODE *left,*right;};
NODE *newn(int x)
{ NODE *uk;
uk=(NODE*)malloc(sizeof(NODE));
uk->info=x;
uk->left=uk->right=NULL;
return(uk);
}
void setleft(NODE *p,int x)
{p->left=newn(x);}
void setright(NODE *p,int x)
{p->right=newn(x);}
NODE *form()
{int n;
NODE *der=NULL,*next,*tek;
puts("Введите дерево из цифр//конец ввода-буква");
if (scanf("%d",&n)==1)
{ der=newn(n);
while (scanf("%d",&n)==1)
{ next=tek=der;
while (next!=NULL)
{ tek=next;
if (n<tek->info) next=tek->left;
else next=tek->right;
}
if (n<tek->info) setleft(tek,n);
else setright(tek,n);
}
}return der;
}
void printder (NODE *der,int x,int y,int d)
{ if (!der) return;
gotoxy(x,y);
printf("%d",der->info);
if (der->left)
printder(der->left,x-d,y+1,d/2);
if (der->right)
printder(der->right,x+d,y+1,d/2);
}
int max,min;
float srar,rmin=0;
int numb;
void searchmax(NODE *der)
{ if (der==NULL)
return;
if (der->info>max)
max=der->info;
searchmax(der->left);
searchmax(der->right);
}
void searchmin(NODE *der)
{ if (der==NULL)
return;
if (der->info<min)
min=der->info;
searchmin(der->left);
searchmin(der->right);
}
void search(NODE *der)
{ if (der==NULL) return;
if (fabs((der->info)-srar)<rmin)
{
rmin=fabs((der->info)-srar);
numb=der->info;
}
search(der->left);
search(der->right);
}
void main()
{ NODE *der,*tek;
clrscr();
puts("Дерево\n");
der=form();
if (!der) puts("Дерева нет");
else
{ printder(der,20,5,10);
max=-32768; searchmax(der);
printf("\nmax %d",max);
min=32763; searchmin(der);
printf("\nmin %d",min);
srar=(min+max)/2;
rmin=32760;
search(der);
printf("\nnumb %d",numb);
} getch();
}