HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail


 
В этот день много лет назад...
29 марта. В 1891 году (133 года назад) - Императорский рескрипт, объявляющий о начале строительства Транссибирской магистрали.
 
 

Уголок начинающего программиста

 Вступление  Массивы  Условный оператор  Файлы  Формулы  Циклы  Процедуры  Множества  Строки
В данном разделе приводятся программы, написанные посетителями данного сайта. Идея данного раздела принадлежит Валерию из города Новотроицк Оренбургской области, который прислал мне письмо, в котором предложил публиковать его программы, мотивировав это тем, что на сайте не хватает простых, элементарных программ. А поскольку он все-равно будет "мучаться", то чтоб труд не пропадал зря, он предложил размещать его примеры на сайте. Мне эта идея понравилась и вот первая партия программ размещена в данном новом разделе. Я постараюсь снабжать программы комментариями, если что-то можно сделать в программах лучше. Я не обещаю проверять данные программы на работоспособность, компилируя их, но просматривать на предмет ошибок обязательно буду.

Модератор.


Задач в выбранных темах: 66

 
  1. Написать программу поиска максимального элемента и его индексов в одномерном массие.
  2. Напишите программу поиска максимального и минимального элементов одномерного массива и их индексов.
  3. Напишите программу поиска максимального элемента одномерного массива и его индекса. Массив сформировать как константу.
  4. Требуется упорядочить массив T(20) по невозрастанию.
  5. Требуется найти первый положительный элемнт массива F(30). Использовать оператор while.
  6. Требуется найти первый положительный элемнт массива F(30). Не использовать оператор while.
  7. Требуется поменять местами k и n строки массива L(10,20) где k и n задаются с терминала.
  8. Создать список жильцов дома.

    1. Описать и вывестимассив, содержащий 10 записей следующий структуры: фамилия, внесенная кварплата(руб), номер счета, номер квартиры.
    2. Вывестимассив в табличном виде.
    3. Вывести список жильцов, фамилии которых начинаются на заданную букву.
    4. Найти общую сумму внесенной платы.

  9. Составить программу вычисления суммы положительных элементов одномерного массива a[n] вещественных чисел.
  10. Составьте прог-му вычисления суммы индексов нулевых элементов одномерного массива a[n] вещественных чисел.
  11. Составьте прог-му подсчета числа отрицательных элементов одномерного массива a[n] вещественных чисел.
  12. Составьте прог-му подсчета числа элементов одномерного массива, превосходящих среднее арифметическое элементов данного массива.
  13. Cоставить прог-му, заменяющую единицей все нулевые элементы массива a[n] вещественных чисел.
  14. Составить прог-му, проверяющую, есть ли среди элементов массива a[n] те, которые принадлежат интервалу (c,d).
  15. Составить программу циклической перестановки элементов одномерного массива a[n], при которой i-ый элеент становится i+1-м, а последний элемент становится первым.
  16. Составить прог-му построения массива b[n], состоящего из тех же элементов, что и массив a[n], но в котором все отрицательные элементы предшествуют всем положительным.
  17. Составить прог-му генерирования массива b[1..m], состоящего только из отрицательных элементов одномерного массива a[n] вещественных чисел.
  18. Найти самую длинную последовательность из одинаковых чисел в массиве.
  19. При вводе возраста от 0 до 99 программа должна подобрать нужное слово: лет, года или год. Пример: 21 год, 11 лет, 2 года и т.д.
  20. Найти большее из четырех введенных чисел
  21. Составить программу которая по названию месяца определяет сезон времени года.
  22. Составить программу для определения четности ли нечетности заданного числа.
  23. Составить программу для определения четности ли нечетности заданного числа. В случае не четности числа выводить его знак.
  24. По введенному с клавиатуры виду транспорта (маршрутное такси - 5 руб., трамвай - 2 руб, автобус - 3 руб, такси - 40руб) определить стоимость проезда для указанного колличесва людей в одном транспорте.
  25. Ревизия: По введенному с клавиатуры виду транспорта (маршрутное такси - 5 руб., трамвай - 2 руб, автобус - 3 руб, такси - 40руб) определить стоимость проезда для указанного колличесва людей в одном транспорте.
  26. По введенным координатам точки установить её местоположение на координатной плоскости. Задачка на условный оператор if-else.
  27. Сколько чисел, оканчивающихся на 0 есть в промежутке от a до b
  28. Дан текстовый файл. Найти в файле все лова длиннее пяти букв. Результат записать в другой текстовый файл.
  29. Условие: Дан текстовый файл. Найти в файле слова, начинающиеся и заканчивающиеся на "а".
  30. Дан текстовый файл. Найти в файле все слова-палиндромы.
  31. Cоздать текстовый фаqл. Заполнить его введенным с клавиатуры числом строк, и
    дописать файл самы длинной строкой, вывести на экран измененный файл.

  32. Формульный счет. Найти и напечатать числа.
  33. Формульный счет. Найти и напечатать числа.
  34. Напечатать сумму, сумму модулей, модуль суммы, разность, разность модулей, произведение двух чисел.
  35. Протабулировать функцию y = sin(x) на отрезке [a b] с шагом h. При вводе не подходящих чисел возвращаться к вводу чисел.
  36. Протабулировать функцию y = sin(x) на отрезке [a b] с шагом h. Использовать цикл while При вводе не подходящих чисел возвращаться к вводу чисел.
  37. Составьте программу вычисления значения функции y = f на отрезке [a,b] в точках Xi = a + i*h, где h = (b-a)/m, где m заданное целое число. Найти среднееарефметическое значение y на отрезке [a, b]. Y=tg(x/2)+cos(x), A=0, B=pi/2, m=20.
  38. По введенной дате в формате ДД ММ ГГГГ определить день недели.
  39. Ввести число и четные цмфры этого числа уменьшить вдвое.
  40. получить и напечатать последовательность натуральных чисел, образованную по следующему правилу: каждое число в последовательности, начиная с третьего, получается сложением двух предыдущих чисел.(напр.1+2=3+2=5+3=8+5=13)
  41. Вывести каждое третье число в промежтке от ста до одного.
  42. Составить программу нахождения наибольшего общего делителя двух чисел М и Р, пользуясь алгоритмом Евклида
  43. Составьте программу в которой при помощи функции находится max(2x,3x-10, max(x2-x,x3-x2-3x), max(a-x, x-a)) при заданных с терминал х и а.
  44. Составьте программу в которой при помощи функции находится максимальный элемент массивов А(22), Р(12), Т(33), затем общий максимальный элемент, затем при помощи процедуры все отрицательные элементы каждого из трех массивов замените на модуль первого элемента соответствующего массива для массивов А(22), Р(12), Т(33). Предусмотреть вывод на экран исходных и измененных массивов.
  45. В матрице А(4,8) определить с помощью функции разность между максимальным и минимальным элементом каждой строки и записать в дополнительный столбец в основной программе. Предусмотреть вывод начального массива и массива после дозаписи.
  46. Создать файл из 5 чисел разного знака. Подсчитать сумму
    положительных чисел. Дописать созданный файл этой суммой.

  47. Сформировать множество А и В, базовый тип которых 0..50, по заданному числу элементов для каждого множества. Найти число и сумму элементов, принадлежащих одновеменно и А и В. Выведите на экран все элементы множества А Не пренадлежащие В.
  48. Дана строка в виде предложения, причем известно что слова отделены друг от друга пробелами. Предложение заканчивается точкой. Сформировать массив состоящий из слов исходного предложения. Вывести слова предложения колличесво букв в которых четно. Посчитать сколько слов начинается с буквы 'T'
  49. Пусть в массиве F хранятся фамилии 25 студентов группы а в массиве A - их адреса(начиная с названия улици и заканчивая номером квартиры или номером дома). Вывести всех проживающих на проспекте ленина.
  50. В произвольном тексте A: string определить, какие цифры встречаются вывести их.
  51. СТРОКИ: Напишите программу подсчета суммарного числа бука "а" и "б" в данной строковой переменной. Вывести на экран каких букв больше.
  52. СТРОКИ: Задано предложение Y, состоящее из слов-строк. Проверить, встречается
    ли данное слово X в предложении Y.

  53. СТРОКИ: Дано предложение-строка. Подсчитать количество слов, начинающихся с буквы "а".
  54. Написать прог-му, подсчитывающую, сколько раз в данном слове X встречается (в качестве его части) слово Y.
  55. Написать прог-му, которая каждый встречающийся в строке заданный символ заменяет на заданную последовательность символов, расширяя при этом строку.
  56. Строки: Задано предложение-строка. Написать прог-му, которая находит самое длинное и самое короткое слово, встречающееся в предложении.
  57. Строки: Написать прог-му, вычеркивающую из данного текста все буквы "а".
  58. Строки: Написать прог-му, которая проверяет в строке баланс открывающих и закрывающих круглых скобок (строка содержит арифмет. выражение)
  59. Строки: Написать прог-му, которая каждую встреченную букву "б" заменяет сочетанием "ку".
  60. Строки: Предложение состоит из слов-строк. НАписать прог-му, которая подсчитывает кол-во слов в предложении.
  61. Из данного предложения вычеркнуть слова, встречающиеся больше одного раза.
  62. Написать прогу, проверяющую, является ли частью данного слова слово "сок". Ответ дать в формате "да/нет".
  63. Дано слово. Определить, сколько различных букв в нем.
  64. В строке заменить все двоеточия точкой запятой и подсчитать количество замен.
  65. Дана строка содержащая текст, заканчивается точкой. Вывести на экран слова содержащие три буквы.
  66. Bычислить сколько pаз каждое слово встpечается во введенной стpоке.

