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


 
 

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

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

Модератор.


Задач в выбранных темах: 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оке.

Страница 1


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

    Написать программу поиска максимального элемента и его индексов в одномерном массие.
Решение

program Max_search;
uses crt;
const m=50;
type vector=array[1..m] of integer;
var a:vector;
    i,imax,max,p:integer;
Begin
clrscr;
    randomize;
    writeln('Создание массива и его вывод');
      for i:=1 to m do
         begin
           p:=random(50);
           a[i]:=p-30;
           write(a[i]:4);
         end;
      max:=a[1];
      for i:=2 to m do
        if max<a[i] then
          begin
          max:=a[i];
          imax:=i
        end;
      writeln;
      writeln('значение максимального=',max);
      writeln('Индекс максимального=',imax);
      writeln('Для завершения работы нажмите <Enter>');
readln
END.

Комментарии

Замечания:
1. При выводе начального массива хорошо бы выводить не только сам элемент, но и его индекс. Иначе проверка задачи сильно усложнится даже для m=50. Поэтому я бы написал:
write(' a[',i:3,']=',a[i]:4);
2. В случае если первый элемент окажется максимальным, значение imax будет неопределено. Поэтому должно быть:
      max:=a[1]; imax:=1;
3. В условии задачи сказано "и его индексов" - множественное число. Значит необходимо проверять не равны ли другие элементы максимальному и если да, то сохранять где-то в другом массиве эти индексы. При этом при смене максимума этот массив надо очищать.

to top

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

    Напишите программу поиска максимального и минимального элементов одномерного массива и их индексов.
Решение

program Max_search;
uses crt;
const m=50;
type vector=array[1..m] of integer;
var a:vector;
     min,imin,i,imax,max,p:integer;
Begin
clrscr;
    randomize;
    writeln('Создание массива и его вывод');
      for i:=1 to m do
         begin
           p:=random(50);
           a[i]:=p-30;
           write(a[i]:4);
         end;
      max:=a[1];
      for i:=2 to m do
        if max<a[i] then
          begin
          max:=a[i];
          imax:=i
          end
        else
        if min>a[i] then
          begin
          min:=a[i];
          imin:=i
          end;
      writeln;
      writeln('значение максимального=',max);
      writeln('Индекс максимального=',imax);
      writeln('значение минимального=',min);
      writeln('Индекс минимального=',imin);
      writeln('Для завершения работы нажмите <Enter>');
readln
END.

Комментарии

1. См. комментарии 1,2 предыдущего примера.
2. min изначально не определено.
3. Совершенно лишний оператор else. Возможно, и не существует набора данных при которых данный алгоритм будет работать неправильно, но это требует доказательства. Гораздо проще поставить в цикле операторные скобки begin end и убрать else.
      for i:=2 to m do
        begin
        if max<a[i] then
          begin
          max:=a[i];
          imax:=i
          end;
        if min>a[i] then
          begin
          min:=a[i];
          imin:=i
          end;
        end;
Это будет работать однозначно. Хотя, если доказать, что набора данных при котором исходный алгоритм будет работать неправильно не существует, то он будет более эффективным, поскольку в нем будет на несколько операций сравнения меньше.

to top

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

    Напишите программу поиска максимального элемента одномерного массива и его индекса. Массив сформировать как константу.
Решение

program post;
uses crt;
const m=15;a: array[1..m] of byte=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
var i,imax,max,p:integer;
...
далее как в примере 14.

Комментарии

ОК

to top

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

    Требуется упорядочить массив T(20) по невозрастанию.
Решение

program T20;
   uses crt;
   const n=20;
   Var i,a,b,c,d:integer;
   mas:array [1..n] of integer;
   begin
   clrscr;
randomize;
for i:=1 to n do
begin
mas[i]:=random(25);
write(mas[i]:3);
end;
writeln;
for b:=1 to n do
begin
for i:=1 to n do
begin
  if mas[i-1]<mas[i] then begin a:=mas[i-1];mas[i-1]:=mas[i]; mas[i]:=a;
end;
end;
end;
writeln;
for i:=1 to n do write(mas[i]:3);
readln;
end.

{переформатированный вариант - Модератор}

program T20;
uses crt;
const n=20;
var i,a,b,c,d:integer;
    mas:array [1..n] of integer;
begin
clrscr;
randomize;
for i:=1 to n do
  begin
  mas[i]:=random(25);
  write(mas[i]:3);
  end;
writeln;
for b:=1 to n do
  begin
  for i:=1 to n do
    begin
    if mas[i-1]<mas[i] then
      begin
      a:=mas[i-1];
      mas[i-1]:=mas[i];
      mas[i]:=a;
      end;
    end;
  end;
writeln;
for i:=1 to n do
  write(mas[i]:3);
readln;
end.


Комментарии

1. Вывод начального массива как в предпредыдущем примере.
2. Для внешнего цикла не нужны операторные скобки begin end.
3. Как видно, сделана попытка использовать обратный метод пузырька, но приведенное решение не совсем правильно. Начать с того, что в цикле при i=1 программа должна завершиться по ошибке выхода индекса за допустимые границы массива, т.к. mas[] определен от 1 до n. Всегда проверяйте граничные значения.
Приведенный аглоритм неэффективен, поскольку производится n проходов по массиву порядка n. Более эффективно написать так:
for b:=1 to n-1 do
  for i:=n downto b+1 do
    if mas[i-1]<mas[i] then
      begin
      a:=mas[i-1];
      mas[i-1]:=mas[i];
      mas[i]:=a;
      end;
Суть метода заключается в том, чтобы при первом проходе на последнем месте месте оказался миниимальный элемент. Тогда на следующем проходе, нам уже нужно просматривать только n-1 эелементов, на том который за ним n-2 эл-та и т.д. На последнем (n-1)-ом этапе надо просмотреть только 2 элемента.

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