MyPascal http://mypascal.ru/ Site news Sun, 19 Jan 2014 18:45:14 GMT uCoz Web-Service Перевод в двоичную систему паскаль В данном уроке мы разберемся в том , как переводить числа из десятичной системы счисления в двоичную в паскале. В данном уроке мы разберемся в том , как переводить числа из десятичной системы счисления в двоичную в паскале. <br /><br /> <strong>Условие задачи : </strong> <br /><br /> Требуется перевести число в двоичную систему счисления ( из десятичной ). С клавиатуры вводится натуральное число N , требуется вывести это число в двоичной системе счисления. <br /> <h3>Устный разбор :</h3>Мы знаем , что для перевода числа в другую систему счисления его нужно делить на основание системы ( основание двоичной системы счисления - 2 , десятичной - 10 и т.д ). Делить число нужно до тех пор пока неполное частное больше или равно основанию. Когда неполное частное становится меньше основания , начинаем выписывать остатки от деления с конца ( начинать с последнего неполного частного ! ). <br /><br /> Пример : <br /> <center><img src="http://mypascal.ru/images_files/1/88.png" class="img_news" alt="как осуществляется перевод" title="как осуществляется перевод" /></center> <br /> Проще говоря , число 17 в двоичной системе счисления будет выглядеть так : 10001. <br /><br /> Теперь , когда мы вспомнили то , как переводить числа в другую систему счисления , мы можем перейти к дальнейшему разбору задачи. <br /><br /> В ходе выполнения программы мы будем пользоваться тем же алгоритмом решения , что и на картинке выше. <br /> <h3>Решение задачи :</h3><!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> uses crt; <br /> var <br /> a: array&#91;1..100] of byte; <br /> n,i,c:integer; <br /> begin <br /><br />&nbsp;&nbsp;readln(n&#41;; <br />&nbsp;&nbsp;c:= 0; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;repeat <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;c:= c + 1; <br />&nbsp;&nbsp;a&#91;c]:= n mod 2; <br />&nbsp;&nbsp;n:= n div 2; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;until n = 0; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;for i:= c downto 1 do <br />&nbsp;&nbsp;write(a&#91;i]&#41;; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;writeln(&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /><br /> В начале программы объявляем массив , в котором мы будем хранить остатки от деления. Размерность данного массива зависит от того , какие числа мы будем переводить. Например для перевода небольших чисел хватит 100 ячеек. Если вы рассчитываете на более большие числа , то можете увеличить размерность массива. <br /><br /> Так как значения элементов массива будут колебаться в промежутке от 0 до 1 , то использовать мы будем тип данных byte ( <a href="http://mypascal.ru/blog/tipy_peremennykh_v_paskale/2013-06-21-13" alt="читать : о типах данных" title="читать : о типах данных">о типах данных</a> ) <br /><br /> Нам понадобятся ещё три переменные n , i , c. Как обычно переменная i играет роль счетчика цикла. Переменная n хранит в себе число , которое будем переводить в двоичную систему счисления. Переменная c нужна для добавления остатков от деления в массив. <br /><br /> Далее в программе мы используем цикл repeat ( <a href="http://mypascal.ru/blog/cikly_v_jazyke_programmirovanija_pascal/2013-06-12-10" alt="читать : о циклах" title="читать : о циклах">о циклах</a> ) для сохранения остатков от деления в массив. <br /><br /> В конце программы выводим массив <b>в обратном порядке</b> ( это принципиально ) , так как остатки от деления нужно выводить в обратном порядке. http://mypascal.ru/news/perevod_v_dvoichnuju_sistemu/2014-01-19-8 denis http://mypascal.ru/news/perevod_v_dvoichnuju_sistemu/2014-01-19-8 Sun, 19 Jan 2014 18:45:14 GMT Поиск элемента в массиве паскаль Мы знаем , что массив содержит в себе упорядоченные элементы данных , которые имеют свои значения и адреса. <br /><br /> Во многих задачах нам потребуется обрабатывать подобные массивы. Например : ( поиск наибольшего элемента , наименьшего элемента и т.п ). Алгоритм поиска элемента в массиве мы разберем в данном уроке. Мы знаем , что массив содержит в себе упорядоченные элементы данных , которые имеют свои значения и адреса. <br /><br /> Во многих задачах нам потребуется обрабатывать подобные массивы. Например : ( <strong>поиск наибольшего элемента</strong> , <strong>наименьшего элемента</strong> и т.п ). Алгоритм поиска элемента в массиве мы разберем в данном уроке. <br /> <h2>Поиск максимального элемента в массиве</h2>Чтобы разобраться в том , как осуществляется поиск элемента в массиве паскаль , мы разберем такую задачу : <br /><br /> <i>Условие :</i> С клавиатуры вводятся 5 целых чисел , требуется найти наибольший элемент ( наибольшее число ) и вывести его на экран. <br /><br /> <b>Решение :</b> <br /> <!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> a: array&#91;1..5] of integer; <br /> i,max:integer; <br /> begin <br /><br /> for i:= 1 to 5 do <br /> read(a&#91;i]&#41;; <br /> <br /> max:= a&#91;1]; <br /> <br /> for i:= 2 to 5 do <br /> if ( a&#91;i] > max &#41; then <br /> max:= a&#91;i]; <br /> <br /> writeln(max&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /> <i>Разбор :</i> <br /><br /> В блоке var объявляем массив "а". Диапазон индексов от 1 до 5 , так как максимальное количество введенных чисел = 5 ( исходя из условия задачи ). Тип переменных integer ( вводятся целые числа ). <br /><br /> Также нам понадобятся ещё две переменные "i" и "max". Переменная i будет играть роль счетчика для цикла , а переменная max будет хранить в себе максимальное значение элемента в массиве. <br /><br /> В начале программы создаем цикл , который будет заносить значения вводимые с клавиатуры в наш массив. <br /><br /> Далее присваиваем переменной max значения первого элемента массива. Возможно у вас возникает вопрос для чего это делается ? ведь первый элемент массива может и не быть наибольшим , более того , он может быть наименьшим. Это делается для того , чтобы иметь "точку отправления" , с которой мы будем сравнивать все остальные элементы в массиве. <br /><br /> В следующем цикле мы будем проверять все элементы в массиве ( из условия 5 ). Проверять нужно все элементы массива , так как мы не знаем где находится наибольший. Но начинать мы будем со 2 , так как первый элемент уже занесен в максимум и сравнивать одинаковые числа не имеет смысла. <br /><br /> Представим , что мы заполнили наш массив так : 4 17 -5 0 8 , тогда переменная max = 4 ( так как a[1] = 4 ). <br /> <center><img src="http://mypascal.ru/images_files/1/86.png" class="img_news" alt="Сравнение элементов" title="Сравнение элементов" /></center> <br /> Во время сравнения двух элементов max и a[i] выполняется условие ( a[i] > max ). Если условие истинно ( какой-либо элемент массива больше max ) , то переменной max присваивается значение этого элемента ( a[i] ). <br /><br /> Второй элемент массива больше переменной max , поэтому max присваивается значение 17. <br /> <center><img src="http://mypascal.ru/images_files/1/87.png" class="img_news" alt="Сравнение элементов" title="Сравнение элементов" /></center> <br /> При дальнейших сравнениях в массиве , не найдены элементы большие 17 , поэтому max остается неизменным. <br /><br /> В конце программы выводим max на экран ( 17 ). <br /> <h2>Поиск минимального элемента в массиве</h2><i>Условие : </i>С клавиатуры вводятся 5 целых чисел , требуется найти наименьший элемент ( наименьшее число ) и вывести его на экран. <br /><br /> <b>Решение : </b> <br /> <!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> a: array&#91;1..5] of integer; <br /> i,min:integer; <br /> begin <br /><br /> for i:= 1 to 5 do <br /> read(a&#91;i]&#41;; <br /> <br /> min:= a&#91;1]; <br /> <br /> for i:= 2 to 5 do <br /> if ( a&#91;i] < min &#41; then <br /> min:= a&#91;i]; <br /> <br /> writeln(min&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /><br /> алгоритм поиска минимального элемента массива почти полностью аналогичен алгоритму поиска максимального. Отличие заключается только в условии внутри второго цикла. <br /> <h2>Поиск отрицательного элемента массива</h2><i>Условие : </i>С клавиатуры вводятся 5 целых чисел , требуется найти первый отрицательный элемент и вывести его на экран. Если отрицательных элементов нет , то ничего не выводить. <br /><br /> <b>Решение : </b> <br /> <!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> a: array&#91;1..5] of integer; <br /> i:integer; <br /> begin <br /><br /> for i:= 1 to 5 do <br /> read(a&#91;i]&#41;; <br /> <br /> for i:= 1 to 5 do <br /> if ( a&#91;i] < 0 &#41; then <br /> begin <br /> writeln(a&#91;i]&#41;; <br /> break; <br /> end; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /> <i>Разбор : </i> В данной задаче мы будем сравнивать элементы массива с 0. Если элемент меньше 0 ( отрицательный ) , то выводим его на экран. Главное заметить , что нам нужен только первый отрицательный элемент ( выводить остальные не надо ) , поэтому после нахождения мы будем выходить из массива командой break. <br /><br /> <center><img src="http://mypascal.ru/images_files/1/85.png" class="img_news" alt="Поиск отрицательного" title="Поиск отрицательного" /></center> http://mypascal.ru/news/poisk_ehlementa_v_massive_paskal/2014-01-17-7 denis http://mypascal.ru/news/poisk_ehlementa_v_massive_paskal/2014-01-17-7 Fri, 17 Jan 2014 18:55:57 GMT Практическая работа №6. Одномерные массивы Дан одномерный массив , значения элементов которого задаются случайным образом. Вычислить сумму квадратов элементов данного массива , больших некоторого числа M. На экран вывести исходный массив и полученный результат. <b>1. </b>Дан одномерный массив , значения элементов которого задаются случайным образом. Вычислить сумму квадратов элементов данного массива , больших некоторого числа M. На экран вывести исходный массив и полученный результат. <br /> <h2>Решение 1 задачи : </h2><div class="quote">program mypascal; <br /> uses crt; <br /> var <br /> a: array[1..10] of integer; <br /> m,i,s:integer; <br /> begin <br /><br /> randomize; <br /> readln(m); <br /> s:= 0; <br /><br /> for i:= 1 to 10 do <br /> begin <br /> a[i]:= random(21)-10; <br /> if ( a[i] > m ) then <br /> s:= s + a[i]*a[i]; <br /> write(a[i],' '); <br /> end; <br /><br /> writeln(); <br /> writeln(s); <br /><br /> end.</div> <br /> <b>2. </b>Дан одномерный массив , значения элементов которого вводятся с клавиатуры. Поменять максимальный и минимальный элементы данного массива местами. На экран вывести исходный массив и полученный результат. <h2>Решение 2 задачи : </h2><div class="quote">program mypascal; <br /> uses crt; <br /> var <br /> a: array[1..10] of integer; <br /> max,min,c,i:integer; <br /> begin <br /><br /> for i:= 1 to 10 do <br /> read(a[i]); <br /><br /> max:= 1; <br /> min:= 1; <br /><br /> for i:= 2 to 10 do <br /> begin <br /> if ( a[i] > a[max] ) then <br /> max:= i; <br /> if ( a[i] < a[min] ) then <br /> min:= i; <br /> end; <br /><br /> c:= a[max]; <br /> a[max]:= a[min]; <br /> a[min]:= c; <br /><br /> for i:= 1 to 10 do <br /> write(a[i],' '); <br /><br /> end.</div> <br /> <b>3. </b>Дан одномерный массив , значения которого вводятся с клавиатуры . Вычислить количество отрицательных элементов данного массива. На экран вывести исходный массив и полученный результат.<h2>Решение 3 задачи : </h2><div class="quote">program mypascal; <br /> var <br /> a: array[1..10] of integer; <br /> i,n:integer; <br /> begin <br /><br /> n:= 0; <br /><br /> for i:= 1 to 10 do <br /> begin <br /> readln(a[i]); <br /> if ( a[i] < 0 ) then <br /> inc(n); <br /> end; <br /> <br /> for i:= 1 to 10 do <br /> write(a[i],' '); <br /> <br /> writeln(); <br /> writeln(n); <br /><br /> end. </div> <br /> <b>4. </b>Дан одномерный массив , значения элементов которого вводятся с клавиатуры. Отрицательные элементы данного массива заменить их модулями , нулевые остаются неизменными , а положительные квадратами. На экран вывести исходный массив и полученный результат. <h2>Решение 4 задачи : </h2><div class="quote">program mypascal; <br /> var <br /> a: array[1..10] of integer; <br /> i:integer; <br /> begin <br /><br /> for i:= 1 to 10 do <br /> begin <br /> readln(a[i]); <br /> if ( a[i] < 0 ) then <br /> a[i]:= a[i]*(-1) <br /> else <br /> if ( a[i] > 0 ) then <br /> a[i]:= a[i]*a[i]; <br /> end; <br /> <br /> for i:= 1 to 10 do <br /> write(a[i],' '); <br /><br /> end.</div> <br /> <b>5. </b>Дан одномерный массив , значения элементов которого вводятся с клавиатуры. Выяснить , каких элементов больше - положительных или отрицательных и насколько. На экран вывести исходный массив и полученный результат. <h2>Решение 5 задачи : </h2><div class="quote">program mypascal; <br /> var <br /> a: array[1..10] of integer; <br /> i,x,y:integer; <br /> begin <br /><br /> x:= 0; <br /> y:= 0; <br /><br /> for i:= 1 to 10 do <br /> begin <br /> readln(a[i]); <br /> if ( a[i] < 0 ) then <br /> inc(x) ; <br /> if ( a[i] > 0 ) then <br /> inc(y); <br /> end; <br /> <br /> for i:= 1 to 10 do <br /> write(a[i],' '); <br /> <br /> writeln(); <br /> <br /> if ( x > y ) then <br /> writeln('Отрицательных больше на ',x-y); <br /> if ( x < y ) then <br /> writeln('Положительных больше на ',y-x); <br /><br /> end.</div> http://mypascal.ru/news/prakticheskaja_rabota_6_odnomernye_massivy/2014-01-10-6 denis http://mypascal.ru/news/prakticheskaja_rabota_6_odnomernye_massivy/2014-01-10-6 Fri, 10 Jan 2014 09:17:47 GMT Сортировка массива в паскале В данной статье мы разберем то , как делать сортировку внутри массива. Делать его нарастающим или убывающим. <br /><br /> Например сделать из массива A = [ 13 ; -5 ; 4 ; 11 ; 0 ] такой массив : A = [ -5 ; 0 ; 4 ; 11 ; 13 ] и т.п. В данной статье мы разберем то , как делать сортировку внутри массива. Делать его нарастающим или убывающим. <br /><br /> Например сделать из массива A = [ 13 ; -5 ; 4 ; 11 ; 0 ] такой массив : A = [ -5 ; 0 ; 4 ; 11 ; 13 ] и т.п. <br /><br /> <strong>Условие задачи : </strong>Требуется заполнить массив 10 целыми числами ( <u>случайно</u> ) от -10 до 10 и вывести его на экран. После чего <u>изменить</u> его таким образом , чтобы числа находились в нем в порядке возрастания. Вывести исходный массив на экран. <br /> <h2>Решение задачи :</h2><div class="quote">program mypascal; <br /> uses crt; <br /> var <br /> a: array[1..10] of integer; <br /> i,i1,c:integer; <br /> begin <br /><br /> randomize; <br /> <br /> for i:= 1 to 10 do <br /> begin <br /> a[i]:= random(21)-10; <br /> write(a[i],' '); <br /> end; <br /> <br /> writeln(' '); <br /> <br /> for i:= 1 to 9 do <br /> for i1:= i+1 to 10 do <br /> if ( a[i1] < a[i] ) then <br /> begin <br /> c:= a[i]; <br /> a[i]:= a[i1]; <br /> a[i1]:= c; <br /> end; <br /> <br /> for i:= 1 to 10 do <br /> write(a[i],' '); <br /><br /> end.</div><h2>Разбор задачи :</h2>В начале программы заполняем массив 10 случайными числами от -10 до 10. В этом же цикле выводим массив на экран. <br /><br /> Далее идут 2 цикла вложенных друг в друга. Для того , чтобы отсортировать последовательность чисел : <br /><br /> Первый цикл берет одно число , а второй сравнивает его с остальными числами. <br /><br /> Первое число сравнивается со 2,3,4,5... числом. Второе число с 3,4,5... пока предпоследнее число в последовательности не будет сравниваться с последним. <br /><br /> Сравнение происходит так : если одно число меньше другого , то обмениваем их. Подробнее про обмен <a href="http://mypascal.ru/news/obmen_znachenijami_dvukh_peremennykh/2013-06-20-3">тут</a> http://mypascal.ru/news/sortirovka_massiva_v_paskale/2013-07-16-5 denis http://mypascal.ru/news/sortirovka_massiva_v_paskale/2013-07-16-5 Tue, 16 Jul 2013 13:14:23 GMT Найти факториал числа В данной статье мы рассмотрим решение такой задачи : Нам требуется ввести число с клавиатуры ,а потом вывести факториал этого числа. В данной статье мы рассмотрим решение такой задачи : <br /><br /> Нам требуется ввести число с клавиатуры ,а потом вывести факториал этого числа. <br /><br /> Факториал числа - это произведение всех натуральных чисел от 1 до N , где N - число , факториал которого мы ищем. Проще говоря , факториал числа 5 = 1 * 2 * 3 * 4 * 5 ( 120 ). <br /><br /> Как вы понимаете , факториал может получаться очень большим. Задача довольно простая , давайте рассмотрим её решение. <br /> <div class="quote">program mypascal; <br /> var <br /> n,i:integer; <br /> s:longint; <br /> begin <br /><br /> write('Введите число : '); <br /> readln(n); <br /> <br /> s:= 1; <br /> <br /> for i:= 1 to n do <br /> s:= s * i; <br /> <br /> writeln('Факториал числа ',n,' = ',s); <br /><br /> end.</div> <br /><br /> В данной задаче нам понадобятся 3 переменные. Переменная N будет хранить в себе число вводимое с клавиатуры. Переменная i будет играть роль счетчика для цикла. Переменная S хранит в себе окончательный результат. <br /><br /> Задачу по поиску факториала проще всего решить с помощью цикла for. В начале программы мы вводим число n. После этого присваиваем переменной s значение 1 ( для того , чтобы правильно считать произведение ). Если бы мы оставили в переменной s значение 0 , то факториал 5 считался бы так 0 * 1 * 2 * 3 * 4 * 5 ( 0 ). <br /><br /> В цикле for считаем значение факториала и заносим его в переменную s. <br /><br /> Допустим , мы ввели число 3 ( n ) , тогда цикл работает так : <br /><br /> 1 шаг : 1(s) * 1(i) = 1 ( s ) <br /> 2 шаг : 1(s) * 2(i) = 2 ( s ) <br /> 3 шаг : 2(s) * 3(i) = 6 ( s ) <br /><br /> Запомните , что факториал 0 = 1 ! <br /><br /> В конце программы выводим переменную s на экран. Вот и все. http://mypascal.ru/news/najti_faktorial_chisla/2013-07-14-4 denis http://mypascal.ru/news/najti_faktorial_chisla/2013-07-14-4 Sun, 14 Jul 2013 14:40:09 GMT Обмен значениями двух переменных В различных типах задач на языке pascal вы можете столкнуться с такой задачей : Вам потребуется обменять значения двух или нескольких переменных. <br /><br /> В данной статье мы рассмотрим способы обмена значений двух переменных. В различных типах задач на языке pascal вы можете столкнуться с такой задачей : Вам потребуется обменять значения двух или нескольких переменных. <br /><br /> В данной статье мы рассмотрим способы обмена значений двух переменных. <br /><br /> Самое главное это понимать , что такое обмен значений. Во-первых это не просто перестановка переменных , а именно обмен. Например первая переменная равна трем , а вторая равна пяти , тогда после выполнения программы первая переменная будет равна пяти , а вторая , как ни странно , будет равна трем. <br /><br /> Реализовать данный обмен можно двумя способами. Первый способ самый простой - обмен с использование третьей переменной. Второй способ - без использования дополнительной переменной. <h2>С использованием дополнительной переменной :</h2> Выглядеть это будет примерно так , как показано на картинке ниже. <br /><br /> <center><img src="http://mypascal.ru/images_files/42.png" class="img_news" alt="Обмен с использованием дополнительной переменной" title="Обмен с использованием дополнительной переменной" /></center> <br /><br /> Как видно на картинке нам потребуются три переменные целочисленного типа. В данном случае названия переменных такие ( a,b,c ). Переменные a,b нужны для хранения значений чисел , которые человек вводит с клавиатуры командой readln(a,b). <br /><br /> Далее в программе идет эта самая передача данных. Допустим мы ввели значения 3 и 5 ( "а" и "б" ) соответственно. Тогда переменная "ц" запоминает значение переменной "а" ( три ). После того как мы запомнили значение первой переменной , её потеря нам не грозит и поэтому мы можем задать ей значение второй переменной без каких-либо опасений. <br /> Теперь первая переменная равна 5 и после этого мы можем задать значение второй переменной. Это делается присваиванием переменной "б" значение переменной "ц". <strong>( b:= c )</strong>. <br /> В конце программы мы просто выводим эти переменные командой writeln(a,b).<h2>Без использования дополнительной переменной :</h2>Передача значений без использования дополнительных переменных осуществляется немного сложнее , но при этом понять это будет нетрудно. <br /><br /> <center><img src="http://mypascal.ru/images_files/43.png" class="img_news" alt="Обмен без использования дополнительной переменной" title="Обмен без использования дополнительной переменной" /></center> <br /><br /> В данной случае нам понадобятся только две переменные (a,b). Обмен совершается так : <br /> Первой переменной задаем значение суммы первой и второй, выглядеть это будет примерно так <div class="quote">( a:= a + b ) <br />( a:= 3 + 5 ). Переменная "а" будет равна 8</div>Второй переменной будет задана разность первой и второй <div class="quote">( b:= a - b ) , ( b:= 8 - 5 ). Переменная "б" равна 3<br /> ( первоначальное значение переменной "а" ) </div> И снова работаем с первой переменной. <br /> Задаем ей значение разности первой и второй <div class="quote">( a:= 8 - 3 ). Переменная "а" будет равна 5 <br />( первоначальное значение переменной "б" )</div> Вот и все осталось только вывести их на экран.<h2>Вывод :</h2>Какой именно способ использовать решать только вам. В первом случае вам понадобится ещё одна переменная , то есть лишняя нагрузка на память , хотя и совсем маленькая. <br /> Во втором случае переменных потребуется только две , однако в данном случае легко запутаться в вычислениях. http://mypascal.ru/news/obmen_znachenijami_dvukh_peremennykh/2013-06-20-3 denis http://mypascal.ru/news/obmen_znachenijami_dvukh_peremennykh/2013-06-20-3 Wed, 19 Jun 2013 21:11:50 GMT Сумма целых чисел от 1 до N Требуется посчитать сумму целых чисел от 1 до N. <br />Довольно простая задача хоть и с подвохом и если вы знаете как её решить , то вам следует пропустить её. <br /> <br />Но если же вы ещё новичек в программировании и у вас возникают проблемы при решении , то вам следует рассмотреть разбор задачи. <strong>Условие задачи :</strong> <br /><br /> Требуется посчитать сумму целых чисел от 1 до N. <br /><br /> Довольно простая задача хоть и с подвохом и если вы знаете как её решить , то вам следует пропустить её. <br /> Но если же вы ещё новичек в программировании и у вас возникают проблемы при решении , то вам следует рассмотреть разбор задачи. <br /> <h3>Устный разбор :</h3>Вначале программы вводить значение переменной <strong>n</strong>. Например 4 . После этого создаем цикл , в котором посчитаем сумму всех чисел от 1 до N.<h3>Первое решение задачи :</h3><!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> n,s,i:integer; <br /> begin <br /><br />&nbsp;&nbsp;readln(n&#41;; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;s:= 0; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;for i:= 1 to n do <br />&nbsp;&nbsp;s:= s + i; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;writeln(s&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /><br /> Для решения данной задачи нам потребовались 3 переменные . Переменная "N" для хранения заданного числа N , переменная "s" для хранения суммы всех чисел от 1 до N и переменная "i" в качестве счетчика для цикла. <br /><br /> Вначале программы вводим значение переменной N . Например 5 .Далее цикл перечисляет все цифры от 1 до N , в нашем случае это 1 , 2 , 3 , 4 , 5. И все эти цифры складывает друг с другом занося значение в переменную "s". <br /><br /> Но задача имеет свой подвох , так как при больших значениях N цикл будет занимать очень много времени. Есть простой способ решения этой проблемы.<h3>Второе решение задачи :</h3><!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> n:integer; <br /> begin <br /><br />&nbsp;&nbsp;readln(n&#41;; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;writeln(( 1 + n &#41; / 2 * n&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /> В данной программе мы не используем цикл , что во много раз ускоряет работу нашей программы . Сам цикл мы заменяем арифметической прогрессией (формулой) <br /> <center><img src="http://mypascal.ru/images_files/17.png" class="img_news" alt="арифметическая прогрессия" title="арифметическая прогрессия" /></center> <br /> Очень короткий код. Нам понадобилась всего одна переменная N .Но и это решение не идеально , так как значение переменной N может быть отрицательным. <br /> <h3>Третье решение :</h3><!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> n:integer; <br /> s:real; <br /> begin <br /><br />&nbsp;&nbsp;readln(n&#41;; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;if ( n < 0&#41; then <br />&nbsp;&nbsp;s:= ((1+abs(n&#41;&#41;*abs(n&#41;/ 2 - 1&#41; * -1 <br />&nbsp;&nbsp;else <br />&nbsp;&nbsp;s:= (1+n&#41;*n/ 2; <br /><br />&nbsp;&nbsp;if ( n = 0 &#41; then <br />&nbsp;&nbsp;s:= 1; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;writeln(trunc(s&#41;&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /> Самое гибкое решение . Подойдет для любого случая. Отлично работает при больших значениях N , при отрицательных значениях N. Если условие вывести целое число. <br /><br /> Объявляются две переменные "N" и "s". Переменная N несет в себе значение числа n , которое задают с клавиатуры. Переменная S несет в себе сумму чисел от 1 до N. <br /><br /> <strong>1.</strong> Вводим значение N. <br /> <strong>2. </strong>Если значение N отрицательное , то s = ((1+abs(n))*abs(n)/ 2 - 1) * -1. Иначе s = (1+n)*n/ 2. <br /> <strong>3.</strong> Подстраховываемся на тот случай , когда N = 0 и присваиваем s значение 1. Так как сумма чисел от 1 до 0 равна 1. <br /> <strong>4.</strong> Выводим переменную s через функцию trunc() ( <a href="http://mypascal.ru/blog/funkcii_i_operacii_v_paskal/2013-06-22-14">Подробнее</a> ) специально для того случая , когда в условии задачи написано вывести целое число , а наша переменная s имеет вещественный тип. http://mypascal.ru/news/summa_celykh_chisel_ot_1_do_n/2013-06-07-2 denis http://mypascal.ru/news/summa_celykh_chisel_ot_1_do_n/2013-06-07-2 Fri, 07 Jun 2013 13:20:27 GMT Найти наибольшее число Довольно простая задача и возможно вам следует пропустить её . Однако для некоторых людей разбор будет полезен . <br /><br />Условие задачи :<br /> Заданы два целых числа ( x и y ) сравнить и найти наибольшее после чего вывести его. Довольно простая задача и возможно вам следует пропустить её . Однако для некоторых людей разбор будет полезен . <br /><br /> <strong>Условие задачи : </strong> <br /> Заданы два целых числа ( x и y ) сравнить и найти наибольшее после чего вывести его . <br /><br /> Как и любую другую задачу эту можно решить множеством способов . Разберем самый интересные и полезные . <br /><br /> <h3>Условный разбор : </h3> В чем заключается данная задача ? " Заданы два числа ( x и y ) " , из этого следует , что нам понадобятся как минимум две целочисленный переменные <strong>( integer )</strong> . И обе они будут вводиться с клавиатуры . После чего они будут сравниваться ( > , < или = ) . И в конце задачи нужно вывести наибольшее число ( > ) . <br /><br /> <h3>Первое решение : </h3> <center><a href='/images_files/4.png' target="_blank"><img src='/images_files/4.png' class='img_news' title='Первое решение' alt='Первое решение' /></a></center> <br /> <!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> x,y: integer; <br /> begin <br /><br />&nbsp;&nbsp;readln(x,y&#41;; { Вводим оба числа с клавиатуры } <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;if ( x > y &#41; then <br />&nbsp;&nbsp;writeln(x&#41; <br />&nbsp;&nbsp;else <br />&nbsp;&nbsp;writeln(y&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /><br /> Вначале программы вводим два целых числа с клавиатуры <strong>readln(x,y); </strong> . <br /> После чего сравниваем их . Если x больше y , то выводим на экран x , иначе ( x меньше или равно ) выводим y . Вот и все. <br /> <h3>Второе решение : </h3> <center><a href='/images_files/5.png' target="_blank"><img src='/images_files/5.png' class='img_news' title='Второе решение' alt='Второе решение' /></a></center> <br /> <!--uzcode--><div class="bbCodeBlock"><div class="bbCodeName" style="padding-left:5px;font-weight:bold;font-size:7pt">Код</div><div class="codeMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzc-->program mypascal; <br /> var <br /> x,y,z: integer; <br /> begin <br /><br />&nbsp;&nbsp;readln(x,y&#41;; { Вводим оба числа с клавиатуры } <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;if ( x > y &#41; then <br />&nbsp;&nbsp;z:= x <br />&nbsp;&nbsp;else <br />&nbsp;&nbsp;z:= y; <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;writeln(z&#41;; <br /><br /> end.<!--/uzc--></div></div><!--/uzcode--> <br /><br /> Вначале программы вводим два целых числа ( x и y ). После чего сравниваем их если x больше y , то заносим значение переменной x в переменную z , иначе ( x меньше или равно y ) заносим значение переменной y в переменную z . В конце программы выводим число z . http://mypascal.ru/news/najti_naibolshee_chislo/2013-06-05-1 denis http://mypascal.ru/news/najti_naibolshee_chislo/2013-06-05-1 Wed, 05 Jun 2013 13:49:26 GMT