Добавил:
okley
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2 семестр / sr13
.c#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 семестр
