|
20.10.2010, 23:48
|
#1
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Двумерные массивы, не пойму
#include <stdio.h>
#include <conio.h>
void main()
{ clrscr();
const int size=3;
int Array[size][size]=
{
{1,2,3},
{3,1,2},
{2,3,1}
};
for (int y=0;y<size;y++)
{
for (int x=0;x<size;x++) printf("%d ",*Array[x,y]);
printf("\n");
}
getch();
}
Выводит:
111
333
222
ПОЧЕМУ????
ЗЫЖ за void main не бейте, мне в универе за иную запись ноль ставят
|
(Offline)
|
|
20.10.2010, 23:53
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Двумерные массивы, не пойму
что вот это:
int Array[size][size]=
{
{1,2,3},
{3,1,2},
{2,3,1}
};
|
и вот это:
за синткаксис? Билдер со свителками?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
21.10.2010, 00:17
|
#3
|
Проектировщик
Регистрация: 25.03.2007
Сообщений: 536
Написано 252 полезных сообщений (для 715 пользователей)
|
Ответ: Двумерные массивы, не пойму
Я тож С++ начал изучать.
Гуру, просветите, какой смысл несет запись: что значит запятая?
|
(Offline)
|
|
21.10.2010, 00:35
|
#4
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Двумерные массивы, не пойму
1) Переводись на другой факультет пока есть возможность. На этом ты вылетишь в лучшем случае на 3 курсе.
2) Ты не будешь программистом. Никогда.
3) void main() не соотвествует ISO C
4) При объявлении массива не нужны size, размеры сами подсчитаются.
5) Самое смишное[многомерные][массивы][в][С] индексируются с помощью указания каждой размерности в отдельный паре квадраных скобок. Кроме того, я понятия не имею почему компилятор проглотил запятую (хотя есть мнение что BC хавает запятые как разделитель инстукций, и в качеству индекса брался только y), но то как ты разыменовал указатель на массив чтобы получить int это нечто. Аплодирую стоя за чудесный метод решения ошибок выдаваемых компиляором.
6) clrscr() - это хреновина есть только в борладовских недокомпиляторах. И вообще за необоснованную очистку консоли надо отрубать руки по самые ноги.
Последний раз редактировалось Knightmare, 21.10.2010 в 00:52.
Причина: Вандализм моралофагов
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
|
|
21.10.2010, 13:26
|
#5
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Двумерные массивы, не пойму
Сообщение от Knightmare
4) При объявлении массива не нужны size, размеры сами подсчитаются.
|
Заглянул в онлайн учебник:
Каждая пара фигурных скобок специфицирует значения, относящиеся к одной определённой размерности. Пустые фигурные скобки не допускаются (и это означает, что в C++ реализован жёсткий алгоритм инициализации массивов):
int MyArray[3][3][3] = { {{0,1}}, {{100},{200,210},{300}}, {{1000},{2000,2100},{3000,3100,3200}} };
...
По аналогии с одномерным массивом, при явной инициализации массива входящего в состав многомерного массива его самая левая размерность может не указываться. Она определяется на основе инициализатора.
int MyArray[ ][3][3] = { {{0,1}}, {{100},{200,210},{300}}, {{1000},{2000,2100}} };
|
http://www.cyberguru.ru/programming/...ay-page70.html
|
(Offline)
|
|
21.10.2010, 14:58
|
#6
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Двумерные массивы, не пойму
Может быть. Хотя проверять на нормальном компиляторе лень, а борландовские (на сайте там про Борланд говорится, да) поделки компиляторами считают только в наших замечательных ВУЗах. Хотя в С (не С++) пожалуй вполне возможно, что все размерности надо явно указывать, то язык невероятно суровый. Кстати, там еще косяк есть в коде (применительно к С, т.к. судя по коду задача была именно на нем писать), в С переменные можно объявлять только в начале блока.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.10.2010, 16:47
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Двумерные массивы, не пойму
Сообщение от Knightmare
в С переменные можно объявлять только в начале блока.
|
Прям паскаль какой-то
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.10.2010, 17:19
|
#8
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Двумерные массивы, не пойму
Ну то особенности реализации компилятора. Ну и в паскале как бэ прям все в начале функции объявлялось, а тут в начале блока, т.е. примерно так:
int main() { int i, j, k; if(...) { int m, n; } int a; // а вот так низя, ололо return 0; }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.10.2010, 10:53
|
#9
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Двумерные массивы, не пойму
Не не не, объявлять можно в любом месте.
Сообщение от Knightmare
1) Переводись на другой факультет пока есть возможность. На этом ты вылетишь в лучшем случае на 3 курсе.
Хрена с два! Если историчка не завалит, то не вылечу
2) Ты не будешь программистом. Никогда.
С чего ты так уверен??
3) void main() не соотвествует ISO C
Ты знаешь, когда наша училка на лекции говорила в первый раз про void main, что это типа главная функция и бла-бла-бла, дядь Паша возмутился, сказал что нужно бы int main, по стандарту. В результате она тупо покричала сказала что мы все никто и мозгов у нас нет
4) При объявлении массива не нужны size, размеры сами подсчитаются.
А ты это ей объясни
5) Самое смишное[многомерные][массивы][в][С] индексируются с помощью указания каждой размерности в отдельный паре квадраных скобок. Кроме того, я понятия не имею почему компилятор проглотил запятую (хотя есть мнение что BC хавает запятые как разделитель инстукций, и в качеству индекса брался только y), но то как ты разыменовал указатель на массив чтобы получить int это нечто. Аплодирую стоя за чудесный метод решения ошибок выдаваемых компиляором.
Какое то время я писал на С#, там индексы были через запятую. А в С++ я их не юзал, вот и не знал! а то что там компилятор сказал что - то на английском, так я не понял, ибо не знаю его. Это я смудил, да
6) clrscr() - это хреновина есть только в борладовских недокомпиляторах. И вообще за необоснованную очистку консоли надо отрубать руки по самые ноги.
|
Чтоб училке оформление понравилось, благо там консоли не юзают. Она даж за оформление баллы накидывает
|
(Offline)
|
|
22.10.2010, 11:03
|
#10
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Двумерные массивы, не пойму
ну как всегда - проганью учит кто попало
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
22.10.2010, 11:29
|
#11
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Двумерные массивы, не пойму
Не не не, объявлять можно в любом месте.
|
В С++ да, а вот в С нет.
Хрена с два! Если историчка не завалит, то не вылечу
|
Ололо, год или два назад у нас полностью отчислили группу (ну не полностью, остатки сами быстро перевелись) с такими же скилами как у тебя. Основы матана, работа с командной строкой и массивы в С не самые страшные вещи.
С того.
Ты знаешь, когда наша училка на лекции говорила в первый раз про void main, что это типа главная функция и бла-бла-бла, дядь Паша возмутился, сказал что нужно бы int main, по стандарту. В результате она тупо покричала сказала что мы все никто и мозгов у нас нет
|
Типа "Я неудачник и слился при первой сложности". Запоминай сюда, в стандарте ISO 9899:1999 (C99) в пункте 5.1.2.2.1 именуемом не иначе как "Program startup" сказано, что точка входа программы имеет 2 варианта:
1) int main(void)
2) int main(int argc, char *argv[])
Все. Никаких void, ибо ОС ожидает от программы числового кода завершения (0 - удачно, другое значение - фейл).
Щас все брошу поеду хрен знает куда выполнять роль кэпа и объяснять преподу что она тупая дура. Мне своих хватает, которым приходится объяснять что рандомный массив не может быть ни возрастающей, ни убывающей последовательностью.
а то что там компилятор сказал что - то на английском, так я не понял, ибо не знаю его.
|
Чтоб училке оформление понравилось, благо там консоли не юзают. Она даж за оформление баллы накидывает
|
Данное, кхм... "оформление кода" не соответствует общепринятым нормам (хотя я и встречал не раз данный жуткий стиль, человека так пишущего код не возьмут на работу ни в одну нормальную контору). И я не поэл, что значит "благо консоли там не юзают"?
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
|
|
22.10.2010, 11:31
|
#12
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Двумерные массивы, не пойму
Я вот когда студентов паскалю учил - я их в первую очередь код форматировать учил и правильно отступы ставить слева, чтобы программы читабельны были. Чтобы понимали хотя бы что сами напишут ))
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
22.10.2010, 12:08
|
#13
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Двумерные массивы, не пойму
Я кстати часто раньше писал (а теперь иногда проскакивает) void main, данный оборот почерпнут был в период самообразования в школе из некоего пособия для младшекуров по С++.
Интересно - откуда ноги растут у этого явления. Или же эта часть (тип возвращаемого значения) неактуальна для С++ ?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
22.10.2010, 12:13
|
#14
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Двумерные массивы, не пойму
Сообщение от impersonalis
Я кстати часто раньше писал (а теперь иногда проскакивает) void main, данный оборот почерпнут был в период самообразования в школе из некоего пособия для младшекуров по С++.
Интересно - откуда ноги растут у этого явления. Или же эта часть (тип возвращаемого значения) неактуальна для С++ ?
|
а зачем делать его void?
В синтетических примерах, чтобы вообще не задумываться о возвращаемом значении и сосредоточиться на том аспекте для которого этот пример пишется.
|
Может ли main возвращать void
|
(Offline)
|
|
22.10.2010, 12:36
|
#15
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Двумерные массивы, не пойму
Сообщение от pax
Я вот когда студентов паскалю учил - я их в первую очередь код форматировать учил и правильно отступы ставить слева, чтобы программы читабельны были. Чтобы понимали хотя бы что сами напишут ))
|
А я бы еще учил командному проганью. Разбивать группу на команды по три человека и давать модульное задание, чтобы каждый член команды свою часть выполнял.
Те, кто шарит, частично вставят ума тем, кто не особо разбирается. А слабые откроют глаза сильным, чтобы те были готовы к тому, что в реальной жизни они тоже не всегда будут окружены себе подобными.
Правда есть один серьезный затык. Есть большая вероятность, что те, кто шарит, сами все сделают
__________________
|
(Offline)
|
|
Эти 11 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
Arles (27.10.2010), Dream (22.10.2010), Harter (02.11.2010), HolyDel (05.11.2010), Hurrit (30.10.2010), impersonalis (22.10.2010), maxturbo (11.11.2010), pax (22.10.2010), Randomize (22.10.2010), Reizel (24.10.2010), SBJoker (22.10.2010)
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:19.
|