Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

С++ Как узнать количество элементов в массиве от 5 до 1?

Deus Мастер (1373), закрыт 5 лет назад
она должна счиать 5 3 6 8 1 (получается 5 элементов), а не 1 2 9 5

int dv = 1;
int fnh = 5;

int WDOrder[14] = {1, 2, 9, 5, 3, 6, 8};

for (int i = fnh; i>=dv; i--) {

Edit3->Text = sizeof(WDOrder[i]);
}
Лучший ответ
... Гений (84839) 5 лет назад
Вы вопрос нормально задали бы и давно бы Вам уже ответили. Я так понял нужно посчитать расстояние от первого найденного элемента до второго. Причем двигаться можно только вправо, если достигнут конец массива - начать поиск с начала. Вопрос только что делать если число не найдено и первое и второе?

Набросал функцию. Специально не использовал STL. Мало-ли... Вернет 0, если либо первое либо второе число не найдено

//Аргументы - указатель на массив, размер массива, первое число, второе число
size_t alternateLength(int* a, size_t size, int first, int second) {
for(size_t i=0; i < size; i++)
if (a[i] == first) {
size_t count = 0;
size_t j = i;
for(;;) {
j++; count++;
if (j>=size) j=0; //Дошли до конца? Начнем с начала
if (i==j) return 0; //Сделали полный цикл => не нашли
if (a[j]==second) return ++count; //Нашли второе - вернули
}
}
return 0;
}

....
int WDOrder[] = {1, 2, 9, 5, 3, 6, 8};
Edit3->Text = IntToStr(alternateLength(WDOrder, sizeof(WDOrder)/sizeof(WDOrder[0]), 5, 2));
....

//Соотв в Edit3->Text будет 6 (5,3,6,8,1,2)
DeusМастер (1373) 5 лет назад
не работает твой код пишет ошибку
... Гений (84839) Всё работает
ваыпы вапывпаУченик (102) 5 лет назад
не компилируется код твой
Остальные ответы
Алексей Сахаров Мастер (1985) 5 лет назад
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
unsigned long *d_massiv;

l=get_l(uroven);

//get_l(uroven) - определяет l в зависимости от входных данных функции

//функция выделения памяти под массив
unsigned long* poluchit_massiv(int kolvo_elementov){
return (unsigned long*) malloc(kolvo_elementov*sizeof(unsigned long));

}
//выделяем память под массив
d_massiv=poluchit_massiv(l);

//заполняем его
d_massiv[0]=1168;
d_massiv[1]=585;
d_massiv[2]=293;
d_massiv[3]=147;
d_massiv[4]=74;
d_massiv[5]=38;
d_massiv[6]=20;
DeusМастер (1373) 5 лет назад
ты вопрос ошибся
... Гений (84839) Edit3->Text = sizeof(WDOrder[i]); - Вам правильно-же Глеб сказал - Вы выводите в Edit3->Text размер целого числа. Оно у Вас 4 байта. Отсюда 4. И с какого перепоя 5, 3, 6, 8 и 1? 1 откуда? Из начала массива?
InviZzzible Мудрец (10825) 5 лет назад
cout << "Пиздюк !!!" << flush;
Иван Сигаев Искусственный Интеллект (150190) 5 лет назад
sizeof возвращает размер переменной, сколько еще раз это повторить?
DeusМастер (1373) 5 лет назад
не знаешь ответ не отвечай, пиши свою безмозглую прогу как Едит = 5
Похожие вопросы