printf("студент группы ПО-05г");
gotoxy(50,17);
printf("Пивоваров Артем Генадиевич");
gotoxy(50, 19);
printf("Проверил: ");
gotoxy(50, 20);
printf("асс. Мамбетова Лилия Сергеевна");
gotoxy(2,25);
printf("Для продолжения нажмите любую клавишу... ");
getch();
clrscr();
gotoxy(15,10);
printf("ЗАДАHИЕ: ");
gotoxy(10,12);
printf(" Описать функцию, которая в списке меняет местами");
gotoxy(10,13);
printf("первый и предпоследний элементы. ");
gotoxy(2,25);
printf("Для продолжения нажмите любую клавишу... ");
getch();
}
void program()
{
int kol=1;
char key;
clrscr();
printf("Введите элементы стрруктуры: \n");
head=(sp*) malloc(sizeof(sp));
g=head;
printf("Введите%i-элемент: ",kol);
scanf("%s",&g->inf);
g->next=0;
teil->next=0;
teil=head;
// --------Ввод остальных эл-тов структуры--------------
kol++;
printf("Введите%i-элемент: ",kol);
g=(sp*) malloc(sizeof(sp));
scanf("%s",&g->inf);
g->next=0;
teil->next=g;
teil=teil->next;
do
{
if (key! =27)
{
kol++;
printf("Введите%i-элемент: ",kol);
g=(sp*) malloc(sizeof(sp));
scanf("%s",&g->inf);
g->next=0;
teil->next=g;
teil=teil->next;
}
printf("Для прекращения ввода нажмите ESC; Для продолжения любую клавишу\n");
key=getch();
}
while (key! =27);
printf("Вы ввели такие элементы: \n");
g=head;
kol=0;
while (g! =0)
{
kol++;
printf("Эллемент%i=%s\n",kol,g->inf);
g=g->next;
}
getch();
}
void zamena()
{
char *tmp;
g=head;
while (g->next! =NULL)
{
if (g->next->next==NULL)
{
strcpy(tmp,g->inf);
strcpy(g->inf,head->inf);
strcpy(head->inf,tmp);
}
g=g->next;
}
// --------------Вывод результата----------------
g=head;
int kol=1;
printf("\nРезультат: ");
while (g! =NULL)
{
printf("\n%i-й элемент равен:%s",kol,g->inf);
kol++;
g=g->next;
}
getch();
}
void cleen()
{
g=head;
while (g! =NULL)
{
free(g);
g=g->next;
}
}
void main()
{
titl();
program();
zamena();
cleen();
}
Задание №2:
// --------------------------------Библиотеки--------------------------------
#include <stdio. h>
#include <conio. h>
#include <alloc. h>
#include <string. h>
#include <stdlib. h>
// --------------------------------------------------------------------------
// ===============
char *fname [12] ;
FILE *in,*out;
int n, i,j;
int v [10] ;
char s [6],s1 [6] ;
// ===============
// ***********************************
typedef struct graf
{
int v1,v2;
struct graf *next;
} Graf;
Graf *g,*head;
// ***********************************
// --------------------------------Реквизиты---------------------------------
// --------------------------------------------------------------------------
void tit()
{
clrscr();
gotoxy(20,1);
printf("МИHИСТЕРСТВО ОБРАЗОВАHИЯ И HАУКИ УКРАИHЫ");
gotoxy(12,2);
printf("Донецкий государственный институт искусственного интеллекта");
gotoxy(27,8);
printf("Здание на летнюю практику #2");
gotoxy(35,9);
printf("по дисциплине: ");
gotoxy(17,10);
printf("\"Основы программирования и алгоритмические языки. \"");
gotoxy(50,15);
printf("Выполнил: ");
gotoxy(50,16);
printf("студент группы ПО-05г");
gotoxy(50,17);
printf("Пивоваров Артем Генадиевич");
gotoxy(50, 19);
printf("Проверил: ");
gotoxy(50, 20);
printf("асс. Мамбетова Лилия Сергеевна");
gotoxy(2,25);
printf("Для продолжения нажмите любую клавишу... ");
getch();
return;
}
// --------------------------------------------------------------------------
// --------------------------------Задание-----------------------------------
// --------------------------------------------------------------------------
void work_window()
{
clrscr();
gotoxy(35,1);
printf("ЗАДАHИЕ: ");
gotoxy(12,2);
printf(" Определить количество");
gotoxy(12,3);
printf(" изолированных вершин нориентированного графа,");
gotoxy(12,4);
printf("вывести их список. Сделать выбраную вершину неизолированной! \n");
return;
}
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
// ----------------------Ввод данных с клавиатуры---------------------------
void klava()
{
do
{
printf("\nВведите количество вершин: ");
scanf("%s",&s);
n=atoi(s);
itoa(n,s1,10);
if((n<2) ||(n>5))
printf("Ошибка! Выход из диапазона: '2<n<=5'\n");
}
while((n<2) ||(n>5) ||strcmp(s,s1));
// --------------------------------------------------------------------------
for (i=0; i<n; i++)
v [i] =0;
// --------------------------------------------------------------------------
// --------------------Ввод первого элемента списка--------------------------
// --------------------------------------------------------------------------
printf("Введите ребра графа: \n");
head=(Graf *) malloc(sizeof(Graf));
// ======================================================
do
{
printf("v1=");
scanf("%s",&s);
head->v1=atoi(s);
itoa(head->v1,s1,10);
if (((head->v1) <1) ||((head->v1) >n))
printf("Ошибка! Выход из диапазона: '1<v1<=n'\n");
}
while(((head->v1) <1) ||((head->v1) >n) ||strcmp(s,s1));
// ======================================================
do
{
printf("v2=");
scanf("%s",&s);
head->v2=atoi(s);
itoa(head->v2,s1,10);
if (((head->v2) <1) ||((head->v2) >n))
printf("Ошибка! Выход из диапазона: '1<v2<=n'\n");
}
while(((head->v2) <1) ||((head->v2) >n) ||strcmp(s,s1));
// ======================================================
head->next=NULL;
// --------------------------------------------------------------------------
// -------------------Ввод остальных элементов списка------------------------
// --------------------------------------------------------------------------
char ch=1;
while(ch! =27)
{
printf("Хотите продолжить ввод вершин? \n");
ch=getch();
if (ch! =27)
{
g=(Graf *) malloc(sizeof(Graf));
// ======================================================
do
{
printf("v1=");
scanf("%s",&s);
g->v1=atoi(s);
itoa(g->v1,s1,10);
if (((g->v1) <1) ||((g->v1) >n))
printf("Ошибка! Выход из диапазона: '1<v1<=n'\n");
}
while(((g->v1) <1) ||((g->v1) >n) ||strcmp(s,s1));
// ======================================================
do
{
printf("v2=");
scanf("%s",&s);
g->v2=atoi(s);
itoa(g->v2,s1,10);
if (((g->v2) <1) ||((g->v2) >n))
printf("Ошибка! Выход из диапазона: '1<v2<=n'\n");
}
while(((g->v2) <1) ||((g->v2) >n) ||strcmp(s,s1));
// ======================================================
g->next=head;
head=g;
}
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int raschet()
{
printf("Ребра графа: \n");
g=head;
i=0;
while(g! =NULL)
{
i++;
printf("РЕБРО%d: v1=%d v2=%d\n", i,g->v1,g->v2);
g=g->next;
}
// --------------------------------------------------------------------------
// --------------Просмотр графа и поиск изолированых вершин------------------
// --------------------------------------------------------------------------
g=head;
while(g! =NULL)
{
v [g->v1-1] ++;
v [g->v2-1] ++;
g=g->next;
}
int f=0;
for(i=1; i<=n; i++)
printf("v [%d] =%d\n", i,v [i-1]);
printf("Изолированные вершины: ");
for(i=1; i<=n; i++)
if (v [i-1] ==0)
printf("%d ", i);
else
if (v [i-1] ! =0)
f=f+1;
// ********************************************
if (f==n)
{
printf("\nИзолированных вершин HЕТ! ");
// ----------------------------Сохранение в файл------------------------------
i=0;
if ((out=fopen("1. txt", "w")) == NULL)
{
printf("Ошибка открытия входного файла! \n");
return 1;
}
g=head;
while(g! =NULL)
{
i++;
fprintf(out,"Изолированных вершин HЕТ! ");
fprintf(out,"РЕБРО%d: v1=%d v2=%d\n", i,g->v1,g->v2);
g=g->next;
}
fclose(out);
// --------------------------------------------------------------------------
getch();
exit(1);
}
else
// --------------------------------------------------------------------------
// -----------------Добавление вершины в голову списка-----------------------
// --------------------------------------------------------------------------
printf("\nКакую вершину вы хотите сделать не изолированной? \n");
// ======================================================
do
{
printf("Укажите вершину: ");
scanf("%s",&s);
i=atoi(s);
itoa(i,s1,10);
if ((i>n) ||(i<1) ||(v [i-1] ! =0))
printf("Ошибка! \n");
}
while((v [i-1] ! =0) ||strcmp(s,s1) ||(i>n) ||(i<1));
// ======================================================
g=(Graf *) malloc(sizeof(Graf));
g->v1=i;
g->v2=head->v1;
g->next=head;
head=g;
printf("Ребра графа после добавления одного ребра: \n");
g=head;
i=0;
while(g! =NULL)
{
i++;
printf("РЕБРО%d: v1=%d v2=%d\n", i,g->v1,g->v2);
g=g->next;
}
// ********************************************
// ----------------------------Сохранение в файл------------------------------
i=0;
if ((out=fopen("1. txt", "w")) == NULL)
{
printf("Ошибка открытия входного файла! \n");
return 1;
}
g=head;
while(g! =NULL)
{
i++;
fprintf(out," РЕБРО%d: v1=%d v2=%d\n", i,g->v1,g->v2);
g=g->next;
}
fclose(out);
}
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
void main()
{
clrscr();
// ==============
tit();
work_window();
klava();
raschet();
// ==============
getch();
}