русс | укр

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

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

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

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


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

Счетчики


Дата добавления: 2014-11-27; просмотров: 819; Нарушение авторских прав


Задача 1: В компьютер с клавиатуры вводятся числа. Компьютер после ввода каждого числа должен печатать, сколько среди них уже введено положительных.

Фрагмент, решающий задачу:

c:=0; {Обнуляем счетчик}

m: ReadLn(a); {Вводим очередное число}

if a>0 then c:=c+1;

WriteLn('Из них положительных - ' ,c);

goto m

Пояснения: В 6.6 мы придумали переменную i, которую назвали счетчиком циклов. Здесь мы тоже придумали переменную c. Она у нас выполняет роль счетчика положительных чисел. Сердце счетчика - оператор c:=c+1. Именно он в нужный момент увеличивает счетчик на 1. Но и без if a>0 then тоже никак нельзя. Если бы его не было, то c подсчитывал бы все числа без разбору, то есть был бы обыкновенным счетчиком циклов. В нашем же фрагменте увеличение с на 1 выполняется не всегда, а лишь при положительном а.

Пусть мы вводим числа 8, -2, 10 . . . В этом случае порядок выполнения операторов будет такой:

 

Оператор а с Печать
c:=0 ?  
ReadLn(a)  
if a>0 then c:=c+1  
WriteLn('Из них положительных - ' ,c) Из них положительных 1
goto m  
ReadLn(a) -2  
if a>0 then c:=c+1 -2  
WriteLn('Из них положительных - ' ,c) -2 Из них положительных 1
goto m -2  
ReadLn(a)  
if a>0 then c:=c+1  
WriteLn('Из них положительных - ' ,c) Из них положительных 2
goto m  

 

Не забывайте обнулять счетчик перед входом в цикл, а не то он начнет считать вам не с нуля, а бог знает с чего. Как бы вам понравилось, если бы таксист в начале поездки не обнулил счетчик?



В нашем фрагменте значения счетчика печатаются при каждом выполнении цикла. Изменим задачу.

Задача 2: В компьютер вводится ровно 200 чисел. Компьютер должен подсчитать и один раз напечатать, сколько среди них положительных.

Программа:

VAR c,i :Integer;

a :Real;

BEGIN

c:=0; {Обнуляем счетчик}

for i:=1 to 200 do begin

ReadLn(a);

if a>0 then c:=c+1

end {for};

WriteLn('Из них положительных - ' ,c)

END.

Пояснения: Путь рассуждений здесь тот же, что и в первой задаче. В результате применения оператора for фрагмент ReadLn(a);if a>0 then c:=c+1 выполняется ровно 200 раз, благодаря чему счетчик с накапливает нужное значение. Оператор WriteLn выполняется только один раз и печатает это значение.

Совет: Если вы запускаете эту программу в компьютере, то с числом 200 возиться крайне долго. Поменяйте его на 3 или 4. Смысл программы от этого не изменится.

Задание 46: Что будет, если

1) Вместо c:=0 написать c:=10.

2) Вместо c:=c+1 написать c:=c+2.

3) Строки end {for} и WriteLn поменять местами.

4) Строки c:=0 и for поменять местами.

5) Строки for и ReadLn поменять местами.

Задача 3: В компьютер один за другим вводятся произвольные символы. Ввод заканчивается символом "/". Подсчитать, какой процент от общего числа введенных символов составляют символ "W" и символ ":" по отдельности.

Здесь мы организуем три счетчика одновременно: сW и сDv - для подсчета букв W и двоеточий соответственно, а также i - счетчик циклов, то есть общего числа введенных символов.

Программа:

VAR i,cW,cDv, procent_W, procent_Dv : Integer;

simvol :Char;

begin

i:=0; cW:=0; cDv:=0; {Обнуляем все три счетчика}

repeat {Повторяй цикл}

ReadLn (simvol); {Введи символ}

i:=i+1; {«Посчитай» его}

case simvol of

'W' :cW:=cW+1; {Если это W, увеличь счетчик символов W}

':' :cDv:=cDv+1 {Если это :, увеличь счетчик символов :}

end

until simvol = '/'; {пока не наткнешься на символ /}

procent_W :=Round(100*cW/i); {Вычисляй процент символов W}

procent_Dv :=Round(100*cDv/i); {Вычисляй процент символов :}

WriteLn(procent_W,' ',procent_Dv)

end.

Задание 47: В компьютер вводится N чисел. Подсчитать по отдельности количество отрицательных, положительных и тех, что превышают число 10.

Задание 48: В компьютер вводятся пары целых чисел. Подсчитать, сколько среди них пар, дающих в сумме число 13. Подсчет закончить после ввода пары нулей.

Напомню, что пару чисел можно ввести оператором ReadLn(a,b).

 



<== предыдущая лекция | следующая лекция ==>
Вычислительная циклическая программа | Сумматоры


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


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

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

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


 


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

 
 

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

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