Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
Про виконання лабораторної роботи № 3
з програмування
Тема: Лабіринт
.
Мета:Навчитися реалізовувати програму проходження матриць.
Завдання: 28. Матриця розміру N*M визначає деякий лабіринт. B матриці елемент 1 означає стіну, а 0 означає вільне місце. В першому рядку матриці визначаються входи x(і), а в останньому виходи y(і), і=1,..,k, що повинні бути нульовими елементами. Рух у лабіринті здійснюється тільки по вертикалі або горизонталі.
Визначити, чи можна :
а) провести людину через лабіринт від заданого входу в лабіринт до заданого виходу;
б) провести k людина від входу x(і) до виходу y(і) відповідно, і=1,..,k, таким чином, щоб кожне вільне місце відвідувалось не більше одного разу;
в) те ж, але людину можна виводити через кожний з виходів.
повідомляти користувача.
Програма
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <assert.h>
struct node
{
int data;
char ch;
struct node *next;
};
typedef struct node *list;
int k=0;
//³í³ö³àî³çàö³ÿ
void Init(list *head_list_ptr)
{
*head_list_ptr = NULL;
return;
}
// ïåðåâ³ðêà ÷è ñïèñîê ïîðîæí³é
int Empty(list head_list)
{
return head_list == NULL;
}
//Äîäàâàííÿ â ê³íåöü ñïèñêó
void AddEnd(list *head_list_ptr,int new_data,char new_ch )
{
list new_node;
list new_node1=*head_list_ptr;
new_node = malloc(sizeof(struct node));
new_node->data = new_data;
new_node->ch =new_ch;
new_node->next = NULL;
if (Empty(*head_list_ptr)) *head_list_ptr = new_node;
else
{
if(new_node1)while (new_node1->next) new_node1 =new_node1->next ;
new_node1->next = new_node;
//FindLast(*head_list_ptr)->next = new_node;
//new_node1=FindLast(*head_list_ptr);
//new_node1->next = new_node;
}
return ;
}
//Ïîøóê îñòàííüîãî åëåìåíòà ñïèñêó
list FindLast(list head_list)
{
if (head_list) while (head_list->next) head_list = head_list->next;
return head_list;
}
//ïîøóê âóçëà ïåðåä çàäàíèì çíà÷åííÿì
list FindBefore(list head_list, list node)
{
while ((head_list->next != node) && head_list) head_list = head_list->next;
return head_list;
}
list FindAfter(list node)
{
return node->next;
}
list Find(list head_list,int search_data)
{
while ((head_list) && (head_list->data != search_data)) head_list = head_list->next;
return head_list;
}
// Âèëó÷åííÿ çàäàíîãî âóçëà ç³ ñïèñêó
void Delete(list *head_list_ptr, list *node_ptr)
{
list tmp , save_ptr=*node_ptr;
assert(*head_list_ptr);
assert(*node_ptr);
if (*node_ptr == *head_list_ptr)
*head_list_ptr = (*head_list_ptr)->next;
else
if (!((*node_ptr)->next))
{
tmp = FindBefore(*head_list_ptr,*node_ptr);
tmp->next = NULL;
}
else
{
tmp = (*node_ptr)->next;
(*node_ptr)->data = tmp->data;
(*node_ptr)->next = tmp->next;
save_ptr = tmp;
};
free(save_ptr);
return ;
}
/****Ôóíêö³ÿ âèâåäåííÿ êèðèëèö³****/
void cyrillic(char* text)
{
char* x;
int l,i,size=sizeof(text);
l=strlen(text);
x=(char*)malloc(size);
for(i=0;i<l;i++)
{
x[i]=text[i];
if(x[i]=='³')x[i]='i';
if(x[i]=='²')x[i]='I';
}
x[i]='\0';
CharToOem(x,x);
printf(x);
}
void fff(char* f,int m,int n)
{
int i=0,j=0,vh,vuh;
cyrillic("\n\tÂâåä³òü âõ³ä\n");
scanf("%d",&vh);
cyrillic("\n\tÂâåä³òü âèõ³ä\n");
scanf("%d",&vuh);
i=vh;
f[i]='0';
if (f[i+n+2]!='1' && f[(n+2)*m+vuh]!='1')
{
while((i!=vh && j!=0) || (i==vh && j==0)) //|| i!=(n+2)*m+vuh
{
if(i==(n+2)*m+vuh) break;
i= Prohid( f,i,n);
j++;
}
}
cyrillic("\n\tÐÅÇÓËÜÒÀÒ\n");
if(i==(n+2)*m+vuh)
{
f[i]='|';
f[i+n+2]='|';
cyrillic("\n\tÏðîõ³ä º\n");
}
else cyrillic("\n\tÏðîõîäó íåìà\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
//x[n*i+j]=x[n*i+j]+
printf("%c",f[(n+2)*i+j]);
}
printf("\n");
}
}
/////////////////////////////////////////////////////////////////////////////////
void f11(char* f,int m,int n)
{
FILE* fp;
list l2,l1;
char* g;
int i=0,j=0,vh,vuh,div=0;
cyrillic("\n\tÂâåä³òü âõ³ä\n");
scanf("%d",&vh);
cyrillic("\n\tÂâåä³òü âèõ³ä\n");
scanf("%d",&vuh);
i=vh;
f[i]='0';
Init(&l2);
if (f[i+n+2]!='1' && f[(n+2)*m+vuh]!='1')
{
while((i!=vh && j!=0) || (i==vh && j==0)) //|| i!=(n+2)*m+vuh
{
if(i==(n+2)*m+vuh) break;
switch (div)
{
case 0:
if (f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|') //i [j+1]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div=1;
}
else if (f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|') //[i+1][j]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
else if(f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|') //[i][j-1]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div=2;
}
break;
case 1:
if(f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div=2;
}
else if (f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div=1;
}
else if (f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
break;
case 2:
if( f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
else if (f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div = 2;
}
else if(f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div =1;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
break;
case 3:
if(f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
else if(f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|') //[i][j-1]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
else if (f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div = 2;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div = 1;
}
break;
}
j++;
}
}
cyrillic("\n\tÐÅÇÓËÜÒÀÒ\n");
if(i==(n+2)*m+vuh)
{
vh=i;
g=malloc((n+2)*(m+2)*sizeof(char));
i=0,j=0;
if(!(fp=fopen("111.txt","r")))//==0
{
cyrillic("\n\tÒóêñòîâèé ôàéë íå áóâ ñòâîðåíèé ê³íåöü ïðîãðàìè\n");
return;
}
fp=fopen("111.txt","r");
for(i=0;i<m+2;i++)
{
//x[j+(m+1)*i]='1';
g[j]='1';
g[(n+1)+(n+2)*i]='1';
j=(n+1)+(n+2)*i+1;
}//?
for(i=0,j=0;j<n+2;j++)
{
g[j+(m+1)*i]='1';
g[j+(m+1)*(n+2)]='1';
}
for(i=1;i<m+1;i++)
{
for(j=1;j<n+1;j++)
{
g[j+(n+2)*i]=fgetc(fp);
}
}
fclose(fp);
while(l2)
{
g[l2->data]=l2->ch;
l2=l2->next;
}
g[vh]='|';
g[vh+n+2]='|';
cyrillic("\n\tÏðîõ³ä º\n");
printf("\n\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
//x[n*i+j]=x[n*i+j]+
printf("%c",g[(n+2)*i+j]);
}
printf("\n");
}
}
else
{
cyrillic("\n\tÏðîõîäó íåìà\n");
printf("\n\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
//x[n*i+j]=x[n*i+j]+
printf("%c",f[(n+2)*i+j]);
}
printf("\n");
}
}
printf("\n\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
//x[n*i+j]=x[n*i+j]+
printf("%c",f[(n+2)*i+j]);
}
printf("\n");
}
}
///////////////////////////////////////////////////////////////////////////////
void f33(char* f,int m,int n)
{
FILE* fp;
list l2,l1;
char* g;
int i=0,j=0,vh,vuh,div=0;
cyrillic("\n\tÂâåä³òü âõ³ä\n");
scanf("%d",&vh);
i=vh;
f[i]='0';
Init(&l2);
if (f[i+n+2]!='1')
{
while((i!=vh && j!=0) || (i==vh && j==0)) //|| i!=(n+2)*m+vuh
{
if(i>(n+2)*m && f[i]=='0') break;
switch (div)
{
case 0:
if (f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|') //i [j+1]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div=1;
}
else if (f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|') //[i+1][j]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
else if(f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|') //[i][j-1]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div=2;
}
break;
case 1:
if(f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div=2;
}
else if (f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div=1;
}
else if (f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
break;
case 2:
if( f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
else if (f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div = 2;
}
else if(f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div =1;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
break;
case 3:
if(f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'|' );
}
f[i]='|';
i=i+n+2;
div=0;
}
else if(f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|') //[i][j-1]
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'<' );
}
f[i]='<';
i--;
div=3;
}
else if (f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'^' );
}
f[i]='^';
i=i-(n+2);
div = 2;
}
else
{
if(Find(l2,i)!=NULL)
{
l1=FindAfter(Find(l2,i));
Delete (&l2,&l1);
}
else
{
AddEnd(&l2,i,'>' );
}
f[i]='>';
i++;
div = 1;
}
break;
}
j++;
}
}
cyrillic("\n\tÐÅÇÓËÜÒÀÒ\n");
if(i>(n+2)*m && f[i]=='0')
{
vh=i;
g=malloc((n+2)*(m+2)*sizeof(char));
i=0,j=0;
if(!(fp=fopen("111.txt","r")))//==0
{
cyrillic("\n\tÒóêñòîâèé ôàéë íå áóâ ñòâîðåíèé ê³íåöü ïðîãðàìè\n");
return;
}
fp=fopen("111.txt","r");
for(i=0;i<m+2;i++)
{
//x[j+(m+1)*i]='1';
g[j]='1';
g[(n+1)+(n+2)*i]='1';
j=(n+1)+(n+2)*i+1;
}//?
for(i=0,j=0;j<n+2;j++)
{
g[j+(m+1)*i]='1';
g[j+(m+1)*(n+2)]='1';
}
for(i=1;i<m+1;i++)
{
for(j=1;j<n+1;j++)
{
g[j+(n+2)*i]=fgetc(fp);
}
}
fclose(fp);
while(l2)
{
g[l2->data]=l2->ch;
l2=l2->next;
}
g[vh]='|';
g[vh+n+2]='|';
cyrillic("\n\tÏðîõ³ä º\n");
printf("\n\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
//x[n*i+j]=x[n*i+j]+
printf("%c",g[(n+2)*i+j]);
}
printf("\n");
}
}
else
{
cyrillic("\n\tÏðîõîäó íåìà\n");
printf("\n\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
//x[n*i+j]=x[n*i+j]+
printf("%c",f[(n+2)*i+j]);
}
printf("\n");
}
}
}
int Prohid(char* f,int i,int n)
{
int div;
div=k;
//div= Dive(int k)
switch (div)
{
case 0:
if (f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|') //i [j+1]
{
f[i]='>';
i++;
k=div=1;
}
else if (f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|') //[i+1][j]
{
f[i]='|';
i=i+n+2;
k=div=0;
}
else if(f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|') //[i][j-1]
{
f[i]='<';
i--;
k=div=3;
}
else
{
f[i]='^';
i=i-(n+2);
k=div=2;
}
break;
case 1:
if(f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
f[i]='^';
i=i-(n+2);
k=div=2;
}
else if (f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|')
{
f[i]='>';
i++;
k=div=1;
}
else if (f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|')
{
f[i]='|';
i=i+n+2;
k=div=0;
}
else
{
f[i]='<';
i--;
k=div=3;
}
break;
case 2:
if( f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|')
{
f[i]='<';
i--;
k=div=3;
}
else if (f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
f[i]='^';
i=i-(n+2);
k=div = 2;
}
else if(f[i+1]=='0'||f[i+1]=='^'||f[i+1]=='>'||f[i+1]=='<'||f[i+1]=='|')
{
f[i]='>';
i++;
k=div =1;
}
else
{
f[i]='|';
i=i+n+2;
k=div=0;
}
break;
case 3:
if(f[i+n+2]=='0'||f[i+n+2]=='^'||f[i+n+2]=='>'||f[i+n+2]=='<'||f[i+n+2]=='|')
{
f[i]='|';
i=i+n+2;
k=div=0;
}
else if(f[i-1]=='0'||f[i-1]=='^'||f[i-1]=='>'||f[i-1]=='<'||f[i-1]=='|') //[i][j-1]
{
f[i]='<';
i--;
k=div=3;
}
else if (f[i-(n+2)]=='0'||f[i-(n+2)]=='^'||f[i-(n+2)]=='>'||f[i-(n+2)]=='<'||f[i-(n+2)]=='|')
{
f[i]='^';
i=i-(n+2);
k=div = 2;
}
else
{
f[i]='>';
i++;
k=div = 1;
}
break;
}
//k++;
return i;
}
void Zapus (char* x,int m,int n)
{
FILE* f;
int i=0,j=0;
if(!(f=fopen("111.txt","r")))//==0
{
cyrillic("\n\tÒóêñòîâèé ôàéë íå áóâ ñòâîðåíèé ê³íåöü ïðîãðàìè\n");
return;
}
f=fopen("111.txt","r");
for(i=0;i<m+2;i++)
{
//x[j+(m+1)*i]='1';
x[j]='1';
x[(n+1)+(n+2)*i]='1';
j=(n+1)+(n+2)*i+1;
}//?
for(i=0,j=0;j<n+2;j++)
{
x[j+(m+1)*i]='1';
x[j+(m+1)*(n+2)]='1';
}
for(i=1;i<m+1;i++)
{
for(j=1;j<n+1;j++)
{
x[j+(n+2)*i]=fgetc(f);
}
}
fclose(f);
}
/*******Ãîëîâíå ìåíþ*****/
int main()
{
int n,m,i=0,j=0,k;
char* x;
char* g;
cyrillic("\t\tÊóðñîâà ðîáîòà ç ïðîãðàìóâàííÿ\n");
cyrillic("\tâèêîíàâ ñòóäåíò ãðóïè ʲ-24\n\tÔåäóí ³òàë³é\n");
cyrillic("\t\tÂâåä³òü ðîçì³ðè ìàñèâó\n");
cyrillic("\n\tÂâåä³òü ê³ëüê³ñòü ðÿäê³â\n");
scanf("%d",&m);
cyrillic("\n\tÂâåä³òü ê³ëüê³ñòü ñòîâïö³â\n");
scanf("%d",&n);;
x=malloc((n+2)*(m+2)*sizeof(char));
Zapus ( x, m, n);
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
printf("%c",x[(n+2)*i+j]);
}
printf("\n");
}
do
{
cyrillic("\n\tÂâåä³òü:\n");
printf("1-proitu vid vh do vuh\n");
printf("2-proitu vid vh do vuh ne povertiychus\n");
printf("3-proitu vid vh do budiiakogo vuh\n");
printf("0-vyhid\n");
scanf("%d",&k);
if(k==1)fff(x, m, n);
if(k==2)f11(x, m, n);
if(k==3)f33(x, m, n);
}while(k!=0);
}Результат:
Висновок: На дані лабораторні роботі ми на були досвіду роботи з матрицями.