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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Timurcpp
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 36
#1

Нужен пример с массивами - C++

14.03.2014, 21:30. Просмотров 1965. Ответов 28
Метки нет (Все метки)

Не могу догнать, зачем нужен массив конкретно.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fene4ka_
87 / 87 / 16
Регистрация: 24.01.2014
Сообщений: 1,196
14.03.2014, 21:47     Нужен пример с массивами #2
Timurcpp, допустим, вам нужно хранить где-то в программе 100 имен, как вы будете это делать без массива ?
или допустим вам нада реализовать алгоритм флойда, как вы это сделайте без массива ?
Timurcpp
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 36
14.03.2014, 22:25  [ТС]     Нужен пример с массивами #3
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
Timurcpp, допустим, вам нужно хранить где-то в программе 100 имен, как вы будете это делать без массива ?
или допустим вам нада реализовать алгоритм флойда, как вы это сделайте без массива ?
Это я понимаю, а что еще кроме этого он выполняет?
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
14.03.2014, 22:28     Нужен пример с массивами #4
Цитата Сообщение от Timurcpp Посмотреть сообщение
Это я понимаю, а что еще кроме этого он выполняет?
Массив ничего не выполняет. Он позволяет хранить несколько однотипных данных под одним именем и получать доступ к ним через "разыменование": массив[N]
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
14.03.2014, 22:32     Нужен пример с массивами #5
C++
1
2
3
4
5
6
7
8
9
10
11
// Переменные
int i = 1;
int i1 = 2;
int i2 = 3;
int i3 = 4;
 
 
// Массив
int mas[4];
for (int i = 0; i < 4; i++)
   mas[i] = i;
Вроде, ясно же всё
KOPOJI
Модератор
Эксперт PHP
16653 / 6594 / 422
Регистрация: 12.06.2012
Сообщений: 19,811
Завершенные тесты: 1
14.03.2014, 22:35     Нужен пример с массивами #6
Если простым языком, то можно как-то так:
Обычное яблоко - это обычный элемент.
Корзина с яблоками - это массив
Timurcpp
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 36
14.03.2014, 22:40  [ТС]     Нужен пример с массивами #7
Цитата Сообщение от saden Посмотреть сообщение
Массив ничего не выполняет. Он позволяет хранить несколько однотипных данных под одним именем и получать доступ к ним через "разыменование": массив[N]
Можете пример написать массива с циклом

Добавлено через 1 минуту
Цитата Сообщение от KOPOJI Посмотреть сообщение
Если простым языком, то можно как-то так:
Обычное яблоко - это обычный элемент.
Корзина с яблоками - это массив
Интересное мышление у вас, хороший подход к вопросу
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
14.03.2014, 22:44     Нужен пример с массивами #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main() {
    int mas[10];
 
    for (int i = 0; i < 10; i++){
        std::cout << "mas[" << i+1 << "]: ";
        std::cin >> mas[i];
    }
 
    for (int i = 0; i < 10; i++){
        std::cout << "mas[" << i+1 << "]: ";
        std::cout << mas[i] << std::endl;
    }
 
        std::cin.get();
    std::cin.get();
    return 0;
}
И не нужно 10 переменных
Timurcpp
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 36
14.03.2014, 22:47  [ТС]     Нужен пример с массивами #9
Цитата Сообщение от recoder Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
// Переменные
int i = 1;
int i1 = 2;
int i2 = 3;
int i3 = 4;
 
 
// Массив
int mas[4];
for (int i = 0; i < 4; i++)
   mas[i] = i;
Вроде, ясно же всё
Да нет, все вроде бы понятно, но и не понятно тоже. Я только вторую неделю учу С++, темный лес, честное слово.
KOPOJI
Модератор
Эксперт PHP
16653 / 6594 / 422
Регистрация: 12.06.2012
Сообщений: 19,811
Завершенные тесты: 1
14.03.2014, 22:49     Нужен пример с массивами #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Timurcpp Посмотреть сообщение
подход к вопросу
Его можно развить и еще дальше.
Например, то, как зачастую объявляют кучу переменных - и аналогичный вариант с массивом.
Возьмем тот же пример с яблоками.
Например, у нас есть две программы, которые просто выводят артикулы яблок (для простоты)
Вариант без массива будет выглядеть как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main(int argc, char *argv[])
{
    int apple1, apple2, apple3, apple4, apple5;
    apple1 = 124;
    apple2 = 134;
    apple3 = 143;
    apple4 = 543;
    apple5 = 123;
 
    std::cout << "Apple 1: " << apple1 << std::endl;
    std::cout << "Apple 2: " << apple2 << std::endl;
    std::cout << "Apple 3: " << apple3 << std::endl;
    std::cout << "Apple 4: " << apple4 << std::endl;
    std::cout << "Apple 5: " << apple5 << std::endl;
 
    return 0;
}
Вариант с массивом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
const int N = 5;
 
