Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
16.11.2025
Размер:
3.65 Кб
Скачать
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int K[1];
int *c;
void insert(int **a, int n, int k, int A) {
    int *q;
    int i;
    q = (int*) realloc(*a, (n+1)*sizeof(int));
    if (q==NULL) {
            printf("Ошибка! Нет памяти.");
    }
    else {
            *a = q;
            for(i=n; i>=k; i--){
                    (*a)[i+1] = q[i];
            }
            (*a)[k]=A;
    }
}
void swap(int **a, int i, int j){
    int b;
    b=(*a)[i];
    (*a)[i]=(*a)[j];
    (*a)[j]=b;
}
void swapN(int **a, int n){ // Функция 1 (для перестановки)
    int i;
    int b[2*n+1];
    b[0]=0;
    for(i=0; i<2*n; i++){
        b[i]=(*a)[i];
    }
    for(i=0; i<2*n; i++){
        if(i%2){
            (*a)[i]=b[(n+i/2)];
        }
        else{
            (*a)[i]=b[((i+1)/2)];
        }
    }
}
void printm(int **a, int n){ // Вывод
    int l;
    for(l=0; l<n; l++){
        printf("  A[%02d]", l+1);
    }
    printf("\n");
    for(l=0; l<n; l++){
        printf("%7d", (*a)[l]);
    }
    printf("\n");
}
void output_mas_file(int **a, int N){ // Функция для вывода массива в файл
    FILE *fp;
    char b[20];
    if ( (fp = fopen("test.txt","w")) == NULL ) {
            printf("Ошибка!\n");
            exit(1);
    }
    int i;
    for(i=0; i<N; i++){
            sprintf(b, "%d", (*a)[i]);
            fputs(b, fp);
            fputs(" ", fp);
    }
    fclose(fp);
}
void remove_element(int **a, int k, int N){ // Удаление одного элемента
    int i;
    for(i=(k-1); i<N-1; i++){
        (*a)[i]=(*a)[i+1];
    }
    K[0]--;
    (*a) = (int*) realloc((*a), (N-1)*sizeof(int));
}
void add_element(int **a, int k, int N, int B){
    int i;
    (*a) = (int*) realloc((*a), (N+1)*sizeof(int));
    for(i=N; i>=k; i--){
        (*a)[i]=(*a)[i-1];
    }
    K[0]++;
    (*a)[k-1]=B;
}
void input_mas_file(int **a){ // Функция для вывода массива из файла
    int A[100];
    char b[100];
    int ch;
    int i=0, j=0;
    FILE *fp;
    fp = fopen("test2.txt","r");
    ch = getc(fp);
    while (ch != EOF) {
            if(ch==' '){
                b[i]='\0';
                A[j]=atoi(b);
                i=0;
                j++;
            }
            b[i]=ch;
            ch = getc(fp);
            i++;
    }
    fclose(fp);
    A[j]=atoi(b);
    (*K)=j+1;
    c = (int *) malloc((j+1) * sizeof (int));
    for(i=0; i<=j; i++){
        c[i]=A[i];
    }
}
void remove_range(int **a, int A, int B){ // Удаление элементов заданного интервала
    int i, j=0;
    for(i=0; i<K[0]; i++){
        if(((*a)[i]>=A)&&((*a)[i]<=B)){
            j++;
        }
    }
    int *D;
    D = (int *) malloc(j * sizeof (int));
    j=0;
    for(i=0; i<K[0]; i++){
        if(((*a)[i]>=A)&&((*a)[i]<=B)){
            D[j]=i;
            j++;
        }
    }
    for(i=0; i<j; i++){
        remove_element(a, (D[i]-i+1), (K[0]));
    }
}
int main(void){
    int N, j, k, A, i, n;
    K[0]=0;
    int *dinmas; // Dinam. massiv;
//    scanf("%d", &n);
//    scanf("%d", &N);
    dinmas = (int *) malloc(N * sizeof (int));
    if(dinmas == NULL){
        exit(EXIT_FAILURE);
    }
//    for(j=0; j<N; ++j){
//        scanf("%d", &dinmas[j]);
//    }
//    printm(&dinmas, N);
//    printf("\n");
//    swapN(&dinmas, n);
//    printm(&dinmas, N);
//    printf("\n");
    input_mas_file(&c);
    printm(&c, (K[0]));
    remove_element(&c, 7, (K[0]));
    printm(&c, (K[0]));
    add_element(&c, 7, (K[0]), 255);
    printm(&c, (K[0]));
    remove_range(&c, 300, 800);
    printm(&c, (K[0]));
}
Соседние файлы в папке 2 семестр