Программирование решения задач
Написание программ для решения различных выражений и задач. При решении каждой задачи предусмотрены: анализ введенных с клавиатуры исходных данных, выведение условия для выхода и вывод результатов. Проиллюстрированы результаты работы каждой программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 22.05.2010 |
Размер файла | 259,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Задача №1
Написать программу для вычисления значения выражения:
2
1+
3+ 4
6
5+
7+x
при различных значениях х.
Предусмотреть программную обработку значений х, при которых выражение не существует.
Решение
1. Анализ введенных с клавиатуры исходных данных
2. Условие, при котором х > 0
3. Повторение предыдущей операции для каждой функции
4. Выведение условия для выхода
5. Вывод результатов
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
x,y,n:real;
begin
repeat
writeln('enter x');
readln(x);
if (x+7)=0 then writeln('resheniy net') else
if (5+6/(7+x))=0 then writeln('resheniy net') else
if (3+4/(5+6/(7+x)))=0 then writeln('resheniy net')
else
y:=1+2/(3+4/(5+6/(7+x)));
writeln('y=',y:1:10);
writeln('dly vuhoda nagmite 0, esli net to 1');
readln(n);
if n=0 then break
until false
end.
Рис. 1. Результаты работы программы для задачи 1
Задача №2
Шахматная доска содержит 8х8 клеток. Горизонтали и вертикали обозначаются цифрами 1-8. Написать программу, проверяющую, можно ли с первой заданной клетки попасть на вторую одним ходом черного слона.
Решение
1. Анализ введенных с клавиатуры исходных данных для первой клетки
2. Условие для а1 > 8 или в1 > 8.
3. Анализ введенных с клавиатуры исходных данных для второй клетки
4. Условие для abs (а2-а1).
5. Выведение условия для выхода
6. Вывод результатов
Для решения задачи введем координаты первой клетки, притом, что они должны быть меньше восьми; затем координаты второй клетки (они также должны быть меньше восьми). Если разность координат первой клетки равна разности координат второй клетки, то значит с первой клетки можно попасть на вторую одним ходом черного слона, если координаты не равны , то нельзя. Запишем результат.
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a1,a2,b1,b2:integer;
c:real;
begin
repeat
writeln('Enter koordinati 1-oy kletki ot 1 do 8');
readln(a1,b1);
if (a1>8) or (b1>8) then writeln('Nelsya enter eto chislo, enter other');
writeln('Enter koordinati 2-oy kletki ot 1 do 8');
readln(a2,b2);
if abs(a2-a1)=abs(b2-b1) then writeln('mogno') else writeln('nelsya');
readln;
writeln('dly vuhoda nagmite 0, esli prodolgit to 1');
readln(c);
if c=0 then break;
until false
end.
Рис.2. Результаты рабаты программы для задачи 2
Задача №3
Татьяна Ларина, читая очередной французский роман, подсчитала сумму номеров прочитанных страниц. Написать программу, определяющую номер последней прочитанной страницы.
Решение
1. Анализ введенных с клавиатуры исходных данных
2. Решение с помощью арифметической прогрессии
3. Выведение условия для выхода
4. Вывод результатов
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
sum,i,n:integer;
begin
write('enter n:');
readln(n);
i:=0;
repeat
inc(i);
sum:=sum+i;
until sum>=n;
writeln('otvet',i);
readln(i);
end.
Рис. 3. Результаты работы программы для задачи 3
Задача №4
Найти все двузначные числа, сумма цифр которых не меняется при умножении на 2,3,4,5,6,7,8,9.
Решение
Для написания этой программы воспользуемся функцией sumc (умножение I на любое однозначное число ). Для проверки кратности удобно использовать операцию mod, позволяющую определить остаток при делении целых чисел. Так как числа двузначные, то цикл будет от 10 до 99.
program Project4;
//uses SysUtils;
var
sum, i : integer;
function sumc(val : integer) : integer;
var
x: integer;
begin
x:= 0;
repeat
x := x + val mod 10;
val := val div 10;
until val = 0;
sumc := x;
end;
begin
for i := 10 to 99 do
begin
sum := sumc(i);
if sumc(i*2) = sum then writeln('2: ', i);
if sumc(i*3) = sum then writeln('3: ', i);
if sumc(i*4) = sum then writeln('4: ', i);
if sumc(i*5) = sum then writeln('5: ', i);
if sumc(i*6) = sum then writeln('6: ', i);
if sumc(i*7) = sum then writeln('7: ', i);
if sumc(i*8) = sum then writeln('8: ', i);
if sumc(i*9) = sum then writeln('9: ', i);
ReadLn;
end.
Рис. 4. Результаты работы программы для задачи 4
Задача №5
Одномерный массив, содержащий N элементов, состоит из нулей, единиц и двоек, расположенных в произвольном порядке (заполнение массива-случайным образом). Преобразовать массив так, чтобы вначале расположились все двойки, затем все нули и, наконец, все единицы.
Решение
program Project5;
//uses SysUtils;
const
n = 20;
var
arr : array [1..n] of byte;
tmp, i, j, k : byte;
begin
randomize;
for i := 1 to n do arr[i] := random(3);
for i := 1 to n do
for j := i to n do
if arr[i] < arr[j] then
begin
tmp := arr[i];
arr[i] := arr[j];
arr[j] := tmp;
end;
for i := 1 to n do if arr[i] = 1 then
begin
k :=i;
break;
end;
for i := k to n do
for j := i to n do
if arr[i] > arr[j] then
begin
tmp := arr[i];
arr[i] := arr[j];
arr[j] := tmp;
end;
for i := 1 to n do write(arr[i],' ');
ReadLn;
end.
Рис. 5. Результаты работы программы для задачи 5
Задача №6
Задана матрица расстояний между городами. Написать программу, указывающую все города, расстояния от которых до других городов не больше А.
Решение
program Project6;
//uses SysUtils;
const
a = 20;
var
arr : array [1..5, 1..5] of byte;
i, j : byte;
begin
randomize;
for i := 1 to 5 do
for j := 1 to 5 do arr[i, j] := 0;
for i := 2 to 5 do
for j := 1 to i-1 do arr[i, j] := random(50)+1;
for i := 1 to 5 do
for j := 1 to 5 do if (arr[i, j] <= a) and (arr[i, j]<>0) then writeln(i, ' ', j, ' ', arr[i, j]);
ReadLn;
end.
Рис. 6. Результаты работы программы для задачи 6
Задача №7
Удалить ведущие и конечные пробелы в строке.
Решение
1. Анализ введенных с клавиатуры исходных данных
2. Применение функции trim
3. Выведение условия для выхода
4. Вывод результатов
Для решения этой задачи используем строковый тип данных. Для удаления пробелов воспользуемся функцией trim(удаляет все ведущие и конечные пробелы). Запишем результат.
program Project7;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
s:string;Index, Count:integer;
n:real;
begin
repeat
s:=('enter stroku s klaviaturi');
readln(s);
s:=trim(s);
writeln(s);
write('dly vuhoda nagmite 0, esli prodolgit to 1');
readln(n);
if n=0 then break
until false
end.
Рис.7. Результаты работы программы для задачи 7
Задача №8
Написать программу для удаления всех строк двумерного массива с отрицательными элементами.
Решение
Для решения задачи используем функцию haveotr, а также процедуру delete(удаляет из строки символы, начиная с позиции Index). Отметим, что haveotr=ложь, но если массив от 1 до 5 < 0, то в этом случае haveotr=правда.
program Project8;
//uses SysUtils;
var
arr : array [1..5, 1..5] of integer;
i, j : byte;
function haveotr(n : byte) : boolean;
begin
haveotr := false;
for j := 1 to 5 do if arr[n, j] < 0 then haveotr := true;
end;
procedure del(n : byte);
begin
for j := 1 to 5 do arr[n, j] ;
end;
begin
repeat
randomize;
for i := 1 to 5 do
for j := 1 to 5 do arr[i, j] := random(5)-1;
for i := 1 to 5 do
if haveotr(i) then del(i);
until false
end.
Задача №9
Даны два непустых множества прописных и строчных букв. Написать программу, которая выводит перечисленные множества в алфавитном порядке.
Решение
Для решения задачи вводим два непустых множества (случайным образом вдвоём буквы).N - число постоянное и равно 20. Вычисляем с помощью to length. Записываем результат.
program Project9;
//uses SysUtils;
const
n = 20;
var
tmp : char;
pr , st : string;
i, j : byte;
a:real;
begin
repeat
writeln('enter st');
readln(st);
for i := 1 to length(st) do
for j := i to length(st) do
if st[i] > st[j] then
begin
tmp := st[i];
st[i] := st[j];
st[j] := tmp;
end;
writeln('enter pr');
readln(pr);
for i := 1 to length(pr) do
for j := i to length(pr) do
if pr[i] > pr[j] then
begin
tmp := pr[i];
pr[i] := pr[j];
pr[j] := tmp;
end;
writeln(st);
writeln(pr);
write('dly vuhoda nagmite 0, esli prodolgit to 1');
readln(a);
if a=0 then break
until false
end.
Рис. 9. Результаты работы программы для задачи 9
Задача №10
В файле целых чисел заменить все четные натуральные числа их квадратами.
Решение
program Project1;
//uses SysUtils;
var
n, i, tmp : integer;
Fin, Fout : text;
begin
assignfile(Fin, 'in.txt');
ReSet(Fin);
assignfile(Fout, 'out.txt');
ReWrite(Fout);
readln(fin, n);
for i := 1 to n do
begin
read(fin, tmp);
if tmp mod 2 = 0 then write(fout, tmp*tmp, ' ')
else write(fout, tmp, ' ');
end;
closeFile(Fin);
closeFile(Fout);
end.
Подобные документы
Игра "Пятнашки": исходные данные, условия задачи и цели ее решения. Основные приемы программирования и типы данных, используемые при решении аналогичных задач. Для разработки программы использовался язык С и среда программирования Borland C++ Builder.
курсовая работа [674,1 K], добавлен 03.07.2011Использование информационных технологий для решения транспортных задач. Составление программ и решение задачи средствами Pascal10; алгоритм решения. Работа со средствами пакета Microsoft Excel18 и MathCad. Таблица исходных данных, построение диаграммы.
курсовая работа [749,1 K], добавлен 13.08.2012Поиск верхних и нижних границ для оптимального значения на подобласти допустимых решений. Методы и проблемы решения задач нелинейного программирования. Написание и отладка программы. Создание программы для решения задачи "коммивояжёра" прямым алгоритмом.
курсовая работа [176,9 K], добавлен 22.01.2016Разработка программы для решения системы обыкновенных дифференциальных уравнений на базе языка программирования Паскаль АВС. Чтение исходных данных из внешнего файла. Вывод исходных данных и результатов на дисплей и во внешний файл. Суть метода Ейлера.
реферат [126,1 K], добавлен 12.01.2012Основные принципы разработки программ. Разработка алгоритма решения задачи о пересечении двухвыпуклым многоугольником. Реализация разработанного алгоритма на языке программирования. Тесты для проверки работы программы. Графическая иллюстрация решения.
курсовая работа [53,3 K], добавлен 20.11.2015Описание решения задачи, ее постановка, общий подход к решению. Представление исходных данных, условий задачи и целей ее решения. Составление алгоритма решения поставленной задачи. Написание программного обеспечения и тестирование конечного продукта.
курсовая работа [1,1 M], добавлен 03.07.2011Анализ метода линейного программирования для решения оптимизационных управленческих задач. Графический метод решения задачи линейного программирования. Проверка оптимального решения в среде MS Excel с использованием программной надстройки "Поиск решения".
курсовая работа [2,2 M], добавлен 29.05.2015Принципы решения задач линейного программирования в среде электронных таблиц Excel, в среде пакета Mathcad. Порядок решения задачи о назначении в среде электронных таблиц Excel. Анализ экономических данных с помощью диаграмм Парето, оценка результатов.
лабораторная работа [2,0 M], добавлен 26.10.2013Использование таблиц Excel и математической программы Mathcad при решении инженерных задач. Сравнение принципов работы этих пакетов программ при решении одних и тех же задач, их достоинства и недостатки. Обоснование преимуществ Mathcad над Excel.
курсовая работа [507,0 K], добавлен 15.12.2014Изучение особенностей создания алгоритмов вычислительных задач. Визуальное программирование стандартных компонентов среды программирования Delphi. Технология создания компонента Delphi для решения производственной задачи. Выполнение блок-схемы алгоритма.
курсовая работа [638,0 K], добавлен 30.01.2015