Страница 10


  1.  Условие задачи

    Составьте программу вычисления значения функции y = f на отрезке [a,b] в точках Xi = a + i*h, где h = (b-a)/m, где m заданное целое число. Найти среднееарефметическое значение y на отрезке [a, b]. Y=tg(x/2)+cos(x), A=0, B=pi/2, m=20.
Решение

01: program tabff;
02: uses crt;
03: label opa;
04: var a,b,m:integer;
05:     i:byte;
06:     y,x,h,sr:real;
07: BEGIN
08: CLRSCR;
09: opa:writeln('введите числа соответсвующие промежутку функции ');
10: readln(a,b);
11: writeln('введите число m');
12: readln(m);
13: h:=((b-a)/m);
14: begin
15: if (a<b) and (h>0) then
16:          else begin writeln('введены ошибочные данные');
17:             goto opa ;
18:             end;
19:       end;
20: For i:=1 to trunc((b-a)/h) do
21: begin
22: x:=a+i*h;
23: y:=(sin(x/2))/(cos(x/2))+cos(x);
24: writeln('значение функции при x = ',x:4:3,' = ',y:4:3);
25: sr:=sr+y;
26: end;
27: if m<=2 then
28: writeln('Среднее арефметическое значение = ',sr/m:4:3)
29: else
30: writeln('Среднее арефметическое значение = ',sr/(m-1):4:3);
32: readln;
33: end.

