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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.95
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
#1

Почему индекс массива начинается с нуля ? - C++

03.07.2013, 10:40. Просмотров 6724. Ответов 46
Метки нет (Все метки)

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

Почему счетчик в цикле for начинается с нуля, а не с единицы? - C++
привет. почему когда надо сделать какое-то действие, например 4 раза, то пишут: for (int i=0, i<4, i++) { //... } а не так: ...

Не могу понять, почему ввод строк начинается со 2-ой строки - C++
не могу понять, почему ввод строк начинается со 2-ой строки #include <iostream> #include<stdio.h> #include<stdlib.h> ...

Почему после считывания матрицы из файла начинается повторное считывание? - C++
Здравствуйте. ПРоблема такова, считывает размер матрицы и саму матрицу, после успешного считвания начинает по новой её считывать, хотя...

Почему если массив начинается с положительного числа, то он не суммируется в общую сумму? - C++
#include <iostream> using namespace std; int main() { setlocale( LC_ALL,"Russian" ); cout<<"Введите размер...

указать индекс второго массива, при котором оба массива перестают совпадать - C++
Даны два массива, они упорядочены и надо указать индекс второго массива при котором оба массива перестают совпадать. Например: ...

Удалить из массива тех абонентов, телефон которых начинается с цифры 3 - C++
Сформировать массив записей, описывающих следующую таблицу: --------------------------------------------------------------- Фамилия ...

46
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.07.2013, 12:01 #31
sergey.shuvalov, а может просто взять и почитать о том, что такое массивы, указатели, адресная арифметика и тому подобное? Нарисовать дома во всю стену массив, указатели, как что меняется и т.д. И вот же картина проясняется
0
Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300
03.07.2013, 12:02 #32
Цитата Сообщение от Croessmah Посмотреть сообщение
sergey.shuvalov, а может просто взять и почитать о том, что такое массивы, указатели, адресная арифметика и тому подобное? Нарисовать дома во всю стену массив, указатели, как что меняется и т.д. И вот же картина проясняется
И скинуть нам фото элемента [0.84] :-D

Добавлено через 31 секунду
А то не поверю низачто, пока не увижу
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 12:10 #33
Цитата Сообщение от SatanaXIII Посмотреть сообщение

Thinker, хватит отсылок к книжкам. Приведите развернутый пример, в картинках
а зачем? проблема нынешних школьников в том, что абстрагироваться они не могут. В природе даже натуральных чисел нет, все это абстракция. затем придумали понятие счетного множества, биективного множеству натуральных чисел, это означает, что нумеровать объекты можно любым счетным множеством. потом это обобщили для произвольного множества, введя понятие аксиомы выбора и доказав теорему Цермело. теперь можно линейно упорядочить произвольное множество, а следовательно, и пронумеровать.

Добавлено через 4 минуты
Цитата Сообщение от Praktolock Посмотреть сообщение
И скинуть нам фото элемента [0.84]
а что вас это смущает. здесь нет таких элементов, но, в силу линейной упорядоченности поля действительных чисел, можно было бы и такое придумать, ничего страшного. проблемой только скорость такого компилятора будет, логика же не нарушится вовсе.
1
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
03.07.2013, 12:16  [ТС] #34
В институте на курсе лекций по программированию лекторша записывала на доске 0, как 0 с перечёркиванием.
На что я её спросил: "Тётя, зачем вы это делаете?".
А она в ответ: " Ну понимаете, машина не может отличить 0 от о, поэтому и нужно перечёркивание.
А я ей и говорю:" А люди-то могут отличить.".
Она - я так уже привыкла.
Я - отвыкай.
0
Croessmah
03.07.2013, 12:17
  #35

Не по теме:

sergey.shuvalov, и правильно делала, что перечеркивала

0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 12:21 #36
sergey.shuvalov, а что здесь смешного?! если преподаватель профессионал, то обозначения это дело вкуса. по поводу обозначений, то в России имеются математические школы Мальцева и Куроша, которые (так повелось от самих Мальцева и Куроша) одни и те же некоторые алгебраические объекты определяют по-разному (противоположно). И в то же время, Мальцев и Курош это ВЕЛИКИЕ АЛГЕБРАИСТЫ, которые делали это, недолюбливая, но уважая друг друга.
0
Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300
03.07.2013, 12:31 #37
Мнение авторитета:
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Я - отвыкай.
Цитата Сообщение от Thinker Посмотреть сообщение
а что вас это смущает. здесь нет таких элементов, но, в силу линейной упорядоченности поля действительных чисел, можно было бы и такое придумать, ничего страшного. проблемой только скорость такого компилятора будет, логика же не нарушится вовсе.
А как насчёт ирационального числа в качестве индекса? Всё равно определённые ограничения будут, т.к. минимальное смещение будет зависеть от битности процессора и размера элемента массива, но оно будет.
А вообще по теме: если ТС'у нужен такой компилятор - пусть пишет, я не против
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 12:35 #38
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Я - отвыкай.

Не по теме:

это, вообще, свинством называется. представлю, придешь ты к маститому профессору и скажешь, что его обозначения тебя не устраивают, пошлет он тебя куда подальше... у нас на младших курсах некоторые профессора из МГУ (приезжие) одно и тоже обозначали по-разному и даже мысли не было что трудно и так, и так понимать



Добавлено через 3 минуты
Цитата Сообщение от Praktolock Посмотреть сообщение
А как насчёт ирационального числа в качестве индекса? Всё равно определённые ограничения будут, т.к. минимальное смещение будет зависеть от битности процессора и размера элемента массива, но оно будет.
А вообще по теме: если ТС'у нужен такой компилятор - пусть пишет, я не против
с иррациональными числами дело сложнее, пока таких нет компьютеров, но с рациональными и ограниченной дробной частью почему бы и нет. непонятно, почему нумерация с 0 некоторым тяжело дается
0
Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300
03.07.2013, 12:37 #39
Просто парень гуру бэйсика
0
ValeryS
Модератор
6706 / 5115 / 482
Регистрация: 14.02.2011
Сообщений: 17,184
03.07.2013, 12:37 #40
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
А она в ответ: " Ну понимаете, машина не может отличить 0 от о, поэтому и нужно перечёркивание.
Машина то как раз может
ASCII код "0"=0x30 а "O"=0x4F
а вот человек не всегда сможет
кстати на старых терминалах ноль выводился с чертой по середине иногда с косой чертой
по этой же причине не принято использовать имя переменной " l "(строчная L) легко спутать с 1
0
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
03.07.2013, 12:38 #41
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Я - отвыкай
те
Кликните здесь для просмотра всего текста
Цитата Сообщение от Thinker Посмотреть сообщение
и Куроша
Вот вы свой пед и пм с головой выдали.

И вообще, логика sergey.shuvalov ясна - при подсчете объектов реальной жизни мы всегда начинаем с единицы. Отметить по линеечке один сантиметр, два сантиметра... При устном пересчете объектов: есть объект - загибаем один пальчик, есть второй - загибаем второй. Не ноль пальцев мы загибаем, когда начинаем считать.
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 12:41 #42
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Вот вы свой пед и пм с головой выдали

Не по теме:

пед? даже в мысли не было в пед поступать. вообще то учебники Куроша по линейной и общей алгебре во всех библиотеках крупных университетов есть.

0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,672
Записей в блоге: 5
03.07.2013, 13:16 #43
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Почему первый элемент массива обозначается 0 , а не 1.
Операции сравнения целых чисел обычно реализуются с помощью вычитания. Так, сравнение на равенство или неравенство двух чисел может быть сведено к сравнению их разности с машинным нулем (числом, все разряды которого нулевые). Сравнения на неравенство (<, >, <, >) таким же образом могут быть сведены к проверке знака у разности этих чисел (т.е. к анализу значения самого левого бита разности).
Вспомните, условия невыхода за границы как в прямом, иак и в обратном направлении, - сравнение с 0.
Ну а вопрос: зачем это в языке высокого уровня имеет два ответа. Во-первых для совместимости с Си. Во-вторых сам автор (небезосновательно) считает С++ языком "среднего" уровня, утверждая, что его "высокоуровневость" не мешает ему успешно конкурировать с Си в скорости и гибкости. То есть проигрыш не велик при условии приличной реализации.
0
ValeryS
Модератор
6706 / 5115 / 482
Регистрация: 14.02.2011
Сообщений: 17,184
03.07.2013, 13:25 #44
Цитата Сообщение от SatanaXIII Посмотреть сообщение
при подсчете объектов реальной жизни мы всегда начинаем с единицы.
пожалуйста жизненный пример
нужно поставить забор длинной 10м через каждый метр нужен столб
вопрос сколько нужно столбов?
ответ 11
откуда лишний столб взялся?
а это и есть нулевой столб, начальный
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,672
Записей в блоге: 5
03.07.2013, 13:39 #45
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Сообщение от SatanaXIII Посмотреть сообщение
при подсчете объектов реальной жизни мы всегда начинаем с единицы.
Подсчёт порядкового номера, - да, а подсчёт количества, - нет. Иначе на вопрос сколько у тебя миллионов (денег) каждый бы сразу загибал один палец. И это вряд ли привело бы мир ко всеобщему обогащению. Хотя первое время было бы веселее.
0
03.07.2013, 13:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 13:39
Привет! Вот еще темы с ответами:

Переставить соседние элементы массива: 1-й со 2-м, 3-й с 4-м и т.д. Нумерация элементов начинается с единицы - C++
Входные данные Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива....

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

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

Вычислить среднее арифметическое элементов, расположенных до первого нуля и после последнего нуля - C++
В одномерном массиве, состоящем из п элементов, вычислить: среднее значение элементов, расположенных в массиве между первым последним...


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

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

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