Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачи на экзамен по эвм.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
53.6 Кб
Скачать

Int main(void){

freopen("input.txt","r",stdin);// считывай из файла как из стандартного потока!

FILE *out=fopen("output.txt","w");

int i;

list lst;

init(&lst);

while(gets(s))//считываем строки, пока не настанет конец файла

ins(&lst,s);//добавляем очередную строку в список

for(i=0;i < lst.n; rotate(&lst), i++)

find_num16(lst.head->s,out);

fclose(out);//закорываем выходной файл!

return 0;

}

№18. #include <stdio.h>

#include <stdlib.h>

Void sort(int a[],int lt,int rt){

int i=lt,j=rt,x=a[(lt+rt)/2],t;

do{

while(a[i]<x) i++;//находим следующий, который больше или равен

while(a[j]>x) j--;//находим следующий, который меньше или равен

if(i<=j){

t=a[i];a[i]=a[j];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 bad(int x){

char res=1;//res - четность количества единиц в двоичном представлении числа

while(x){

res^=(x&1);//изменяем четность, если последний бит числа x единичный

x>>=1;//делим x на 2

}

return res;

}

Int main(void){

FILE *in=fopen("input.txt","r");

FILE *out=fopen("output.txt","w");

int n,i,sum=0; //n-кол-во

Int *a; //массив

fscanf(in,"%d",&n);

a=(int*) malloc(n*sizeof(int));//выделение памяти под массив

for(i=0;i<n;i++){

fscanf(in,"%d",&a[i]);

sum+=a[i];

if(bad(a[i]))

a[i]=sum-a[i];

}

sort(a,0,n-1);

for(i=0;i<n;i++)

fprintf(out,"%d ",a[i]);

fprintf(out,"\n");

fclose(out);

return 0;

}

№19. #include <stdlib.h>

#include <stdio.h>

void swap(int *a,int *b){

int t;

t=(*a);

(*a)=(*b);

(*b)=t;

}

int val(int x){

return (x&255) + (x>>24);//(x&255) - числовое значение младшего байта, (x>>24) - старшего

}

void bubble_sort(int a[],int n){

int i,j;

for(i=1;i<n;i++)

for(j=0;j<n-i;j++)

if(val(a[j]) > val(a[j+1]))

swap(&a[j],&a[j+1]);

}

Int main(void){

FILE *in=fopen("input.txt","r");

FILE *out=fopen("output.txt","w");

int n,i;

int *a;

fscanf(in,"%d",&n);

a=(int*)malloc(sizeof(int)*n);

for(i=0;i<n;i++)

fscanf(in,"%d",&a[i]);

bubble_sort(a,n);

for(i=0;i<n;i++)

fprintf(out,"%d ",a[i]);

fprintf(out,"\n");

return 0;

}

№20. #include <stdio.h>

#include <stdlib.h>

#define MAXN 1000

Void sort(int a[],int lt,int rt){

int i=lt,j=rt,x=a[(lt+rt)/2],t;

do{

while(a[i]>x) i++;//находим следующий, который больше или равен

while(a[j]<x) j--;//находим следующий, который меньше или равен

if(i<=j){

t=a[i];a[i]=a[j];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 ok(int x){

if(x<0) x=-x;

int res=0;

while(x){

res+=(x%10);

x/=10;

}

return res%2;//если сумма цифр четная, то res%2 = 0, если нечетная - 1

}