Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
7
Добавлен:
28.10.2018
Размер:
2.62 Mб
Скачать

22.4 Дан файл целых чисел компоненты которого различны, сформировать циклический линейный список, задать число n и удалять n-ый элемент в списке пока не останется 1

//подключение внешних модулей

#include "stdio.h"

#include "string.h"

#include "io.h"

#include "fcntl.h"

#include <sys/stat.h>

//описание структуры списка

struct list{

int el;

list *next; };

int fh;//заголовок файла

void main()//the main function

{

fh = -1;//file handle set -1(error)

list *fst,*tek;//создаем элементы списка

fh = _open( "tmp.file", _O_WRONLY|_O_CREAT ); //создаем типизированный файл

printf("vvedite chislo i = ");

int i;

scanf("%d",&i);

do{//заполняем файл пока не введем 999

int j = _write(fh,&i,sizeof(int));//запись

if(j<=0) printf("error write");// если не удалось записать

printf("vvedite chislo(konechnii element 999) i = ");

scanf("%d",&i);//получаем переменную из вх потока

}while(i!=999);

_close(fh);//закрываем файл

fh = _open( "tmp.file",_O_RDONLY );//открываем для чтения

bool is_first = true;//флаг для создания первого ел-та

printf("QUEUE :\n");

while(!_eof(fh))// пока не конец файла

{//читаем ф-л и создаем циклический список

_read(fh,&i,sizeof(int));

printf("%d ",i);

list * ll = new list;

ll ->el = i;

if(is_first){

is_first = !is_first;

ll ->next = ll;//pointer to itself

fst = ll;

tek = ll;

}else{ ll ->next = fst; tek ->next = ll; tek = ll;

}}// end of list construction

printf("\nVvedite nomer elementa dla udalenia(>0) j= ");

int j,c=0;

scanf("%d",&j);

list * dd = fst;

list *prew = fst;

//удаляем элемент с заданным числом из списка

while(dd->next!=dd){//пока не ост-ся один елемент

if(c == j){//удаление если счетчик равен заданному числу

c = 0;

prew->next = dd->next;

delete dd;

printf("delete\n");

}else{//иначе идем дальше

prew = dd;

dd = dd->next;

c++; }

}printf("Ostavsheesa chislo n = %d",dd->el);//выводим

}//оставшееся число

22.5 Определить: 1) R1 -:- R2

2) ПA1,A2A2=A4(R1))

R1 R2

A1

A2

A3

A4

A

C

B

E

B

D

C

A

C

B

D

B

A

C

B

D


A3

A4

B

E

B

D

1. R1 -:- R2

1) Q=П{A}-{B} (R1)= ПA1,A2 (R1) =

A1

A2

A

C

B

D

C

B

2)P1=Q©R2=

A1

A2

A3

A4

A

C

B

E

B

D

B

E

C

B

B

E

A

C

B

D

B

D

B

D

C

B

B

D


3)P2=P1-R1=

A1

A2

A3

A4

A

C

B

E

B

D

B

E

C

B

B

E

A

C

B

D

B

D

B

D

C

B

B

D


4)P3= ПA1,A2 (P2) =

A1

A2

B

D

C

B

5) R1 -:- R2=Q-P3=

A1

A2

A

C

B

D

C

B