int main(int argc, char *argv[])
{
    int apples[N];
    apples[0] = 124;
    apples[1] = 134;
    apples[2] = 143;
    apples[3] = 543;
    apples[4] = 123;
 
    std::cout << "Apple 1: " << apple[0] << std::endl;
    std::cout << "Apple 2: " << apple[1] << std::endl;
    std::cout << "Apple 3: " << apple[2] << std::endl;
    std::cout << "Apple 4: " << apple[3] << std::endl;
    std::cout << "Apple 5: " << apple[4] << std::endl;
 
    return 0;
}
Вроде бы "тоже самое". Однако, объединение в массив позволяет нам выполнять дополнительные операции более просто. Например, предыдущий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
const int N = 5;
 
int main(int argc, char *argv[])
{
    int apples[N];
 
    apples[0] = 124;
    apples[1] = 134;
    apples[2] = 143;
    apples[3] = 543;
    apples[4] = 123;
 
    for(size_t i = 0; i < N; ++i)
        std::cout << "Apple " << i + 1 << ": " << apple[i] << std::endl;
 
    return 0;
}
Уже намного короче, и более "динамически".. Если переводить на тот пример с яблоками и корзинами - то в случае не использования массивов вы определяете уникальные имена для яблок (красное_яблоко_1, зеленое_яблоко_2, ....), в случае использования массивов - все проще, в какой-то степени (первое яблоко, которое достали; второе яблоко, которое достали; третье яблоко, ....). В общем, массивы удобны тогда, когда у вас много однотипных элементов, которые вы храните. Особенно удобно, если у вас в планах какая-то общая задача для выполнения над ними. Не отходя далеко от примера с яблоками: вы хотите съесть все яблоки. Все просто
C++
1
2
3
....
while(i != 0) //пока еще есть яблоки в корзине
    eat_apple(apple[i--]); //обжираемся и соответственно уменьшаем счетчик яблок в корзине)
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 09:25     Нужен пример с массивами #11
можно представить массив, как фотопленку. Ячейка массива - это кадр. Номер кадра - номер ячейки. Картинка в кадре № х - это содержимое ячейки массива. Переход к ячейке х+1 - переход к следующему кадру. Первый и последний кадры - границы массива.
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
17.03.2014, 19:22     Нужен пример с массивами #12
Можете подсказать, а как инициализировать элементы массива значениями переменных, которые считываются из файла?
Допустим, в примере KOPOJI:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
const int N = 5;
 
int main(int argc, char *argv[])
{
    int apples[N];
 
    apples[0] = 124;
    apples[1] = 134;
    apples[2] = 143;
    apples[3] = 543;
    apples[4] = 123;
 
    for(size_t i = 0; i < N; ++i)
        std::cout << "Apple " << i + 1 << ": " << apple[i] << std::endl;
 
    return 0;
}
значения
C++
1
2
3
4
5
apples[0] = 124;
    apples[1] = 134;
    apples[2] = 143;
    apples[3] = 543;
    apples[4] = 123;
находятся в стороннем текстовом файле, который я построчно читаю.
Тогда надо в массиве использовать только идентификаторы? Примерно так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
const int N = 5;
 
int main(int argc, char *argv[])
{
    int apples[N];
 
    apples[0] = a0;
    apples[1] = a1;
    apples[2] = a2;
    apples[3] = a3;
    apples[4] = a4;
 
    for(size_t i = 0; i < N; ++i)
        std::cout << "Apple " << i + 1 << ": " << apple[i] << std::endl;
 
    return 0;
}
А значения a0-a4 последовательно присваивать элементам массива при чтении файла?
Можно ли так делать?
ValeryS
Модератор
6485 / 4951 / 455
Регистрация: 14.02.2011
Сообщений: 16,400
17.03.2014, 19:31     Нужен пример с массивами #13
Цитата Сообщение от KOPOJI Посмотреть сообщение
C++
1
2
3
4
5
6
 int apple1, apple2, apple3, apple4, apple5;
    apple1 = 124;
    apple1 = 134;
    apple1 = 143;
    apple1 = 543;
    apple1 = 123;
