Форум программистов, компьютерный форум CyberForum.ru

Переменная в качестве номера элемента массива. Array[Var] - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
07.08.2014, 13:38     Переменная в качестве номера элемента массива. Array[Var] #1
Мне нужно изменяя некую переменную Var обращатся к различным элементам массива Array[Var].

Компилятор не выдаёт ошибок, но код выполняется не так, как задумано,

Например
C++
1
SomeVar = Array[Var] // в лучшем случае получается что SomeVar принимает значение Var.
Короче не работает, и как я понимаю и не должно.

Помогите придумать выход из ситуации, иначе я просто разочаруюсь в этом очень сложном и очень безпомощьном языке С++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2014, 13:38     Переменная в качестве номера элемента массива. Array[Var]
Посмотрите здесь:

C++ Нахождения номера самого большего элемента массива целых чисел
Массивы (переменная в качестве размера для массива) C++
C++ Вычислить сумму элементов массива, порядковые номера которых совпадают со значением этого элемента
C++ Зачем взятие адреса нулевого элемента массива, если сама переменная и так его содержит?
Составить программу для нахождения первого элемента массива меньше десяти и его номера C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
07.08.2014, 13:43     Переменная в качестве номера элемента массива. Array[Var] #2

Не по теме:

Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
очень безпомощьном языке С++
Даа. Плюсы ни от кого помощи не ждут.



Добыча мусора:
C++
1
2
3
int Array[100];
int Var = 66;
int SomeVar = Array[Var];
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
07.08.2014, 13:43     Переменная в качестве номера элемента массива. Array[Var] #3
Вы так пробовали?
C++
1
2
3
4
5
6
7
8
9
int Array[10];
for(int i=0;i<10;i++)
    Array[i]=rand();
int Var;cin>>Var;
if(Var<10 && Var>=0)
{
    int SomeVar = Array[Var];
    cout<<SomeVar;
}
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
07.08.2014, 13:44     Переменная в качестве номера элемента массива. Array[Var] #4
Приведи компилируемый код, который воспроизводит данную ошибку.
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,732
Завершенные тесты: 5
07.08.2014, 13:46     Переменная в качестве номера элемента массива. Array[Var] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int a[5]={1,2,3,4,5};
int var=0;
a[var]//=1
va=4;
a[var]//=5;
///////////
for(int iterator;iterator<5;iterator++)
    std::cout<<a[iterator]<<endl;
/*
1
2
3
4
5
*/
Добавлено через 1 минуту

Не по теме:

Dmirtiy Vovk,

Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
очень безпомощьном языке С++
Уж не знаю что сказать...

zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
07.08.2014, 14:01     Переменная в качестве номера элемента массива. Array[Var] #6
Цитата Сообщение от dimabubyakin Посмотреть сообщение
for(int iterator;
Откуда следует, что переменной iterator присваивается ноль?
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,732
Завершенные тесты: 5
07.08.2014, 14:03     Переменная в качестве номера элемента массива. Array[Var] #7
zss, это уже невнимательность))
C++
1
for(int iterator=0;iterator<5;iterator++)
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
07.08.2014, 14:25  [ТС]     Переменная в качестве номера элемента массива. Array[Var] #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
                   ........................
                          PORTD = 1 << (Column-1);// Порт это регистр, 8-битное число
              PORTA = 1 << (Line-1);// Тоже самое.
              LedNum = (Line-1)*6 + Column;// LedNum получает значение в зависимости от Line и Column.
              Tmp = Leds100A[LedNum];// Тмп не получает ничего (0) !!!!!!!!!!!!!!!!!!
              Tmp = Tmp - GlobalTime; //Ну и дальше не происходит ничего интересного
              Tmp = Tmp * 100;
              Tmp = Tmp / Leds100A[LedNum];
              Tmp = round(Tmp);
              //Tmp = round((Leds100A[LedNum-1] - GlobalTime) * 100/Leds100A[LedNum-1]);
              OCR2 = Tmp*2.56;
              _delay_us(50);
              if(Column != 6)
              ++Column;
              else if(Line == 7)
                   Line = 1;
                   else
                   ++Line;
                          ..................................
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
07.08.2014, 14:38     Переменная в качестве номера элемента массива. Array[Var] #9
Dmirtiy Vovk, а вы уверены, что температура первого из стоамперных диодов не равна нулю?
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
07.08.2014, 14:54  [ТС]     Переменная в качестве номера элемента массива. Array[Var] #10
Цитата Сообщение от SatanaXIII Посмотреть сообщение
а вы уверены, что температура первого из стоамперных диодов не равна нулю?
Leds100A это не 100 А ))), а партия А, Tmp это Temporary.


Если верить той же среде разработки то массив int Leds100A имеет размер 42 и все данные правильно в нём...


Я наверное не могу отправлять ссылки и картинки, только зарегистрировался на этом форуме....

Добавлено через 7 минут
Цитата Сообщение от dimabubyakin Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int a[5]={1,2,3,4,5};
int var=0;
a[var]//=1
va=4;
a[var]//=5;
///////////
for(int iterator;iterator<5;iterator++)
   std::cout<<a[iterator]<<endl;
