Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

шпора по проге - все лабы

.doc
Скачиваний:
9
Добавлен:
20.05.2014
Размер:
68.1 Кб
Скачать

1 ЛАБА

#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();

}