Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 11.11.2015
Сообщений: 5

Г.Шилдт C# 4.0. Полное руководство. Разбор примера работы с массивом

28.11.2017, 19:26. Показов 3095. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени суток форумчане! Не давно начал изучать творения данного автора. Столкнулся с непониманием его программы по двумерным массивам. На стр. 182-183 он приводит пример программы где с начало массив заполняется числами от 1 до 12, а затем выводится его содержимое.

Код
// Продемонстрировать двумерный массив.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
class TwoD {
  static void Main() {
    int t, i; 
    int[,] table = new int[3, 4];
    for(t=0; t < 3; ++t) {
      for(i=0; i < 4; ++i) {
        table[t,i] = (t*4)+i+1;
        Console.Write(table[t,i] + " ");
      }
      Console.WriteLine();
    }
  }
}
.


Помогите разжевать)
Если я правильно понимаю, то, при в ходе в первый цикл переменная t инкрементируется в префиксной форме, а соответственно становиться равно 1. То же самое происходит и со вложенным циклом переменной i.
В этом участке table[t,i] значения переменных передается правому и левому индексам массива соответственно(указываем к какому элементу массива делаем обращение), а здесь = (t*4)+i+1 присваиваем значение выражение к указанному элементу массива.
Тут у меня возник вопрос! Если при первом прогоне циклов переменные t и i становятся равным 1 то, исходя из формулы (t*4)+i+1 получается (1*4)+1+1=6. От куда берутся числа от 1 до 5? Так же я понимаю что вложенный цикл for выполнится 4 раза затем, программа вернется к первому циклу for и так 3 раза. Я не могу понять как вычисляются в этом алгоритме правильные индексы массива и в дальнейшем заполняются от 1 до 12? Так же интересно, если поменять форму инкрементов на постфиксную, программа отработает и все ячейки будут заполнены правильно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2017, 19:26
Ответы с готовыми решениями:

Отличия между книгами Г.Шилдт - C# 3.0 Полное руководство и C# 4.0
Доброго времени суток! Какие отличия между книгами Г.Шилдт - C# 3.0 Полное руководство и C# 4.0 ? Что нового в 4.0?

Строковые литералы, Шилдт Г. - Java 8. Полное руководство - 2015
Шилдт Г. - Java 8. Полное руководство 2015г. страница 86 : &quot;Управляющие символы и восьмеричная или шестнадцатеричная форма записи,...

Исходники программ с книги Герберт Шилдт - C# 4.0. Полное руководство
Где скачать исходники программ с книги Герберт Шилдт - C# 4.0. Полное руководство ? Самое интересное что книга в бумажном в виде иметься....

3
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
28.11.2017, 19:48
Цитата Сообщение от bla2202 Посмотреть сообщение
Помогите разжевать)
bla2202, посмотрите простой пример ниже.
Если коротко, то разница в пре/постфиксном операторе проявляется, когда переменная используется в выражении. При префиксе переменная сначала изменяется, а потом используется, а при постфиксе переменная сначала используется, а потом изменяется. Если же она просто используется как счетчик цикла, никакой разницы нет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication7 {
    class Program {
        static void Main(string[] args) {
            for (int i = 0; i < 5; i++) {
                Console.WriteLine("i={0}", i);
            }
            Console.WriteLine();
            for (int j = 0; j < 5; ++j) {
                Console.WriteLine("j={0}", j);
            }
            int n = 9;
            int r1 = 5 + ++n;
            int m = 9;
            int r2 = 5 + m++;
            Console.WriteLine("r1={0}", r1);
            Console.WriteLine("r2={0}", r2);
            Console.ReadLine();
        }
    }
}
2
0 / 0 / 0
Регистрация: 11.11.2015
Сообщений: 5
28.11.2017, 23:35  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Если же она просто используется как счетчик цикла, никакой разницы нет
Спасибо, вот это я видимо в книги упустил. Я еще читал что при * на ноль, программа будет выдавать ошибку, и это так же стало проблемой для меня. Я думал что если переменная t=0 а затем эта переменная (0*4), будет выдавать ошибку, и дальше выражение выполняться не будет, а оказалось что это не так)))
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
29.11.2017, 00:35
откуда такие умозаключения про умножение на ноль? тут все как в обычной "школьной ариХметике" на ноль !!!делить!!! нельзя, остальное с нулем делать можно
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2017, 00:35
Помогаю со студенческими работами здесь

Разбор примера работы побитового И
Здравствуйте, в процессе моего изучения побитовых операций возникли некоторый вопросы, на которые учебник ответить не смог, надеюсь на вашу...

C# 7.0. Справочник. Полное описание языка Герберт Шилдт
Увидел книгу C# 7.0. Справочник. Полное описание языка и хотел услышать мнения от тех кто её прочел. Меня интересует несколько вопросов:...

Актуальность C# 4.0. Полное руководство
Всем привет, помогитепожайлуста маслёнку. Начал недавно изучать С# и решил начать с книги. После прочтения темы: &quot;Литература по C# для...

Исходники кода для книги Java 8 (2015) Шилдт - руководство для начинающих
Там код иногда странные ошибки возникают особенно UNicode сбивается , не могу нормально точь в точь переписать, а исходинки чет именно на...

Стеганография в BMP. Полное руководство
СТЕГАНОГРАФИЯ в BMP ИЗОБРАЖЕНИЯХ Данная статья содержит готовый проект с подробным описанием алгоритма реализации шифрования...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru