Помощь - Поиск - Пользователи - Календарь
Полная версия: Много разных задач.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Slim-
Помогите решить несколько простеньких(для вас, а не для меня) задач....
Вот задания:

1)Границы промежутка заданы случайными числами. Проверить существование данного промежутка. На данном промежутке найти все числа, кратные числу с и их количество.
Последовательность решения:
1. Описать переменные a, b, c как integer.
2. Задать с клавиатуры коэффициент кратности c.
3. Задать промежуток:
randomize; {подключение генератора случайных чисел}
a:=random(50); {задание случайного числа в пределах от 1 до 50}
в:=random(100); {задание случайного числа в пределах от 1 до 100}
4. Проанализировать существование промежутка: если a>b, то промежуток не существует.
5. Организовать цикл от a до b и найти все кратные числа:
for i:= а to в do {задание границ промежутка случайными числами }
if int(i/2)=i/2 then begin write( i, ’ ‘); k:=k+1; end;
6. Проанализировать значение счетчика к и выдать соответствующее сообщение.
7. Осуществить задержку результата на экране.
---------------------------------------------------------------------------------------------
2). Даны натуральные числа А и В. Определить их наименьшее общее кратное.
Последовательность решения:
• формируем тело программы и описываем переменные:
a,b,c,d,NOD-как integer; NOK – как real;
• вводим натуральные числа А и В;
• запоминаем их в ячейках C и D;
• находим НОД чисел А и В;
• запоминаем его в ячейке NOD;
• вычисляем НОК по формуле: NOK = C*D / NOD;
• выводим результат.
• Подбираем контрольный пример для проверки программы.
---------------------------------------------------------------------------------------------
3)Составить программу вычисления корней квадратного уравнения вида a x 2 + b x + c = 0

Последовательность действий:
1. Описать переменные a, b, c, d, x1,x2 как REAL.
2. Задать с клавиатуры коэффициенты a, b, c.
3. Вычислить значение дискриминанта d = b 2 – 4 a c
4. Вывести значение дискриминанта на экран
5. Проверить значение дискриминанта:
• Если дискриминант меньше нуля, то нет решения
• Если дискриминант больше или равен нулю, то вычислить
значения x1 и x2

Заранее спасибо.
klem4
И что не получается ? Покажите нам ваш код и если надо мы его поправим.
Atos
А вообще, если не знаешь паскаля, надо хотя бы попробовать учебник почитать. Например, Фаронов. ТурбоПаскаль. Учебный курс
Алгоритм решения у тебя уже есть, осталось перевести его на Паскаль. Если что-то не знаешь, читай соответствующую главу. Если уж совсем что-то непонятно, задавай конкретный вопрос по какому-либо действию. Если не пробовать хоть что-то написать самостоятельно, то никогда программированию не научишься.
-Slim-
Объясните что это значит:

вводим натуральные числа А и В;
запоминаем их в ячейках C и D;

Как их запомнить в ячейках???????
volvo
Описываем 4 переменные: A, B, C, D... Вводим A и B с клавиатуры, и далее - просто запоминаем эти же значения еще раз (чтобы они не потерялись при вычислении НОД):
C := A;
D := B;
Guest
Объясните плиз....что я сделал не правильно.....пишет ошибка номер 200....

Program myNOK;
uses Crt;
var a,b,c,d,NOD:integer; NOK:real;
Begin
WriteLn('Введите первое число');
read( a );
a:=c;
WriteLn('Введите второе число');
read( B );
b:=d;
While c<>d do
if c>d then c:=c-d else d:=d-c;
d:=NOD;
Writeln('НОК равен ----> ',NOK,'');
readln;
Repeat until keypressed;
end.

volvo
Ошибка №200 - это "непропатченный" модуль CRT... Читай здесь Ошибка 200 (и попробуй поискать по форуму: ключевое слово - "пропатченный")
-Slim-
Я всё пропатчил....ничего не изменилось....я думаю что ошибка в коде.....потому что всё остальное у меня работает.....
AlienEmperor
Это же можно легко проверить: убери из проги Uses Crt и, соответственно Repeat Until Keypressed... Будет работать - ОК, значит CRT, не будет - глючит компилятор....
volvo
-Slim-,
не будет это работать... Смотри:
Program myNOK;
uses Crt;
var a,b,c,d,NOD:integer; NOK:real; { <-- NOK вещественный ??? }
Begin
WriteLn('Введите первое число');
read( a );
a:=c;
WriteLn('Введите второе число');
read( B );
b:=d;
While c<>d do
if c>d then c:=c-d else d:=d-c;
{ До этого момента проблем быть не должно }
d:=NOD; { <-- Здесь: откуда берется NOD? Каково его значение? }
Writeln('НОК равен ----> ',NOK,''); { <-- Здесь: NOK?}
{ А что ему присваивали, чтобы его печатать }
readln;
Repeat until keypressed;
end.


Но и ошибки 200 здесь тоже быть не должно... Ну нет здесь деления на 0...
-Slim-
Убрал.....всё равно не работает....всё таже ошибка 200.
А код то я правильно написал???????
volvo
А вообще-то NOK вычисляется вот так:
Program myNOK;
var
a,b,c,d,NOD,NOK:integer; { все значения целые !!! }
Begin
WriteLn('Введите первое число'); readln( a );
c := a; { <-- не наоборот, а именно так !!! }
WriteLn('Введите второе число'); readln( B );
d := b; { <-- здесь тоже !!! }

while(c*d <> 0) do
if c < d then d := d mod c else c := c mod d;
NOD := c + d;

NOK := a*b div NOD; { div потому что NOK должен быть целым }
Writeln('НОК равен ----> ',NOK);
readln;
end.
Guest
Спасибо!
А по тому алгоритму что я в самом начале написал...реально что-нибудь составить???
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.