nixp.ru v3.0

23 января 2017,
понедельник,
17:57:39 MSK

DevOps с компанией «Флант»
Kat написал 3 ноября 2013 года в 13:14 (718 просмотров) Ведет себя неопределенно; открыл 5 тем в форуме, оставил 7 комментариев на сайте.

Здравствуйте помогите пожалуйста
Нужно добавить К столбцов в начало матрицы, добавлять оно добавляться но оно берет память левую, выходит за приделы массива, не могу переделать. Помогите пожалуйста.

#include <iostream>
#include <stdlib.h>
#include <conio.h>
main()
{
int n,i,j,el ;
printf («\n Enter the size of array: »);
scanf («%d»,&n);
int *masiv;
masiv=(int*)malloc(n*sizeof(int));
for( i=0;i<n;i++)
{
masiv=rand()%100;
printf (» %d», masiv
);
}
printf («\n Kolichestvo elementov kotorie dobavit: »);
scanf («%d»,&el);
printf(«\n Chisla\n»);
for( i=n;i<(n+el);i++)
{
masiv=rand()%100;
printf (» %d », masiv
);
}
printf(«\n Polychilos\n»);
for( i=0;i<n+el;i++)
{
printf (» %d », masiv );
}
free(masiv);
}

rgo

У тебя память выделена под n элементов. Значит впихнуть в эту память n+el элементов не получится в принципе. Нужен другой кусок памяти, побольше. Тут может помочь realloc:

scanf("%d", &el);
masiv = realloc(masiv, n + el); 


После этого к массиву будет добавлено место под el элементов в конце. Чтобы вставить же элементы в начало, придётся сдвинуть все элементы на el элементов. То есть по всем i от n-1 и до нуля, надо сделать: masiv[i+el]=masiv.

 

Kat

извините не могу это в код преобразить не поможете

Kat

Спасибо большое разобралась )))

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.