Комментарии

1. Строки 9-19 я бы заменил на следующие (ну не люблю я метки):
в секции описания переменных:

var inputOK:boolean;
...
repeat
  writeln('введите числа [a,b] соответсвующие промежутку функции ');
  readln(a,b);
  writeln('введите целое число m');
  readln(m);
  inputOK := (b>a) and (m>0);
  if (not inputOK) then
     writeln('введены ошибочные данные. Надо b>a; m>0');
until inputOK;
h:=(b-a)/m;

2. Зачем вычислять trunc((b-a)/h), когда у нас есть m?
3. Граничные условия: при i=1, x=a+h, а должно быть a.
Посему строка 22: x := a + (i-1)*h; И соответсвенно, в 20-й строке:
for i:=1 to m+1 do
m+1 - чтобы захватить b, при i=m+1, x=a+(m+1-1)*(b-a)/m=b
4. Форматирование! Все внутренние блоки должны иметь отступ.
5. Среднее значение не зависит от m и определено для любого m>=1 одинаково. Поэтому я не понял, зачем нужны строки 27-30. Я бы написал:
writeln('Среднее арефметическое значение y на [',a,',',b,']  = ',sr/m:4:3);
6. Формат вывода :4:3 недостаточен для вывода вещественных переменных со знаком. Надо хотя бы :7:3
7. При х=Pi значение тангенса не определено. Надо проверять в 23 строке на равенство х=Pi. В случае равенства, выдвать сообщение, что произошло деление на ноль. Это всяко лучше, чем получить потом Runtime error 002 at 4fd2:00af и гадать, что же произошло. :-)
А потом написать единую процедуру подсчета оплаты, но это уже для дальнейших упражнений.