Скажите, этот код рабочий? iterator увеличивается на 1 и выводится соответствующий эллемент массива куда то там? Потому что у меня похожее не работает...
Ясно что в начале цикла нужно инициализировать int iterator=0.Я в общем об идее использования переменной как номер элемента массива.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
07.08.2014, 14:56     Переменная в качестве номера элемента массива. Array[Var] #11
Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
имеет размер 42
Вот вам и ответ. На все и вообще.

Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
Я наверное не могу отправлять ссылки и картинки, только зарегистрировался на этом форуме
Попробуйте вот так: http://www.cyberforum.ru/about-forum...tml#post594251
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
07.08.2014, 16:35  [ТС]     Переменная в качестве номера элемента массива. Array[Var] #12
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Вот вам и ответ. На все и вообще.
Я не понимаю, почему это ответ?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
07.08.2014, 16:41     Переменная в качестве номера элемента массива. Array[Var] #13
Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
Я не понимаю, почему это ответ?
Потому что это ответ на главный вопрос жизни, вселенной и всего такого.

А вообще сформулируйте свою проблему. Непонятно что вам требуется. Какая помощь.
krv
71 / 51 / 11
Регистрация: 10.07.2014
Сообщений: 328
07.08.2014, 16:51     Переменная в качестве номера элемента массива. Array[Var] #14
Кусочек кода - формально правильный. Скорей всего проблема в значениях Line, Column или самого массива.
Ибо в приведенном куске нет их инициализации.
Пройди пошагово и посмотри, к какому элементу массива ссылается конструкция
C++
1
2
LedNum = (Line-1)*6 + Column;// LedNum получает значение в зависимости от Line и Column.
              Tmp = Leds100A[LedNum]
и что хранится в массиве
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
07.08.2014, 16:52  [ТС]     Переменная в качестве номера элемента массива. Array[Var] #15
SatanaXIII,
Я хочу указывать вместо числа элемента массива переменную, но это не работает у меня.

Дима писал код
Цитата Сообщение от dimabubyakin Посмотреть сообщение
int a[5]={1,2,3,4,5};
int var=0;
a[var]//=1
va=4;
a[var]//=5;
///////////
for(int iterator;iterator<5;iterator++)
* * std::cout<<a[iterator]<<endl;
/*
1
2
3
4
5
*/
Я вот и спрашиваю, это у всех не работает или только у меня, если только у меня то почему? как еще выражать ся...
krv
71 / 51 / 11
Регистрация: 10.07.2014
Сообщений: 328
07.08.2014, 17:04     Переменная в качестве номера элемента массива. Array[Var] #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int a[5]={1,2,3,4,5};
int var=0;
std::cout<<a[var];// выведет 1
var=4;
std::cout<<a[var];// выведет 5
///////////
for(int iterator=0;iterator<5;iterator++)
    std::cout<<a[iterator]<<endl;
/* вывод
1
2
3
4
5
*/
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
07.08.2014, 19:38  [ТС]     Переменная в качестве номера элемента массива. Array[Var] #17
Цитата Сообщение от krv Посмотреть сообщение
Пройди пошагово и посмотри, к какому элементу массива ссылается конструкция
На картинке видно кусок этого кода. а внизу окно со значениями данных.
Пошагово и проверяю. Строка
C++
1
Tmp = Leds100A[LedNum];
Никак не меняет Tmp. То что написано в значении Tmp изменяет строка
C++
1
Tmp = round(Tmp);
Тоже ксати , непонятным образом, но это пока меня не очень волнует ведь под вопросом вся моя разработка изза этого дурацкого элемента массива.

Цитата Сообщение от krv Посмотреть сообщение
Ибо в приведенном куске нет их инициализации.
Конечно новички допускают много разных ошибок, но и компилятор не успокоится если будут грубые ошибки... конечно же я обьявил все переменные в шапке кода...
Миниатюры
Переменная в качестве номера элемента массива. Array[Var]  
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,732
Завершенные тесты: 5
07.08.2014, 20:27     Переменная в качестве номера элемента массива. Array[Var] #18
Dmirtiy Vovk, я написал просто кусок кода, не тестил его, просто что бы ты понял что это и как работает
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
07.08.2014, 20:33  [ТС]     Переменная в качестве номера элемента массива. Array[Var] #19
Цитата Сообщение от dimabubyakin Посмотреть сообщение
я написал просто кусок кода, не тестил его, просто что бы ты понял что это и как работает
Ради всего святого! я это в шапке темы написал! я тестил! я пришел на форум чтобы разобраться почему это не работает и может ли это вобще работать!?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2014, 20:49     Переменная в качестве номера элемента массива. Array[Var]
Еще ссылки по теме:

C++ Составить программу для нахождения номера максимального элемента массива
C++ Описать процедуру NminMax(A,N,NMin,NMax), находящую номера минимального и максимального элемента массива А
C++ Переменная в качестве размера массива

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,732
Завершенные тесты: 5
07.08.2014, 20:49     Переменная в качестве номера элемента массива. Array[Var] #20
Dmirtiy Vovk,
Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
C++
1
SomeVar = Array[Var];
это работает, или может быть ты другого результата ждешь?
Yandex
Объявления
07.08.2014, 20:49     Переменная в качестве номера элемента массива. Array[Var]
Ответ Создать тему
Опции темы

Текущее время: 03:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru