русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Массивы


Дата добавления: 2015-01-16; просмотров: 486; Нарушение авторских прав


Давайте напишем программу подсчета числа появлений каж-дой цифры, символов пустых промежутков/пробел, табуляции,новая строка/ и всех остальных символов. Конечно, такая за-дача несколько искусственна, но она позволит нам проиллюст-рировать в одной программе сразу несколько аспектов языка"C". Мы разбили вводимые символы на двенадцать категорий, инам удобнее использовать массив для хранения числа появленийкаждой цифры, а не десять отдельных переменных. Вот один извариантов программы:MAIN() /* COUNT DIGITS, WHITE SPACE, OTHERS */{ INT C, I, NWHITE, NOTHER; INT NDIGIT[10]; NWHITE = NOTHER = 0; FOR (I = 0; I < 10; ++I) NDIGIT[I] = 0; WHILE ((C = GETCHAR()) != EOF) IF (C >= '0' && C <= '9') ++NDIGIT[C-'0']; ELSE IF(C== ' ' \!\! C== '\N' \!\! C== '\T') ++NWHITE; ELSE ++NOTHER; PRINTF("DIGITS ="); FOR (I = 0; I < 10; ++I) PRINTF(" %D", NDIGIT[I]); PRINTF("\NWHITE SPACE = %D, OTHER = %D\N", NWHITE, NOTHER);} Описание INT NDIGIT[10]; объявляет, что NDIGIT является массивом из десяти целых. вязыке "C" индексы массива всегда начинаются с нуля /а не с1, как в фортране или PL/1/, так что элементами массива яв-ляются NDIGIT[0], NDIGIT[1],..., NDIGIT[9]. эта особенностьотражена в циклах FOR , которые инициализируют и печатаютмассив. Индекс может быть любым целым выражением, которое, ко-нечно, может включать целые переменные, такие как I , и це-лые константы. Эта конкретная программа сильно опирается на свойствасимвольного представления цифр. Так, например, в программепроверка IF( C >= '0' && C <= '9')... определяет, является ли символ в 'C' цифрой, и если это так,то численное значение этой цифры определяется по формуле / C- '0'/. Такой способ работает только в том случае, если зна-чения символьных констант '0', '1' и т.д. Положительны, рас-положены в порядке возрастания и нет ничего, кроме цифр,между константами '0' и '9'. К счастью, это верно для всехобщепринятых наборов символов. По определению перед проведением арифметических опера-ций, вовлекающих переменные типа CHAR и INT, все они преоб-разуются к типу INT, TAK что в арифметических выражениях пе-ременные типа CHAR по существу идентичны переменным типаINT. Это вполне естественно и удобно; например, C -'0'- этоцелое выражение со значением между 0 и 9 в соответствии стем, какой символ от '0' до '9' хранится в 'C', и, следова-тельно, оно является подходящим индексом для массива NDIGIT. Выяснение вопроса, является ли данный символ цифрой,символом пустого промежутка или чем-либо еще, осуществляетсяпоследовательностью операторов IF (C >= '0' && C <= '9') ++NDIGIT[C-'0']; ELSE IF(C == ' ' \!\! C == '\N' \!\! C == '\T') ++NWHITE; ELSE ++NOTHER; Конструкция IF (условие) оператор ELSE IF (условие) оператор ELSE оператор часто встречаются в программах как средство выражения ситуа-ций, в которых осуществляется выбор одного из несколькихвозможных решений. Программа просто движется сверху вниз до тех пор, покане удовлетворится какое-нибудь условие; тогда выполняетсясоответствующий 'оператор', и вся конструкция завершается./Конечно, 'оператор' может состоять из нескольких операто-ров, заключенных в фигурные скобки/. Если ни одно из условийне удовлетворяется, то выполняется 'оператор', стоящий послезаключительного ELSE, если оно присутствует. Если последнеEELSE и соответствующий 'оператор' опущены (как в программеподсчета слов), то никаких действий не производится. Междуначальным IF и конечным ELSE может помещаться произвольноеколичество групп ELSE IF (условие) оператор С точки зрения стиля целесообразно записывать эту конст-рукцию так, как мы показали, с тем чтобы длинные выраженияне залезали за правый край страницы. Оператор SWITCH (переключатель), который рассматриваетсяв главе 3, представляет другую возможность для записи раз-ветвления на несколько вариантов. этот оператор особенноудобен, когда проверяемое выражение является либо просто не-которым целым, либо символьным выражением, совпадающим с од-ной из некоторого набора констант. Версия этой программы,использующая оператор SWITCH, будет для сравнения приведенав главе 3. Упражнение 1-12 ---------------- Напишите программу, печатающую гистограмму длин слов изфайла ввода. Самое легкое - начертить гистограмму горизон-тально; вертикальная ориентация требует больших усилий.


<== предыдущая лекция | следующая лекция ==>
Подсчет слов | Функции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.019 сек.