to top

  1.  Условие задачи

    По введенной дате в формате ДД ММ ГГГГ определить день недели.
Решение
Автор: strike

uses crt;
var IsCorrectDate:boolean;
    d,m,y:integer;
procedure  INPUTDATE(var d,m,y:integer;var correctly: boolean);
begin
write('Input date in format DD MM YYYY: '); readln(d,m,y);
correctly:= (d>=1) and (d<=31) and (m>=1)
                   and (m<=12) and (y>=1582) and (y<=4903)
end;
procedure WRITEDAY(d,m,y: integer);
const
doweek:array [0..6] of string[11]=('sunday','monday','tuesday','wednesday','thursday','friday','saturday');
var c,w: integer;
begin
if m<3 then
  begin
  m:=m+10;
  y:=y-1;
  end
else
  m:=m-2;
c:=y div 100;
y:=y mod 100;
w:=abs(trunc(2.6*m-0.2)+d+y div 4+y+c div 4-2*c) mod 7;
writeln('DAY: ',doweek[w]);
end;
begin
clrscr;
repeat
INPUTDATE(d,m,y,IsCorrectDate);
if IsCorrectDate then
   WRITEDAY(d,m,y);
  until not IsCorrectDate
end.

Комментарии

Комментарий от автора: В проге есть свои заморочки, т.к. день определяется по невероятной формуле. Эту формулу придумал не я, но её работоспособность проверил на десятке тестов.
Модератор: Ну что тут сказать? Когда-то я тоже программировал эту формулу. Вполне возможно она верна, но никогда не доверяйте черным ящикам, если можно без них обойтись. :-) То есть я не исключаю, что есть даты, для которых она не работает и если, скажем, преподаватель такую дату знает, то... в общем понятно.
К слову сказать, я эту задачу решал и другим путем - зная конкретный день недели, например сегодня среда 14 января 2004 года я высчитывал количество дней до какой-либо даты и потом просто брал остаток от деления на 7. Надо сказать метод жутко заморочный учитывая все високосные года и переход (14 января (!), кстати, 1918 года) на новый календарь. Но тот метод работал и работал правильно и понятно как. Так что выбор за вами. :-)

to top

  1.  Условие задачи

    Ввести число и четные цмфры этого числа уменьшить вдвое.
Решение
Автор: Moderator

var
  k,k0,m,power:longint;
  lastDight:byte;
function addWithShift(m:longint;n:byte):longint;
  begin
  addWithShift := m + n*power;
  end;
begin
write('Input number:');
readln(k0);
k:=k0;
m:=0;
power := 1;
while k>0 do
  begin
  lastDight := k mod 10;
  if ((lastDight mod 2) = 0)
    then m:=addWithShift(m,lastDight div 2)
    else m:=addWithShift(m,lastDight);
  k:=k div 10;
  power := power*10;
  end;
writeln('  New number:',m);
end.

Комментарии



to top

  1.  Условие задачи

    получить и напечатать последовательность натуральных чисел, образованную по следующему правилу: каждое число в последовательности, начиная с третьего, получается сложением двух предыдущих чисел.(напр.1+2=3+2=5+3=8+5=13)
Решение
Автор: Moderator

var f0,f1,f2,max:longint;
begin
f0:=1;
f1:=1;
max:=300;
writeln('Fibonachi numbers below ',max,':');
write('1,1,');
while (f1<max) do
  begin
  f2:=f0+f1;
  f0:=f1;
  f1:=f2;
  write(f2,',');
  end;
writeln('...');
end.

Комментарии



to top

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

 

 

 

