| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Плз, кто знает, приведите пример того, как в C++ for DOS увеличить чило элементов массива до определенной величины, т.к. заранее неизвестно сколько там будет элементов. Есть ли какнить функция для этого.
В дельфе помница была функция setsize. А в C++ for DOS чтонить есть наподобие?
|
|
|
|
|
# 4 |
|
Member
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336
![]() ![]() |
Можно в принципе так сделать, не уверен, что это хорошо:
//имеем изначально int* p=new int[N]; //увеличиваем длину на L int *p1=new int[N+L]; for(int i=0;i<N;i++){ p1[i]=p[i]; } p=p1; delete [] p1; Как написал Drakosha можно использовать библиотеку STL, но наверно для тебя это будет пока сложно (надо знать, что такое классы, шаблоны и с чем их едят) realloc() - судя по названию, относится просто к C, но про нее стоит прочитать в MSDN |
|
|
|
|
# 6 | |
|
Junior Member
Регистрация: 10.08.2004
Адрес: Завис в конторе
Пол: Male
Сообщения: 180
![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Лучше так: Код:
int *p = new int [size]; ... int *p1 = new int[newSize]; memcpy((void*)p1, (void*)p, ((newSize>size)?size:newSize)*sizeof(int)); delete [] p; p = p1; size = newSize;
__________________
Не нервируйте меня. Мне скоро негде будет прятать трупы! |
|
|
|
|
|
# 7 |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Кхмм..
Ничего не понятно )Вот мой код: Код:
#include <stdio.h>
#include <conio.h>
int main()
{
clrscr();
int kol; //kol-vo elementov
printf("Number of elements: ");
scanf("%d",&kol);
printf("**********************\n\n");
float tek,pred; //tek. AND pred. elements;
int flag=1; //vozrastayushaya OR not;
for (int i=1;i<=kol;i++)
{
printf("Element %d: ",i); //element numb. i;
scanf("%f",&tek); //get him ;)))
if (i==1) //if it's the first elem-t;
{
pred=tek;
}
if (tek<pred)
{
flag=0;
};
pred=tek;
};
printf("-------\n");
printf("RESULT:\n");
if (flag==0)
{
printf("*Posledovatelnost ne yavlyaetsya monotonno vozrastayushei!");
}
else
{
printf("*Posledovatelnost yavlyaetsya monotonno vozrastayushei!");
}
getch();
return 0;
}
|
|
|
|
|
# 8 | |
|
Junior Member
Регистрация: 03.02.2006
Сообщения: 160
![]() ![]() ![]() |
Цитата:
|
|
|
|
|
|
# 10 | |
|
Junior Member
Регистрация: 10.08.2004
Адрес: Завис в конторе
Пол: Male
Сообщения: 180
![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Код:
#include <stdio.h>
#include <conio.h>
int main()
{
clrscr();
int kol; //kol-vo elementov
printf("Number of elements: ");
scanf("%d",&kol);
float *vector = new float[kol]; // это наш массив
printf("**********************\n\n");
float tek,pred; //tek. AND pred. elements;
int flag=1; //vozrastayushaya OR not;
for (int i=1;i<=kol;i++)
{
printf("Element %d: ",i); //element numb. i;
scanf("%f",&tek); //get him ;)))
vector[i-1] = tek; // записываем его в массив
if (i==1) //if it's the first elem-t;
{
pred=tek;
}
if (tek<pred)
{
flag=0;
};
pred=tek;
};
printf("-------\n");
printf("RESULT:\n");
for (int i = 0; i < kol; i++)
printf("%lf ", vector[i]); // выводим массив
if (flag==0)
{
printf("*Posledovatelnost ne yavlyaetsya monotonno vozrastayushei!");
}
else
{
printf("*Posledovatelnost yavlyaetsya monotonno vozrastayushei!");
}
getch();
delete [] vector; // удаляем перед выходом.
return 0;
}
__________________
Не нервируйте меня. Мне скоро негде будет прятать трупы! |
|
|
|
|
|
# 11 |
|
Member
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336
![]() ![]() |
Делается элементарно
Проверено, Работает Код:
#include <stdio.h>
void main(void){
int kol, i;
printf("Number of elements: ");
scanf("%d",&kol);
printf("**********************\n\n");
int* mas=new int[kol];
bool flag=1;
for (i=0;i<kol;i++){
printf("Element %d: ",i+1);
scanf("%d",&mas[i]);
if(i!=0)
if(mas[i-1]>=mas[i])
flag=0;
}
printf("-------\n\n");
printf("Sequence is: ");
for(i=0;i<kol;i++)
printf("%d ",mas[i]);
printf("\nResult: ");
if (!flag)
printf("Sequence is not increasing!\n");
else
printf("Sequence is increasing!\n");
getchar();
getchar();
}
|
|
|
|
|
# 12 | |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Цитата:
Вопрос еще: А тут не надо удалять массив перед выходом из проги как в предыдущем примере? ![]() Флаг типа bool не пашет. Я оставил как было у меня. А так все ОКе. Пасибо!
|
|
|
|
|
|
# 13 |
|
Member
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336
![]() ![]() |
SteFF
Насколько я понимаю, удалять очень нужно, когда прога много памяти юзает. В данном случае не удаление некритично, т.к. ОС вроде сама все подчистит после завершения проги. бул в компиляторах типа Borland C++ у меня тоже не очень работал, в VS6b и бул работает
|
|
|
|
|
# 14 | |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Цитата:
)И всем кто откликнулся!
|
|
|
|
|
|
# 15 | |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
При выходе из проги вся занимаемая ею память автоматом очищается (если особыми финтами ты не вешаешь резидента, конечно).
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
|
# 18 |
|
Junior Member
Регистрация: 10.08.2004
Адрес: Завис в конторе
Пол: Male
Сообщения: 180
![]() ![]() ![]() ![]() ![]() ![]() |
Сначала начинающие кодеры наслушаются всяких разных вещей, проникнуться идеей, а потом... мама не горюй, что у них выходит. Один решит, что функция используется один раз и поэтому память можно не удалять, другой решит использовать эту функцию 1000 раз и... простенькое консольное приложение будет занимать в памяти столько же сколько 3dmax во время рендеринга.
В этом примере все просто и память действительно удалять не критично. А если я этот код вынесу в отдельную функцию, напишу в main тест, посмотрю что все работает, и отдам дальше человеку, который будет ее узать. Если придерживаться мнения, что дом снесут, убирать не надо, то проблем утечки памяти не было бы в принципе. Все равно прогу когда-нибудь закроют, все и освободиться. ps: просто меня всегда учили, если выделенная тобой память не используется, то ее надо освободить, нельза пускать это на самотек.
__________________
Не нервируйте меня. Мне скоро негде будет прятать трупы! |
|
|
|
|
# 19 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
GOre01, не путай святое с праведным
![]() За фразу "выделенная память должна быть освобождена" я готов проголосовать двумя руками Но разговор сейчас идет о том, надо ли освобождать память перед завершением программы. Это две совершенно различные вещи
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
# 20 |
|
Junior Member
Регистрация: 10.08.2004
Адрес: Завис в конторе
Пол: Male
Сообщения: 180
![]() ![]() ![]() ![]() ![]() ![]() |
Не будем спорить, т.к. тема уже раскрыта. Тем более, я согласен, что в контексте этого решения память освобождать действительно не надо.
__________________
Не нервируйте меня. Мне скоро негде будет прятать трупы! |
|
|