
- •Void sort(int a[],int lt,int rt){
- •Int main(void){
- •Void sort(int a[],int lt,int rt){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Void sort(int a[],int lt,int rt){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Void sort(int a[],int lt,int rt){
- •Int main(void){
- •Int *a; //массив
- •Int main(void){
- •Void sort(int a[],int lt,int rt){
- •Int main(void){
- •Int *a; //массив
Int main(void){
FILE *in=fopen("input.txt","r");
FILE *out=fopen("output.txt","w");
int n,i;
double *a;
fscanf(in,"%d",&n);
a=(double*)malloc(sizeof(double)*(n));
for(i=0;i<n;i++)
fscanf(in,"%lf",&a[i]);
hsort(a,n);
for(i=0;i<n;i++)
fprintf(out,"%.2lf ",a[i]);
fprintf(out,"\n");
fclose(in);
fclose(out);
return 0;
}
№12. #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXL 256//максимальное количество элементов в строке
typedef struct elem{
char s[MAXL];
int x;
} elem;
typedef struct node{//элемент списка
struct node *next,*prev;//следующий и предыдущий элемент
elem val;//данные текущего элемента (в 4 задаче - строчка длины MAXS)
} node;
typedef struct list{
node *head;//выделенный элемент списка
int n;//количество элементов в списке
} list;
void swap(elem *a,elem *b){//поменять местами 2 строки
elem t;
t=(*a);
(*a)=(*b);
(*b)=t;
}
void init(list *lst){//инициализация списка
lst->head=0;//создается пустой список. совсем пустой
lst->n=0;
}
void link(node *u,node *v){//связать элементы списка u и v
u->next=v;
v->prev=u;
}
void ins(list *lst,elem x){//добавление элемента в список
node *e=(node*)malloc(sizeof(node));//выделение памяти под 1(!!) элемент типа "node". никаких массивов здесь нет
e->val=x;
// a->b = (*a).b
if(lst->n==0){//если список пустой
lst->head=e;//выделенный элемент (а других и нет :D) пусть будет равен только что созданному
e->next=e;//закольцовываем список. e<-e->e
e->prev=e;
lst->n++;
return;//завершаем выполнение функции
}
//если в списке естьэлементы, вставляем вновь созданный элемент списка после элемента head
link(lst->head->prev,e);// head->prev -> e
link(e,lst->head);//e -> head
lst->n++;
}
void rotate(list *lst){//перемещение головы списка на позицию вперед
lst->head=lst->head->next;
}
void print(list *lst,FILE *out){
int i;
for(i=0;i < lst->n; rotate(lst),i++){
fprintf(out,"%s\n%d\n\n",lst->head->val.s,lst->head->val.x);//выводим то, что под головой
}
}
void sort(list *lst){//cортировка списка
int i,j,n=lst->n;
node *e;
for(i=0;i<n;rotate(lst),i++){//начинаем двигаться по списку, сдвигая голову n раз
e=lst->head->next;//просматриваем все элементы, начиная со следующего за головой
for(j=1;j<n-i;e=e->next,j++)//все, кроме тех, которые уже были головой
if(e->val.x > lst->head->val.x)//елси там храниться строчка, которая меньше, чем то, что в текущей голове
swap(&e->val,&lst->head->val);//меняем строчки местами
}
}
char buf[MAXL];
Int main(void){
freopen("input.txt","r",stdin);// считывай из файла как из стандартного потока!
FILE *out=fopen("output.txt","w");
elem e;
list lst;
init(&lst);
while(gets(e.s)){
scanf("%d",&e.x);
gets(buf);
ins(&lst,e);
}
sort(&lst);
print(&lst,out);
return 0;
}
№13. #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXL 256
#define MAXN 10000
void sort(char* a[],int lt,int rt){
int i=lt,j=rt;
char *x=(char*)malloc(MAXL);
char *t;
t=(char *) malloc(MAXL);
strcpy(x,a[(lt+rt)/2]);
do{
while(strlen(a[i]) < strlen(x)) i++;
while(strlen(a[j]) > strlen(x)) j--;
if(i<=j){
strcpy(t,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],t);
//когда встретимся (i==j, а этот момент обязвтельно наступит), то удобно сделать i++ и j-- [ключевое слово: обрезать]
i++;j--;
}
}while(i<=j);
if(lt < j) sort(a,lt,j);//сортируем первую половину
if(i < rt) sort(a,i,rt);//сортируем одну половину
//в двух половинах суммарно уже как минимум на 1 элемент меньше!
}
char *s[MAXN];
char buf[MAXL];
char *t[MAXN];
int m;
char bad(char s[]){
int i;
for(i=0;i<m;i++)
if(strstr(s,t[i])) return 1;//если хотя бы одна из строк t[i] входит в s как подстрока, то s плохая
return 0;//иначе она хорошая
}