Вопрос № 106762: 1. Какие значения примут переменные с и d после выполнения следующего фрагмента программы:
c:=1; d:=0;
while d<50 do
begin
d:=d+sqr(c);
c:=c+1;
end;
2. Какое значение примет переменная А после выполнения следующе...Вопрос № 106936: Уважаемые эксперты! У меня возник такой вопрос по поводу ускорения вывода изображения на экран в Паскале (Real mode) средствами модуля Graph BMP файла (640х480х16 цветов). Вот программа, которую я написал, но она работает очень медленно даже на Core2...Вопрос № 106952: Здравствуйте, не могу решить одну задачу:
Составьте программу нахождения произведения двух наибольших из пяти чисел введенных с клавиатуры
Я пишу сначала код для нахождения самого большого числа (приложение) и компиляор мне пише: er...Вопрос № 106992: Здравствуйте уважаемые эксперты!
Есть задачка:
Введите три числа. Если они могут быть длинами сторон остро-
угольного треугольника, выведите их в порядке убывания и вычислите
площадь полученного треугольника.
Вопрос: чи...Вопрос № 107070: Здравствуйте прошу вас решить 1)Даны целые числа a1, ..., a10, целочисленная квадратная матрица порядка n. Заменить нулями в матрице те элементы с чётной суммой индексов, для которых имеются равные среди a1, ..., a10.
2)Цилиндр объема единица им...Вопрос № 107075: Доброе утро!
Можно ли решить задачу: <i>
Дана функция x=a*sin(k*t+2)*cos(k*t). Составить алгоритм для расчета этой функции, если а изменяется от 5 до 7 с шагом 0.12, t изменяется от 4.2 до 6.2 с шагом 0.17 а k=1,2,3,...,12.
</i> трем...Вопрос № 107198: Здравствуйте, уважаемые эксперты помогите решить задачу:
В массиве целых чисел с количеством элемнтов n найти наиболее часто встречающееся число. Если таких чисел несколько, определить наименьшее из них...Вопрос № 107285: Скажите, пожалуйста, как начертить табличку?...
Вопрос № 106.762
1. Какие значения примут переменные с и d после выполнения следующего фрагмента программы:
c:=1; d:=0;
while d<50 do
begin
d:=d+sqr(c);
c:=c+1;
end;
2. Какое значение примет переменная А после выполнения следующего фрагмента программы:
А:=1; b:=false;
repeat
А:=А+1;
b:=b or (A>10)
until b;
3. Какое значение примет переменная А после выполнения следующего фрагмента программы:
A:=0;
for i:=10 downto 7 do А:=A+i;
4. Практическое задание 1. Заданы три вещественных числа: 1) определить, что больше: сумма или произведение этих чисел, 2) вывести на экран отдельно целую и дробную часть суммы.(подобное было-"что больше: сумма или произведение", но здесь дополнительное задание)
5. Практическое задание 2. Напишите программу, рисующую разными цветами N линий (N вводится пользователем), причем расположение и длина линий выбирается случайным образом, и начало следующей линии должно совпадать с концом предыдущей.
6. Создать текстовый файл fonotek.txt, содержащий сведения о музыкальных альбомах различных групп (название группы, название альбома, год выпуска, стиль). Удалить из файла все альбомы в стиле pop и techno. Переписать в другой файл информацию об альбомах в порядке убывания года выпуска.
Отвечает: Verena
Здравствуйте, Сараев Лаврентий Александрович!
И что же сложного Вы нашли в этих задачах? Любая из них решается за 5 минут максимум, если заглянуть хотя бы в справочник функций Паскаля.
Вот Вам задачи 1-5 1. Цикл выполняется пока d не станет больше 50. Функция sqr (х) возводит х в квадрат.
с = 1 d = 0 - 1 шаг
c = 2 d = 1 - 2 шаг
c = 3 d = 5 - 3 шаг
c = 4 d = 14 - 4 шаг
c = 5 d = 30 - 5 шаг c = 6 d = 55 > 50 - условие выхода из цикла выполнилось, это ответ
2. A = 11, поскольку цикл будет выполняться, пока b = false, а оно станет равно true только тогда, когда выполнится условие А > 10 (or (или) возвращает true, когда один из операндов становится равен true).
3. A = 4, поскольку цикл будет выполняться от 10 до 7 с шагом -1, количество повторений цикла равно 10-7+1=4.
Задачи 4 и 5 смотрите в приложении.
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 25.10.2007, 21:58 Оценка за ответ: 5 Комментарий оценки: Спасибо. Но почему же никто не может решить шестое задание? (Создать текстовый файл fonotek.txt, содержащий сведения о музыкальных альбомах различных групп (название группы, название альбома, год выпуска, стиль). Удалить из файла все альбомы в стиле pop и techno. Переписать в другой файл информацию об альбомах в порядке убывания года выпуска.)?
Вопрос № 106.936
Уважаемые эксперты! У меня возник такой вопрос по поводу ускорения вывода изображения на экран в Паскале (Real mode) средствами модуля Graph BMP файла (640х480х16 цветов). Вот программа, которую я написал, но она работает очень медленно даже на Core2 Duo. Пожалуйста помогите
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Каракулов Алексей Валентинович!
Операции работы с файлами ( чтения / записи ) не самые быстрые, а Вам нужно повторит эту операцию 307200(640*480) раз считывая побайтно файл заставки. Ускорить этот процесс можно если читать по блокам в память и уже потом обрабатывать полученную информацию.
Операции:
a:=c and 15;{a:=c & 000011112}
b:=c and 240;{b:=c & 11110002}
b:=b shr 4;{b:=(сдвинуть вправо)000011112}
полностью эквивалентны строкам:
a:=c mod 16;
b:=c div 16;
на одну команду меньше, будет немного быстрее.
На участках кретичным ко времени выполнения лутше переходить на встроенный ассемблер(это моё мнение).
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 29.10.2007, 16:57 Оценка за ответ: 3 Комментарий оценки: Меня как раз интересовал вопрос, как же не использовать putpixel, икаким образом организовать поблочное чтение данных
Вопрос № 106.952
Здравствуйте, не могу решить одну задачу:
Составьте программу нахождения произведения двух наибольших из пяти чисел введенных с клавиатуры
Я пишу сначала код для нахождения самого большого числа (приложение) и компиляор мне пише: error in statement.
Отвечает: Djec
Здравствуйте, Исаак Моисеевич!
В Pascal точка с запятой ";" перед else не ставится. Вот в чем ваша ошибка.
--------- Никогда не сдавайся, даже если боишься проиграть
Ответ отправил: Djec (статус: 3-ий класс)
Ответ отправлен: 27.10.2007, 12:28 Оценка за ответ: 5
Отвечает: Pavl
Здравствуйте, Исаак Моисеевич!
Перед else нельзя ставить точку с запятой.
Вот цитата из Фаронова:
"Структура условного оператора имеет вид:
if <условие> then <оператор1> else <оператор2>"
Ответ отправил: Pavl (статус: 1-ый класс)
Ответ отправлен: 27.10.2007, 17:10 Оценка за ответ: 5
Отвечает: Артём1983
Здравствуйте, Исаак Моисеевич!
Начну с Вашего кода. Вам следует убирать знак ";" перед else, если Вы используете именно эту кострукцию.
writeln ('введите 5 чисел');
readln (a,b,c,d,e);
if a>b then max:=a
else max:=b;
if b>c then max:=b
else max:=c;
if c>d then max:=c
else max:=d;
if d>e then max:=d
else max:=e;
Теперь я опишу своё решение. Задачу решал используя одномерный массив. В начале я записал в массив все числа введёные с клавиатуры. Потом я отсортировал его по убыванию. В конце я просто перемножил два первых элемента.
Приложение:
--------- Программирование - дело Путное!
Ответ отправил: Артём1983 (статус: 5-ый класс)
Ответ отправлен: 27.10.2007, 21:37 Оценка за ответ: 5
Вопрос № 106.992
Здравствуйте уважаемые эксперты!
Есть задачка:
Введите три числа. Если они могут быть длинами сторон остро-
угольного треугольника, выведите их в порядке убывания и вычислите
площадь полученного треугольника.
Вопрос: числа - динамические, каким образом можно проверить - является ли треугольник острым - при динамических значениях??
Отвечает: Решетник Д
Здравствуйте, Игнатов Игнат Игнатович!
посмотрите школьную программу по геометрии...
были такие формулы
s = sqrt(p(p-a)(p-b)(p-c)), где
p = (a+b+c)/2
a,b,c - стороны
также можно воспользоваться теоремами косинусов и синусов (наверное, все же первой) для поиска углов...
если не получится, давайте будем разбирать через мини форум теоретическую часть.
--------- Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: Студент)
Ответ отправлен: 27.10.2007, 16:44
Вопрос № 107.070
Здравствуйте прошу вас решить 1)Даны целые числа a1, ..., a10, целочисленная квадратная матрица порядка n. Заменить нулями в матрице те элементы с чётной суммой индексов, для которых имеются равные среди a1, ..., a10.
2)Цилиндр объема единица имеет высоту h. Определить радиус основания цилиндра для значений h, равных 0.5, 1, 1.5, ..., 5.
Зарание блогодарен.
Отправлен: 28.10.2007, 08:26
Вопрос задал: Alex Bond (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Vassea
Здравствуйте, Alex Bond!
Программы в приложении
Для первой программы:
в массиве data --целые числа от а1 до а10
в массиве mat -- матрица размеры 100 на 100 => максимальное значение n=100
В программе сначала вводим эти матрицы и значение n
После чего начинаем просматривать каждый элемент(1).
если сумма координат не нечетное число, то сравниваем этот элемент с каждым из массива data В случае если найдется равный ему, то мы обнуляем этот элемент матрицы mat
после произведенных операций мы выводим измененную матрицу
Для второй программы
Нам необходимы значения h от 0.5 до 5 или от 1/2 до 10/2 => берем цикл for i:=1 to 10 и значения h -- это половина i
объем конуса 1/3 * pi * r^2 * h = 1 => r=sqrt(3/h/pi) подставляем эту формулу и выводим результаты.
Приложение:
Ответ отправил: Vassea (статус: 7-ой класс)
Ответ отправлен: 28.10.2007, 14:56
Отвечает: Артём1983
Здравствуйте, Alex Bond!
Вашу первую задачу я решал используя динамический массив. Вначале я генерирую саму матрицу потом те десять чисел с которыми надо сравнивать. Ну а потом уже сравниваю.
Вторая задача.
Я использовал цикл repeat until.
Код обеих программ смотрите в приложении.
Приложение:
--------- Программирование - дело Путное!
Ответ отправил: Артём1983 (статус: 5-ый класс)
Ответ отправлен: 28.10.2007, 18:07
Вопрос № 107.075
Доброе утро!
Можно ли решить задачу:
Дана функция x=a*sin(k*t+2)*cos(k*t). Составить алгоритм для расчета этой функции, если а изменяется от 5 до 7 с шагом 0.12, t изменяется от 4.2 до 6.2 с шагом 0.17 а k=1,2,3,...,12. тремя способами:
1. используя только цикл while;
2. используя только цикл for;
3. используя только цикл repeat.
Отправлен: 28.10.2007, 09:49
Вопрос задал: Ezhik (статус: Практикант)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: lyalya
Здравствуйте, Ezhik!
Цикл while
program wwhile;
var a,t,k,y:real;
begin
a:=5;
while a<7 do
begin
t:=4.2;
while t<6.2 do
begin
k:=1;
while k<=12 do
begin
y:=a*sin(k*t+2)*cos(k*t);
writeln(a:1:4,' ',t:1:4,' ',k:1:2,' ',y:4:8);
k:=k+1;
end;
t:=t+0.17;
end;
a:=a+0.12;
end;
readln;
end.
Цикл repeat
program Project2;
var a,t,k,y:real;
begin
a:=5;
repeat
t:=4.2;
repeat
k:=1;
repeat
y:=a*sin(k*t+2)*cos(k*t);
writeln(a:1:4,' ',t:1:4,' ',k:1:2,' ',y:4:8);
k:=k+1;
until k>12;
t:=t+0.17;
until t>6.2;
a:=a+0.12;
until a>7;
readln;
end.
Ответ отправила: lyalya (статус: 1-ый класс)
Ответ отправлен: 28.10.2007, 10:12 Оценка за ответ: 5
Вопрос № 107.198
Здравствуйте, уважаемые эксперты помогите решить задачу:
В массиве целых чисел с количеством элемнтов n найти наиболее часто встречающееся число. Если таких чисел несколько, определить наименьшее из них
Вот программа, которая выполняет указанные действия. const n=10; var a:array [1..n] of integer; i,j,mx,mk,k:integer; begin randomize; for i:=1 to n do begin a[i]:=random(n); write(a[i]:3); end; writeln; mx:=a[1]; mk:=1; k:=0; for i:=1 to n do {цикл в котором производим необходимые проверки для получения результата} begin for j:=1 to n do if a[i]=a[j] then inc(k); if ((mk =
k) and (mx > a[i])) or (mk < k) {выбираем меньшее из "одинаковых"} then begin mx:=a[i];mk:=k; end; k:=0; end; writeln('mx=',mx,' count=',mk); {выводим число соответствующее условию, а также количество сколько раз это число встречается в массиве} readln; end.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 29.10.2007, 07:39
Отвечает: Форсман Павел Вячеславович
Здравствуйте, Андрей Логинов!
Программа примет следующий вид:
Program T107198;
const
nMax=10; {Максимальное количество элементов в массиве}
type
TVector=array [1..nMax] of integer; {Описание типа массива}
var
X:TVector; {Массив}
i,n,F:byte; {Счетчик, реальное количество элементов, возврат частоты}
V:integer; {Возврат значения минимума}
Procedure FreqCount(var X:TVector;n:byte;var F:byte;var V:integer); {Обработка}
var
i,j,tf:byte; {Счетчики, временная переменная частоты}
begin
V:=X[1]; {Задание начальных условий}
F:=1;
for i:=1 to n-1 do {Начало перебора массива}
begin
tF:=1;
for j:=i+1 to n do
if X[j]=X[i] then inc(tF); {Подсчет числа элементов}
if tF>F then {Сравнение с текущей частотой}
begin
V:=x[i];
F:=tF;
end
else
if (tF=F) and (X[i]<V) then V:=X[i]; {Сравнение на минимум}
end;
end;
begin
write('N='); {Ввод элементов массива}
readln(n);
for i:=1 to n do
begin
write('X[',i,']=');
readln(X[i])
end;
FreqCount(X,n,F,V); {Вызов процедуры}
writeln('Максимальная частота F=',F); {Вывод результата}
writeln('Значение V=',V);
readln;
end.
С уважением,
Павел Форсман.
--------- Научить нельзя, но можно попробовать научиться!!!
Отправлен: 29.10.2007, 20:42
Вопрос задала: Byzly (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 8)
Отвечает: Gh0stik
Здравствуйте, Byzly!
Для постороения "красивой" таблицы рекомендую Вам использовать псевдографику, коды этих символов лежат в диапазоне от 176 до 223.
Вот программа которая строит шахматную доску: var i,j:integer; begin writeln('╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗'); for i:=1
to 8 do begin write('║ '); for j:=1 to 8 do begin if odd(i+j) then write('*') else write(''); {вместо символа 0 рекомендую ставить пробел} if j<8 then write(' │ '); end; writeln(' ║'); if i<8 then writeln('╟───┼───┼───┼───┼───┼───┼──γ
2;┼───╢'); end; writeln('╚═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╝'); end.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 31.10.2007, 00:48 Оценка за ответ: 5 Комментарий оценки: =)