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

Void main()

{

int *ptr1,*ptr2,*ptr3,n1,n2,i1=0,i2=0,i3=0;

printf("Введите размер I-го массива: ");

scanf("%d",&n1);

ptr1=(int *)malloc(n1*sizeof(int));

if(!ptr1)

{

printf("Нет места!!!\n");

exit(1);

}

printf("Введите размер II-го массива: ");

scanf("%d",&n2);

ptr2=(int *)malloc(n2*sizeof(int));

if(!ptr2)

{

printf("Нет места!!!\n");

exit(1);

}

ptr3=(int *)malloc((n2+n1)*sizeof(int));

if(!ptr3)

{

printf("Нет места!!!\n");

exit(1);

}

printf("Введите I-ий массив:\n");

Vvod_mas(ptr1,n1);

printf("Введите II-ой массив:\n");

Vvod_mas(ptr2,n2);

sort_vozr(ptr1,n1);

sort_vozr(ptr2,n2);

while((i1<n1) && (i2<n2))

{

if(ptr1[i1]<ptr2[i2])

ptr3[i3]=ptr1[i1++];

else

ptr3[i3]=ptr2[i2++];

i3++;

}

while((i1<n1) || (i2<n2))

{

if(i1<n1)

ptr3[i3++]=ptr1[i1++];

else

ptr3[i3++]=ptr2[i2++];

}

printf("\nРезультат:\n");

for(i1=0;i1<n1+n2;i1++)

printf("%d ",ptr3[i1]);

printf("\n");

free(ptr1);

free(ptr2);

free(ptr3);

}

Void sort_vozr(int*X,int n)

{

int k,buf,i,j;

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

{

for(k=i,j=i+1;j<n;j++)

{

if(x[k]>x[j])

k=j;

}

buf=x[k];

x[k]=x[i];

x[i]=buf;

}

}

Void vvod_mas(int*X,int n)

{

int i;

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

{

printf("[%d]=",i);

scanf("%d",&x[i]);

}

}

  1. Написать программу, которая вводит строку и проверяет, является ли данная строка палиндромом. Палиндромом называется та строка, которая при считывании и с начало и с конца одинакова, например 1234321 или сос. После ввода строки считаем длину строки и динамически выделяем место, куда переписываем данную строку и проверяем, совпали они или нет.

  2. Ввести строку. Если длина строки а) >10, то удалить 2 первых символа строки и 3 последних символа в строке б)< 10, то удалить символ, находящийся по середины строки.

6.2 Функция сalloc()

Функция сalloc() как и функция malloc() осуществляется запрос на выделение свободной памяти и при наличии таковой, запрошенный объем свободной памяти выделяется на нужды программы, но различие в том что выделяемая память инициализируется нулями.

Void * сalloc(unsigned num ,unsigned size)

Функция calloc выделяет область памяти размером num*size байтов. В случае успеха, calloc возвращает указатель на начало выделенного блока памяти. Если для выделенной памяти не хватает места, возвращает NULL.

1. объявляется указатель на какой-то тип данных.

тип_данных *имя_указателя;

2. вызов функции calloc() для выделения области памяти

имя_указателя=(тип_данных *)calloc(количество, sizeof(тип_данных));

3. проверка, выделилась ли память

if(!имя_указателя)

{

printf(“Нет места!!!!\n”);

exit(1);// прекращение работы программы, причем в качестве аргумента, может быть //использовано любое целое число. Одна по соглашению было принято передавать 1, если причиной //прерывания программы послужила ошибка и 0 в остальных случаях.

}

4. использование выделенной памяти.

5. освобождение памяти

free(имя_указателя);

Функцию calloc() можно использовать как и функцию malloc().