Задач в выбранных темах: 66

 
  1. Написать программу поиска максимального элемента и его индексов в одномерном массие.
  2. Напишите программу поиска максимального и минимального элементов одномерного массива и их индексов.
  3. Напишите программу поиска максимального элемента одномерного массива и его индекса. Массив сформировать как константу.
  4. Требуется упорядочить массив T(20) по невозрастанию.
  5. Требуется найти первый положительный элемнт массива F(30). Использовать оператор while.
  6. Требуется найти первый положительный элемнт массива F(30). Не использовать оператор while.
  7. Требуется поменять местами k и n строки массива L(10,20) где k и n задаются с терминала.
  8. Создать список жильцов дома.

    1. Описать и вывестимассив, содержащий 10 записей следующий структуры: фамилия, внесенная кварплата(руб), номер счета, номер квартиры.
    2. Вывестимассив в табличном виде.
    3. Вывести список жильцов, фамилии которых начинаются на заданную букву.
    4. Найти общую сумму внесенной платы.

  9. Составить программу вычисления суммы положительных элементов одномерного массива a[n] вещественных чисел.
  10. Составьте прог-му вычисления суммы индексов нулевых элементов одномерного массива a[n] вещественных чисел.
  11. Составьте прог-му подсчета числа отрицательных элементов одномерного массива a[n] вещественных чисел.
  12. Составьте прог-му подсчета числа элементов одномерного массива, превосходящих среднее арифметическое элементов данного массива.
  13. Cоставить прог-му, заменяющую единицей все нулевые элементы массива a[n] вещественных чисел.
  14. Составить прог-му, проверяющую, есть ли среди элементов массива a[n] те, которые принадлежат интервалу (c,d).
  15. Составить программу циклической перестановки элементов одномерного массива a[n], при которой i-ый элеент становится i+1-м, а последний элемент становится первым.
  16. Составить прог-му построения массива b[n], состоящего из тех же элементов, что и массив a[n], но в котором все отрицательные элементы предшествуют всем положительным.
  17. Составить прог-му генерирования массива b[1..m], состоящего только из отрицательных элементов одномерного массива a[n] вещественных чисел.
  18. Найти самую длинную последовательность из одинаковых чисел в массиве.
  19. При вводе возраста от 0 до 99 программа должна подобрать нужное слово: лет, года или год. Пример: 21 год, 11 лет, 2 года и т.д.
  20. Найти большее из четырех введенных чисел
  21. Составить программу которая по названию месяца определяет сезон времени года.
  22. Составить программу для определения четности ли нечетности заданного числа.
  23. Составить программу для определения четности ли нечетности заданного числа. В случае не четности числа выводить его знак.
  24. По введенному с клавиатуры виду транспорта (маршрутное такси - 5 руб., трамвай - 2 руб, автобус - 3 руб, такси - 40руб) определить стоимость проезда для указанного колличесва людей в одном транспорте.
  25. Ревизия: По введенному с клавиатуры виду транспорта (маршрутное такси - 5 руб., трамвай - 2 руб, автобус - 3 руб, такси - 40руб) определить стоимость проезда для указанного колличесва людей в одном транспорте.
  26. По введенным координатам точки установить её местоположение на координатной плоскости. Задачка на условный оператор if-else.
  27. Сколько чисел, оканчивающихся на 0 есть в промежутке от a до b
  28. Дан текстовый файл. Найти в файле все лова длиннее пяти букв. Результат записать в другой текстовый файл.
  29. Условие: Дан текстовый файл. Найти в файле слова, начинающиеся и заканчивающиеся на "а".
  30. Дан текстовый файл. Найти в файле все слова-палиндромы.
  31. Cоздать текстовый фаqл. Заполнить его введенным с клавиатуры числом строк, и
    дописать файл самы длинной строкой, вывести на экран измененный файл.

  32. Формульный счет. Найти и напечатать числа.
  33. Формульный счет. Найти и напечатать числа.
  34. Напечатать сумму, сумму модулей, модуль суммы, разность, разность модулей, произведение двух чисел.
  35. Протабулировать функцию y = sin(x) на отрезке [a b] с шагом h. При вводе не подходящих чисел возвращаться к вводу чисел.
  36. Протабулировать функцию y = sin(x) на отрезке [a b] с шагом h. Использовать цикл while При вводе не подходящих чисел возвращаться к вводу чисел.
  37. Составьте программу вычисления значения функции y = f на отрезке [a,b] в точках Xi = a + i*h, где h = (b-a)/m, где m заданное целое число. Найти среднееарефметическое значение y на отрезке [a, b]. Y=tg(x/2)+cos(x), A=0, B=pi/2, m=20.
  38. По введенной дате в формате ДД ММ ГГГГ определить день недели.
  39. Ввести число и четные цмфры этого числа уменьшить вдвое.
  40. получить и напечатать последовательность натуральных чисел, образованную по следующему правилу: каждое число в последовательности, начиная с третьего, получается сложением двух предыдущих чисел.(напр.1+2=3+2=5+3=8+5=13)
  41. Вывести каждое третье число в промежтке от ста до одного.
  42. Составить программу нахождения наибольшего общего делителя двух чисел М и Р, пользуясь алгоритмом Евклида
  43. Составьте программу в которой при помощи функции находится max(2x,3x-10, max(x2-x,x3-x2-3x), max(a-x, x-a)) при заданных с терминал х и а.
  44. Составьте программу в которой при помощи функции находится максимальный элемент массивов А(22), Р(12), Т(33), затем общий максимальный элемент, затем при помощи процедуры все отрицательные элементы каждого из трех массивов замените на модуль первого элемента соответствующего массива для массивов А(22), Р(12), Т(33). Предусмотреть вывод на экран исходных и измененных массивов.
  45. В матрице А(4,8) определить с помощью функции разность между максимальным и минимальным элементом каждой строки и записать в дополнительный столбец в основной программе. Предусмотреть вывод начального массива и массива после дозаписи.
  46. Создать файл из 5 чисел разного знака. Подсчитать сумму
    положительных чисел. Дописать созданный файл этой суммой.

  47. Сформировать множество А и В, базовый тип которых 0..50, по заданному числу элементов для каждого множества. Найти число и сумму элементов, принадлежащих одновеменно и А и В. Выведите на экран все элементы множества А Не пренадлежащие В.
  48. Дана строка в виде предложения, причем известно что слова отделены друг от друга пробелами. Предложение заканчивается точкой. Сформировать массив состоящий из слов исходного предложения. Вывести слова предложения колличесво букв в которых четно. Посчитать сколько слов начинается с буквы 'T'
  49. Пусть в массиве F хранятся фамилии 25 студентов группы а в массиве A - их адреса(начиная с названия улици и заканчивая номером квартиры или номером дома). Вывести всех проживающих на проспекте ленина.
  50. В произвольном тексте A: string определить, какие цифры встречаются вывести их.
  51. СТРОКИ: Напишите программу подсчета суммарного числа бука "а" и "б" в данной строковой переменной. Вывести на экран каких букв больше.
  52. СТРОКИ: Задано предложение Y, состоящее из слов-строк. Проверить, встречается
    ли данное слово X в предложении Y.

  53. СТРОКИ: Дано предложение-строка. Подсчитать количество слов, начинающихся с буквы "а".
  54. Написать прог-му, подсчитывающую, сколько раз в данном слове X встречается (в качестве его части) слово Y.
  55. Написать прог-му, которая каждый встречающийся в строке заданный символ заменяет на заданную последовательность символов, расширяя при этом строку.
  56. Строки: Задано предложение-строка. Написать прог-му, которая находит самое длинное и самое короткое слово, встречающееся в предложении.
  57. Строки: Написать прог-му, вычеркивающую из данного текста все буквы "а".
  58. Строки: Написать прог-му, которая проверяет в строке баланс открывающих и закрывающих круглых скобок (строка содержит арифмет. выражение)
  59. Строки: Написать прог-му, которая каждую встреченную букву "б" заменяет сочетанием "ку".
  60. Строки: Предложение состоит из слов-строк. НАписать прог-му, которая подсчитывает кол-во слов в предложении.
  61. Из данного предложения вычеркнуть слова, встречающиеся больше одного раза.
  62. Написать прогу, проверяющую, является ли частью данного слова слово "сок". Ответ дать в формате "да/нет".
  63. Дано слово. Определить, сколько различных букв в нем.
  64. В строке заменить все двоеточия точкой запятой и подсчитать количество замен.
  65. Дана строка содержащая текст, заканчивается точкой. Вывести на экран слова содержащие три буквы.
  66. Bычислить сколько pаз каждое слово встpечается во введенной стpоке.

 

 

 

HOME EXAMPLES