Эт ты здорово объяснил
тоже болезнь "копи-пасте"

Добавлено через 2 минуты
kotgav,
как считать значения из файла знаешь?
KOPOJI
17.03.2014, 19:34
  #14

Не по теме:

ValeryS, спасибо, исправил. Думаю, это даже в плюс, что я ошибся - более наглядна возможность ошибиться и запутаться в названиях переменных любому человеку А объяснил как сумел Можете объяснить лучше и понятнее - я буду только за

saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
17.03.2014, 19:42     Нужен пример с массивами #15
Цитата Сообщение от kotgav Посмотреть сообщение
Можете подсказать, а как инициализировать элементы массива значениями переменных, которые считываются из файла?
Смотря как читается файл. Основная идея:
цикл до конца файла
{
чтение из файла -> в переменную х
присваивание х очередному элементу массива
}
MarVaL
С++ Beginner
116 / 116 / 16
Регистрация: 28.02.2013
Сообщений: 246
17.03.2014, 20:03     Нужен пример с массивами #16
Цитата Сообщение от KOPOJI Посмотреть сообщение
....
while(i != 0) //пока еще есть яблоки в корзине
* * eat_apple(apple[i--]); //обжираемся и соответственно уменьшаем счетчик яблок в корзине)
Первый(0-ой) элемент не будет съеден
ValeryS
Модератор
6485 / 4951 / 455
Регистрация: 14.02.2011
Сообщений: 16,400
17.03.2014, 20:08     Нужен пример с массивами #17
Цитата Сообщение от MarVaL Посмотреть сообщение
Первый(0-ой) элемент не будет съеден
можно поправить условие
C++
1
2
while(i >= 0) //пока еще есть яблоки в корзине
    eat_apple(apple[i--]); //обжираемся и соответственно уменьшаем счетчик яблок в корзине)
KOPOJI
17.03.2014, 20:14
  #18

Не по теме:

MarVaL, это был образный пример, понятный для человека, а не рассчитанный на нумерацию массивов в данном ЯП.

MarVaL
С++ Beginner
116 / 116 / 16
Регистрация: 28.02.2013
Сообщений: 246
17.03.2014, 20:15     Нужен пример с массивами #19
Цитата Сообщение от KOPOJI Посмотреть сообщение
MarVaL, это был образный пример, понятный для человека, а не рассчитанный на нумерацию массивов в данном ЯП.
Это раздел С++. Смотрите внимательнее пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2014, 20:21     Нужен пример с массивами
Еще ссылки по теме:

C++ Нужен пример класса
Нужен пример классов C++
Очень нужен пример программы в Си++ C++
Нужен пример работы со структурами C++
C++ Программа с Массивами, нужен код

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6485 / 4951 / 455
Регистрация: 14.02.2011
Сообщений: 16,400
17.03.2014, 20:21     Нужен пример с массивами #20
Timurcpp,
попытаюсь еще интересней объяснить, тем более впереди у тебя двумерные, трехмерные массивы
представь себе улицу, на улице дома, в домах квартиры
так вот улица это массив домов, линейный это значит друг за другом дома идут
дома массив квартир
и ты пишешь адрес ул Массив дом 2 кв 3
в программировании это будет так arr[2][3];
если нужен дом то просто arr[2]

но дом представить массивом подъездов а подъезд массивом квартир и мы получаем 3х мерный массив
адрес уже надо писать так ул Массив дом 2 подъезд 1 квартира в подъезде 3
тогда arr[2][1][3];
а если подъезд это массив этажей а этажи массив квартир то получим 4х мерный массив
адрес уже надо писать так ул Массив дом 2 подъезд 1 этаж 3 квартира на этаже 3
arr[2][1][3][3];

есть еще одна тонкость человек считает от 1 а машина от 0
тогда ул Массив дом 1
на машинный язык переведется как arr[0]
Yandex
Объявления
17.03.2014, 20:21     Нужен пример с массивами
Ответ Создать тему
Опции темы

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