Void main()
{
char str[10][81],str1[10][81];
int n=0,n1,num[100],i1,i;
printf("Введите строки\n");
while(*gets(str[n])!=NULL && *str[n])
n++;
substr(n,&n1,str,str1,num);
if(n1==0)
printf("Подстроки не найдены!\n");
else
{printf("Найденные подстроки:\n");
for(i=0;i<n1;i++)
puts(str1[i]);
i1=nomstr(str1,n1);
if(i1==-1)
printf("Не было найдено подстрок!\n");
else
{ printf("Найденная подстрока:\n");
puts(str1[i1]);
udal(str[num[i1]]);
printf("Измененная строка:\n");
puts(str[num[i1]]);
}
}
}
void substr(int n,int *n1,char str[][81],char str1[][81],int num[])
{
int i;
char *s,*s1;
*n1=0;
for(i=0;i<n;i++)
{ s=str[i];
s1=s;
while(*s)
if(*s=='+' || *s=='-' |0| *s=='/' || *s=='*' )
{
if(s!=s1)
{ num[*n1]=i;
strncpy(str1[*n1],s1,s-s1);
str1[(*n1)++][s-s1]='\0';
}
while(*s&&(*s=='+' || *s=='-' || *s=='/' || *s=='*'))
s++;
s1=s;
}
else
s++;
if(s1!=s)
{ num[*n1]=i;
strncpy(str1[*n1],s1,s-s1);
str1[(*n1)++][s-s1]='\0';
}
}
}
int nomstr(char str1[][81],int n1)
{
char *s;
int i,kol,kool=0,zumber=-1;
for(i=0;i<n1;i++)
{ kol=0;
s=str1[i];
for(;*s!='\0';s++)
if(*s=='1' && *(s+1)=='1')
kol++;
if(kol>kool)
{
kool=kol;
zumber=i;
}
}
return(zumber);
}
void udal(char *s)
{ static char s2[70]="ЙйЦцКкУуЕеНнГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮшщзхъфывапролджэячсмитьбю";
char *s1;
int i, flag;
s1=s;
while(*s)
{
flag=0;
for (i=0;(i<70 && flag!=1);i++)
if(*s1==s2[i])
flag=1;
if (flag==1)
{
*s=*s1;
s++,s1++;
}
else
s1=s1+2;
*s=*s1;
}
}
/* Лабораторная работа #4(1) (Структуры. Файлы.)
Написать программу, которая вводит в режиме запросов заданное число
записей вида
Телевизор
Название Цена Размер Цвет Производитель
по диаг. Изображения Город Завод Фамилия
После ввода массива записей программа осуществляет в нем поиск следующей
информации:
Названия телевизоров с самым маленьким размером экрана
*/
#include<stdio.h>
#include<string.h>
#define CLR while(getchar()!='\n')
#define PROISV struct adres
#define TELEVISOR struct telev
PROISV{
char gorod[20];
char factory[20];
char name[30];
};
TELEVISOR{
char nazv[30];
int cena;
int diag;
int color;
PROISV pro;
};
void readcat(int *kol,TELEVISOR cat[])
{
char ch;
*kol=0;
do
{
printf("Телевизор %d :\n",++(*kol));
printf("Название.......................");
gets(cat->nazv);
printf("Цена.....................");
scanf("%d",&cat->cena);
printf("Диагональ(inch)................");
scanf("%d",&cat->diag);
printf("Цветной/Черно-белый(1/2)........");
scanf("%d",&cat->color);
CLR;
printf("Город..........................");
gets((*cat).pro.gorod);
printf("Завод..........................");
gets((*cat).pro.factory);
printf("Имя............................");
gets((*cat).pro.name);
cat++;
CLR;
printf("Дальше? (Д/Н):");
ch=getchar();
CLR;
}while(ch=='д' || ch=='Д');
}
void form(int kol,TELEVISOR cat[],char s[][20],int *nk)
{
int i,min=4000,j;
for(i=0;i<kol;i++)
if(cat[i].diag <= min)
min=cat[i].diag;
printf("min= %d\n",min);
for(i=0;i<kol;i++)
if(cat[i].diag==min)
{
for(j=0;j<*nk && strcmp(cat[i].nazv,s[j])!=0;j++);
if(j==*nk)
strcpy(s[(*nk)++],cat[i].nazv);
}
}
main()
{
int koltel,nk=0,i;
char str[40][20];
TELEVISOR catalog[40];
printf("\n\n\n");
readcat(&koltel,catalog);
form(koltel,catalog,str,&nk);
if(nk>0)
{
printf("Название телевизоров с минимальной диагональю:\n");
for(i=0;i<nk;i++)
puts(str[i]);
}
else
printf("Телевизоры не найдены!");
}
/*Лабораторная работа #4(2) (Модифицировать программу, написанную в первом пункте, таким образом,
чтобы она вводила записи из текстового файла и записывала результаты в файл.)
*/
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define CLR while(getc(f)!='\n')
#define PROISV struct adres
#define TELEVISOR struct telev
PROISV{
char gorod[20];
char factory[20];
char name[30];
};
TELEVISOR{
char nazv[30];
int cena;
int diag;
int color;
PROISV pro;
};
void readfile(int *kstr,TELEVISOR cat[],char *namefile)
{
int i=0;
FILE *f;
if((f=fopen(namefile,"r"))==NULL)
printf("ОШИБКА \n");
else
{
while(!feof(f))
if(fscanf(f,"%s",cat->nazv)!=EOF)
{
CLR;
fscanf(f,"%d",&cat->cena);
fscanf(f,"%d",&cat->diag);
fscanf(f,"%d",&cat->color);
CLR;
fgets(cat->pro.gorod,20,f);
fgets(cat->pro.factory,20,f);
fgets(cat->pro.name,30,f);
cat++;
(*kstr)++;
}
printf("%d\n",*kstr);
}
fclose(f);
}
void writefile(int n,char *namefile,char str[][20])
{
FILE *f;
int i;
f=fopen(namefile,"w");
if(n>0)
{
fprintf(f,"НАЗВАНИЕ ТЕЛЕВИЗОРА С МИНИМАЛЬНОЙ ДИАГОНАЛЬЮ:\n");
for(i=0;i<n;i++)
fprintf(f," %s \n",str[i]);
}
else
fprintf(f,"ТЕЛЕВИЗОР НЕ НАЙДЕН!\n");
}
void form(int kol,TELEVISOR cat[],char s[][20],int *nk)
{
int i,min=4000,j;
for(i=0;i<kol;i++)
if(cat[i].diag <= min)
min=cat[i].diag;
printf("min= %d\n",min);
for(i=0;i<kol;i++)
if(cat[i].diag==min)
{
for(j=0;j<*nk && strcmp(cat[i].nazv,s[j])!=0;j++);
if(j==*nk)
strcpy(s[(*nk)++],cat[i].nazv);
}
}
main()
{
int koltel=0,nk=0,i;
char str[40][20],namefile1[20],namefile2[20];
TELEVISOR catalog[40];
clrscr();
printf("ВВЕДИТЕ ИМЯ ФАЙЛА:\n");
gets(namefile1);
readfile(&koltel,catalog,namefile1);
form(koltel,catalog,str,&nk);
printf("nk= %d\n",nk);
if(nk>0)
{
printf("ВВЕДИТЕ ИМЯ ФАЙЛА:\n");
gets(namefile2);
writefile(nk,namefile2,str);
printf("НАЗВАНИЕ ТЕЛЕВИЗОРА С МИНИМАЛЬНОЙ ДИАГОНАЛЬЮ:\n");
for(i=0;i<nk;i++)
puts(str[i]);
}
else
printf("ТЕЛЕВИЗОРЫ НЕ НАЙДЕНЫ!");
getch();
}
/*Лабораторная работа #5 (Списки. Динамические переменные. )
Написать программу, которая вводит из файла записи вида:
Стул
Цвет Высота Изготовитель Материал
Город Завод Фамилия директора
размещает их в стеке реализованном с помощью линейного списка и выполняет следующие действия:
удаляет стул заданного цвета
Результат (содержимое стека) выводится в файл
*/
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<alloc.h>
#define chair struct CHAIR
#define clr while(getchar()!='\n')
struct izgotovitel
{
char town[20];
char factory[20];
char name[20];
};
chair
{
char color[20];
int vysota;
char material[20];
struct izgotovitel maker;
chair *next;
};
chair *stackcat()
{
FILE *f;
chair *stack=NULL,*uk;
char name1[20],hlp[20];
int flag=1,i;
do
{
printf("Please enter filename:\n");
gets(name1);
if ((f=fopen(name1,"r"))==NULL)
{
printf("Cannot find file %s \n",name1);
printf("Please, repeat again\n");
}
else
flag=0;
}
while (flag);
while(!feof(f))
{
if(fscanf(f,"%s",hlp)!=EOF)
{
uk=(chair*)malloc(sizeof(chair));
uk->next=stack;
stack=uk;
strcpy(uk->color,hlp);
while(getc(f)!='\n');
fscanf(f,"%d",&uk->vysota);
while(getc(f)!='\n');
fscanf(f,"%s",&uk->material);
while(getc(f)!='\n');
fgets(uk->maker.town,20,f);
i=0;
while(uk->maker.town[i]!='\n')
i++;
uk->maker.town[i]='\0';
fgets(uk->maker.factory,20,f);
i=0;
while(uk->maker.factory[i]!='\n')
i++;
uk->maker.factory[i]='\0';
fgets(uk->maker.name,20,f);
i=0;
while(uk->maker.name[i]!='\n')
i++;
uk->maker.name[i]='\0';
}
}
fclose(f);
return(stack);
}
void putcat(chair *uk)
{
int i=1;
while(uk!=NULL)
{
printf(" %d Chair : \n",i++);
printf("Color ..................: ");
puts(uk->color);
printf("Length.................: ");
printf("%d\n",uk->vysota);
printf("Material...............: ");
puts(uk->material);
printf("Maker : \n");
printf(" Town .............: ");
puts(uk->maker.town);
printf(" Factory .............: ");
puts(uk->maker.factory);
printf(" Name ...........: ");
puts(uk->maker.name);
getch();
uk=uk->next;
}
}
void udalchair(chair *uk,char xcolor[])
{
FILE *f;
f=fopen("result.c","w");
while(uk!=NULL)
{
if (strcmp(xcolor,uk->color)!=0)
{
fputs(uk->color,f);
fputs("\n",f);
fprintf(f,"%d\n",uk->vysota);
fputs(uk->material,f);
fputs("\n",f);
fputs(uk->maker.town,f);
fputs("\n",f);
fputs(uk->maker.factory,f);
fputs("\n",f);
fputs(uk->maker.name,f);
fputs("\n",f);
}
uk=uk->next;
}
}