Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






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]);

}

}

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

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

Функция с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().

Функция realloc()

void * realloc(void *ptr,unsigned size)

Функция realloc изменяет размер динамически выделенной памяти, на которую указывает ptr на новый размер - size байтов. Т.е для того чтобы можно было изменить размер памяти его необходимо обязательно динамически выделить с помощь функции malloc или функции calloc и при изменении размера выделяется новая память, а не меняется размер выделенной памяти следовательно необходимо переадресовывать указатель. Рассмотрим пример использования функции realloc.

void main(){

int *p1, *p2;

p1= (int *)malloc(5*sizeof(int));

if(!p1){

printf(“Error!!!!”);

exit(1);}

……………………

p2=(int *)realloc(p1,10*sizeof(int));//10 это новый размер массива, т.е. добавляется //еще 5 елементов

if(p2)//если память выделилась

p1=p2;//переадресация указателя

else{

printf(“Error!!!!”);

exit(1);}

…………………………

}

Задача: Вести размер массива и динамически выделить память. Заполнить элементы массива и удалить все 5 находящиеся в массиве.

#include<stdio.h>

#include<stdlib.h>

void vvod_mas(int *,const int);

void vivod_mas(int *,const int);

void main(){

int n,k=0;

int *x,*y;

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

scanf("%d",&n);

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

if(!x) return;

Vvod_mas(x,n);

printf("Содержание массива:\n");

Vivod_mas(x,n);

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

if(x[i]==5){

k++;

printf("\nk=%d\n",k);

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

x[j-1]=x[j];

}

}

n=n-k;

y=(int*)realloc(x,n*sizeof(int));

If(y)

x=y;

Else

Return;

printf("Содержание нового массива:\n");

Vivod_mas(x,n);

}

void vvod_mas(int *p,const int k){

for(int i=0;i<k;i++){

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

scanf("%d",(p+i));

}

}

void vivod_mas(int *p,const int k){

for(int i=0;i<k;i++)

printf("[%d]=%d\n",i,*(p+i));

}


СТРУКТУРА






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных