Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
#1

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

07.08.2014, 13:38. Просмотров 1320. Ответов 40
Метки нет (Все метки)

Мне нужно изменяя некую переменную Var обращатся к различным элементам массива Array[Var].

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

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

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

Переменная в качестве размера массива - C++
Добрый вечер. Вопрос таков: мне нужно установить количество символов массива, равное переменной, но ошибка в том, что выражение должно...

Массивы (переменная в качестве размера для массива) - C++
Доброго времени суток! Подскажите, что я не правильно сделал? Там где у меня создаются массивы переменная "number" подчеркнута, а...

Определить номера минимального элемента массива и элемента, являющегося минимальным без учета этого элемента. - C++
Дан массив. Определить номера минимального элемента массива и элемента, являющегося мини-мальным без учета этого элемента.

Проверка номера элемента массива на простоту - C++
Дан массив вещественных чисел.Необходимо вывести сумму чисел, порядковые номера которых являются простыми числами. Как можно осуществить...

Зачем взятие адреса нулевого элемента массива, если сама переменная и так его содержит? - C++
Доброго времени суток. Очень часто наблюдаю во всевозможных примерах такого вида код: void* bits = (void*)&(pixels); Таких...

Нахождения номера самого большего элемента массива целых чисел - C++
Составьте фрагмент программы на С++ для нахождения номера самого большего элемента массива целых чисел из 10-ти элементов

40
Le_Mon
0 / 0 / 0
Регистрация: 08.08.2014
Сообщений: 16
08.08.2014, 09:39 #31
Да, код рабочий
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
08.08.2014, 13:31 #32
Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
При том что в микросхеме 2кб памяти
Тогда volatile поставь.
C++
1
volatile int var = 0;
и т.д.
1
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
09.08.2014, 05:08  [ТС] #33
DrOffset, Да , это помогло, а еще помогает полное отключение оптимизации, но тогда библиотека delay.h предупреждает о неточности счета, как я понимаю...

Пока не закрываю тему =)
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
09.08.2014, 11:41 #34
Dmirtiy Vovk, я все-таки буду настаивать на том, что лучший вариант - это избавиться от глобальных переменных вообще. В твоем варианте это можно сделать вполне.
0
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
09.08.2014, 12:38  [ТС] #35
DrOffset, Я попробую, но у меня с ними напряженные отношения.
Зачем они вобще нужны если работают только внутри блока?
0
Technogen
9 / 9 / 0
Регистрация: 14.02.2011
Сообщений: 23
09.08.2014, 13:10 #36
Я извиняюсь, просто тут обсуждают тему с массивами, просто хочу спросить ,кто знает,я читаю книгу С,Дэвис. C++ для чайников 5-е издание, так вот там на странице 96 автор пишет ,что если массив инициализировать как
C++
1
floatArray[25] = {1.0};
то все 25 элементов массива инициализируются как 1.0.Но после компиляции явижу только первый т.е. нулевой индекс как 1.0, а остальные 24 идут как 0.Я что то не пойму, вроде же остальные со слов автора должны идти по 1.0 а не по 0?Или как?Компилятор от Visual studio 2013
0
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
09.08.2014, 14:14  [ТС] #37
Technogen, Насколько мне извесно , твой компилятор всё правильно делает.

float Array[25] = {1.0,,1.0} // Нулевой элемент будет 1.0 и второй элемент будет 1.0, те что не указаны будут нулями, автор или ты ошибся наверное.
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.08.2014, 14:47 #38
Цитата Сообщение от Dmirtiy Vovk Посмотреть сообщение
float Array[25] = {1.0,,1.0}
Такая запись не является допустимой в C++. Нулями инициализируются только последние элементы, пропускать значения нельзя. Это похоже на задание параметров функций по умолчанию. Умолчания могут использовать только для непрерывного набора аргументов с конца списка.
Цитата Сообщение от Technogen Посмотреть сообщение
то все 25 элементов массива инициализируются как 1.0.
Это не правда. Для установки не нулевых значений нужно так или иначе провести явную инициализацию для этих элементов.
0
Technogen
9 / 9 / 0
Регистрация: 14.02.2011
Сообщений: 23
09.08.2014, 18:24 #39
Цитата Сообщение от Dmirtiy Vovk
автор или ты ошибся наверное.
Вот четко цитата из книги:
Цитата Сообщение от С,Дэвис. C++ для чайников 5-е издание (96-я стр.)
Все элементы массива можно инициализировать одним и тем же значением, указав его
только один раз. Например, далее все 25 элементов массива floatArray инициализируются
значением 1.0.
C++
1
float floatArray[25] = {1.0};
Цитата Сообщение от Tulosba
Это не правда
Я чо так подумал, может думаю раньше в языке так было или компилятор раньше так допускал, книга то старая очень.Автор использовал Dev-C++ 4.9.8.0 (2003-03-26)
0
Dmirtiy Vovk
4 / 4 / 0
Регистрация: 07.08.2014
Сообщений: 164
09.08.2014, 19:38  [ТС] #40
Technogen, Выкинь все книжки, бери и пиши, даже если не знаешь, я вот тоже ничего не знаю))
По-моему лучше искать информацию только для текущей задачи, чем переворачивать учебники.
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
09.08.2014, 20:49 #41
Цитата Сообщение от Technogen Посмотреть сообщение
Вот четко цитата из книги:
В книге ошибка. Язык такое не допускал, но в принципе это вполне могло быть расширением компилятора автора книги. Однако описывать поведение языка на основании конкретного компилятора несколько неправильно (или об этом должно быть явно указано). В общем советую противоречивую информацию проверят в нескольких источниках. Так как в книгах (даже авторитетных) могут быть не только ошибки самого автора, но и переводчиков и редакторов.
0
09.08.2014, 20:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 20:49
Привет! Вот еще темы с ответами:

Составить программу для нахождения номера максимального элемента массива - C++
4)Известен массив x1,х2,х3,…,х9. Составить программу для нахождения номера максимального элемента. Исходный массив, найденный номер...

Найти и вывести на экран номера первого и последнего минимального элемента одномерного массива - C++
Дан одномерный массив А. Найти номера первого и последнего минимального элемента из данного массива и вывести их в указанном порядке

Составить программу для нахождения первого элемента массива меньше десяти и его номера - C++
3)Известен целочисленный массив x1,х2,х3,…,х10. Составить программу для нахождения первого элемента меньше десяти и его номера. Если такого...

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


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

Или воспользуйтесь поиском по форуму:
41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.