Не могу записать координаты в массив
Вопросы:
1.Нужно ли вообще создавать двумерный массив для точек?
2.Как вообще записать эти координаты точек в массив?
У меня это выглядет так (но я понимаю, что это неправильно)
int mass[][];
//----------------------------------------------
/* дальше есть цикл такой */
int count_x = 0, count_y = 0;
for( int i=0; i<Width; i += step_x )
{
count_x++;
for( int j=0; j<; j += step_y )
{
count_y++;
// Тут тоже ошибка в присваивании
mass[count_x][count_y]={i,j};
}
}
Есть двумерный массив. Есть координаты точек.
Вопросы:
1.Нужно ли вообще создавать двумерный массив для точек?
2.Как вообще записать эти координаты точек в массив?
У меня это выглядет так (но я понимаю, что это неправильно)
Очень странцы вопросы.
1. Не нужно. Можно писать одну координату с четный индексом, а вторую с нечетным. Но удобнее использовать двумерный массив.
2. С помощью операции присваивания.
Как-то не по человечески сформулирован вопрос. Не совсем понятно, что ты хочешь.
1.Нужно ли вообще создавать двумерный массив для точек?
Если совсем ничего не понимаешь - создай массив из TPoint-ов или виндовых POINT-ов, что суть одно и то же.
Есть двумерный массив. Есть координаты точек.
Вопросы:
1.Нужно ли вообще создавать двумерный массив для точек?
2.Как вообще записать эти координаты точек в массив?
У меня это выглядет так (но я понимаю, что это неправильно)
int mass[][];
//----------------------------------------------
/* дальше есть цикл такой */
int count_x = 0, count_y = 0;
for( int i=0; i<Width; i += step_x )
{
count_x++;
for( int j=0; j<; j += step_y )
{
count_y++;
// Тут тоже ошибка в присваивании
mass[count_x][count_y]={i,j};
}
}
Этот цикл не будет никогда работать. Так как в нем присутствует синтаксическая ошибка. Во внутреннем цикле j меньше чего?
Во внутреннем цикле тоже не понятное присваивание. Переменной типа int хочешь присвоить два числа? Тогда насколько я понял задачу тебе нужно трехмерный масив или двухмерный масив структур(как сказал Freeman)...
Это просто описка! j < Height. Не придерайся!
У меня больше теоритический вопрос!
Нужно присвоить координаты каждой из сот в виде a[x][y]!
Dart Bobr
Это просто описка! j < Height. Не придерайся!
У меня больше теоритический вопрос!
Нужно присвоить координаты каждой из сот в виде a[x][y]!
Кстати, ту где-то выделяешь склероз под массив, или как.
А люди тебе советуцт правильно: Либо массив TPoint, либо добавь еще одну размерность. две координаты в одно целое не войдут никак(Разве, что хитроумно зашифровать).
Кстати, ту где-то выделяешь склероз под массив, или как.
А люди тебе советуцт правильно: Либо массив TPoint, либо добавь еще одну размерность. две координаты в одно целое не войдут никак(Разве, что хитроумно зашифровать).
Перечитал еще раз ваши советы! Я понял как это реализовать! Спасибо за внимание =)))
Перечитал еще раз ваши советы! Я понял как это реализовать! Спасибо за внимание =)))
Глупый вопрос! А в массив TPoint так нужно записать a=Point(x,y)?
Тогда я так понимаю a - cтоит объявить как extern int a[]?
Глупый вопрос! А в массив TPoint так нужно записать a=Point(x,y)?
Тогда я так понимаю a - cтоит объявить как extern int a[]?
Вопрос в натуре глупый, ибо если TPoint a[], то a имеет тип TPoint, а никак не int.
Глупый вопрос! А в массив TPoint так нужно записать a=Point(x,y)?
Тогда я так понимаю a - cтоит объявить как extern int a[]?
Да создай свою структуру с int координатами:
struct TPointI {
int x;
int y;
};
void main(...)
{
TPointI *ar=(TPointI*)malloc(1000);
int x1=0,y1=0;
for(int i=0;i<1000;i++)
{
ar.x=x1;
ar.y=y1;
}
}
Надеюсь суть использования массива структур видна.
две координаты в одно целое не войдут никак
Спорим, что войдут? :) Конечно с некоторыми ограничениями, но войдут.
ИМХО - ничего хитроумного в этом нет:
{
unsigned long int points[10];
unsigned long int buf=0;
register int i=0;
for(;i<10;i++)
{
cout<<"Vvedite X"<<i+1<<": ";
cin>>buf;
points=buf;
cout<<"Vvedite Y"<<i+1<<": ";
cin>>buf;
points=points | (buf<<16);
}
cout<<"Vivid koordinat\n";
for(i=0;i<10;i++)
{
cout<<"X"<<i+1<<"=";
cout<<(points & 0x0000FFFF)<<endl;
cout<<"Y"<<i+1<<"=";
cout<<(points>>16)<<endl;
}
return 0;
}
Но все же более по людски будет с использованием структур. К тому же типы данных могут оказаться разной длинны для разных машин, но тут все дело в принципе.
ЗЫ. Автор, а причем PHP?
/* определяем массив. Как его определить, если я заранее еще не знаю его размер */
int mass[][];
DissDoc книжка по С или С++ есть? Дабы не задавать таких действительно дурацких вопросов, ищем в ней "динамический массив" - то, что нужно для ответа на твой вопрос.
Например int *mass=new int [n]; где n - переменная значение которой можно задать на этапе выполнения программы.
Или: int *mass=(int*)malloc(sizeof(int)*n); n - аналогично предыдущему.
Главное проверять удалось ли выделить затребованную память. Как это сделать - ищи сам.
Спорим, что войдут? :) Конечно с некоторыми ограничениями, но войдут.
ИМХО - ничего хитроумного в этом нет:
{
unsigned long int points[10];
unsigned long int buf=0;
register int i=0;
for(;i<10;i++)
{
cout<<"Vvedite X"<<i+1<<": ";
cin>>buf;
points=buf;
cout<<"Vvedite Y"<<i+1<<": ";
cin>>buf;
points=points | (buf<<16);
}
cout<<"Vivid koordinat\n";
for(i=0;i<10;i++)
{
cout<<"X"<<i+1<<"=";
cout<<(points & 0x0000FFFF)<<endl;
cout<<"Y"<<i+1<<"=";
cout<<(points>>16)<<endl;
}
return 0;
}
Хитро ;), но на код приведеный автором не похоже.
Гм, всегда хотел узнать есть ли в С возможность расширить динамический масив и не потерять данные. Может кто-то знает?
Хитро ;), но на код приведеный автором не похоже.
Автор изначально привел "слегка" нерабочий код. Вот и подкорректировал я его немного. За то, идеологически получилось так как хотел автор:
mass[count_x][count_y]={i,j}; - хотел запихнуть два значения в одну переменную. Что в итоге и получил. Правда это все равно изврат :)
Гм, всегда хотел узнать есть ли в С возможность расширить динамический масив и не потерять данные. Может кто-то знает?
Т.е. сделать например
int *mass=new int[n];
А затем взять и "растянуть" его, например если было n=10, то расширить массив до 20 без потери данных?
Не думал над этим потому, что ни разу не возникало необходимости. Можно попробовать. О результатах сообщу отдельно.
{
int *mas=(int*)malloc(sizeof(int)*10);
register int i=0, j=10;
for(;i<10;i++)
mas=i+1;
for(i=0;i<10;i++)
cout<<mas<<" ";
cout<<endl;
mas=(int*)realloc(mas,sizeof(int)*20);]//вот где собака порыласть
if(mas)
for(i=0;i<20;i++)
cout<<mas<<" ";
return 0;
}
Я правда еще подумаю.. Мне кажется есть еще способ проще...:D
Спорим, что войдут? :)
(points>>16)
Но все же более по людски будет с использованием структур. К тому же типы данных могут оказаться разной длинны для разных машин, но тут все дело в принципе.
struct A
{
T x:sizeof(T)*4;
T y:sizeof(T)*4;
};
Только это изврат
Хи, а тут и думать оказывается особенно нечего.
Это нечего думать тем, кто на С проги пишет. Я ж вообще С только недавно начал учить. Сначала был паскаль, потом дельф, потом асм, счас С. Но асм все равно продолжаю учить и совершенствовать. :)
А вообще, это может пригодиться. Вот сессию сдам, и с друзьями будем одну ма-а-аленькую прогу писать :). Типа навороченый 3д движок. Придется на С писать. Вот такое там пригодится.
Мне кажется есть еще способ проще...:D
Сделай проще, насколько можно. Но не проще.
(c) не помню кто.
Есть такая функция - realloc. Она изменяет размер массива. Данные при этом сохраняются, но следует помнить, что при этом меняется адрес массива
realloc - это С, а не С++, и предназначена для работы с блоками памяти, а не с массивами.
Применение её для классов - крайне неверный способ.
Есть такая функция - realloc. Она изменяет размер массива. Данные при этом сохраняются, но следует помнить, что при этом меняется адрес массива
lexeich приведенный мной код смотрели? Интересно, чем я там менял размер динамического массива?
Кстати, адрес нулевого элемента массива не обязательно поменяется, а лишь в том случае, если следующие ячейки памяти за массивом уже под что-то заняты. Тогда будет найден другой кусок памяти в который можно записать весь массив и соответственно, поменяется адрес. В любом случае - программисту это будет незаметно, т.к. n-элементов начального массива без изменения скопируются по новым адресам.
Green - вопрос Бобра был про Си и динамический массив. Я не думаю, что он имел ввиду классы.