Пятница, 18.10.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Гостевая книга [ Добавить запись ]

Страницы: « 1 2 ... 16 17 18 19 20 ... 123 124 »
Показано 256-270 из 1848 сообщений
1593. Julia   (27.04.2008 15:33)
0  
помогите пожайлуста решить задачки....
1)дано натуральное число, удалить все цифры А(А вводится с клавиатуры)
2)найти все числа от 1 до 200,у которых количество делителей равно N(N вводится с клавиатуры)
3)найти сумму чисел от 1 до 200,у которых 5 делителей.
заранее благодарна.....)
Ответ: Скачайте исходный код программы - решения задачи у нас на сайте в разделе "Простые программы" № 51

1592. red-white   (26.04.2008 08:40)
0  
Я не уверен, что прошлое сообщение до вас дошло, поэтому отправлю ещё раз
мой адрес tema290292@yandex.ru

1591. Павел   (25.04.2008 18:09)
0  
здравствуйте! помогите пожалуйста решить задачки:
1)Дано натуральное число:
а)сколько чётных цифр в данном целом числе;
б)верно ли, что в данном числе встречаются цифры А и В (А и В вводятся с клавиатуры).


пожалуйста опишите все подробно и самым легким способом! заранее спасибо!
Ответ: Вот, пожалуйста, с проверкой ввода исходного числа
========
VAR
src, A, B, k: Longint;
nums: array[0..9] of Integer;
even_count: Integer;
isA, isB: Boolean;
ch: Char;
BEGIN
repeat
Write(''Введите исходное целое число: '');
{$I-} ReadLn(src); {$I+}
k := IOResult;
if k <> 0 then WriteLn('' Ошибка ввода! Попробуйте еще раз'')
until k = 0;
k:=src; {save}
repeat
inc(nums[k mod 10]);
k := k div 10;
until k = 0;
for k:=0 to 9 do if nums[k] <> 0 then WriteLn(k:2,'' '',nums[k]);
even_count := 0; {число четных}
for k := 0 to 9 do
if NOT odd(k) then inc(even_count, nums[k]);
WriteLn(''В числе '',src,'' количество четных цифр = '',A);
Write(''Введите число A: '');
repeat
ch := ReadKey;
until ch in [''0'' ..''9''];
WriteLn(ch);
VAL(ch, A, even_count);
Write(''Введите число B: '');
repeat
ch := ReadKey;
until ch in [''0'' ..''9''];
WriteLn(ch);
VAL(ch, B, even_count);
isA := nums[A] <> 0;
isB := nums[B] <> 0;
WriteLn(''Насчет A: '',isA,'', насчет B: '',isB);
END.
Или скачайте исходный код у нас на сайте в разделе "Простые программы" № 49

1590. Юлия   (25.04.2008 17:52)
0  
Здравствуйте!Помогите решить задачу...
1.Найти все натуральные числа a, b и c из интервала от 1 до 20, для которых выполняется равенство: a*a + b*b = c*c.
Ответ: Вот так это можно сделать:
=====
VAR
a, c: Integer;
b: Real;
BEGIN
{Самым простым способом - перебором, хотя есть методы и получше}
for c := 1 to 20 do
for a := 1 to c-1 do
begin
b := SQRT(c*c - a*a);
if int(b) = b then
WriteLn(''a = '',a:3,'', b = '',b:3:0,'', c = '',c:3,
'': '',
a*a:6,'' + '',b*b:6:0,'' = '',c*c:6);
end;
END.
Исходный код можно скачать на нашем сайте в разделе "Простые программы" №50

1589. Павел   (25.04.2008 08:34)
0  
Здравствуйте! помогите пожалуйста решить мне две задачи, а то я немогу из решить да же нет не каких мыслей!
1 Найти сумму чётных делителей натурального числа.
2Найти все равновеликие прямоугольные треугольники, катеты которых выражены целыми числами a и b, а площадь равна S (a и b принадлежит интервалу от 1 до 20, а S вводится с клавиатуры).
Ответ: Это не сложно :)
Первая:
VAR
Num, k, count, Sum: Word;
BEGIN
Write(''Введите целое положительное число: ''); ReadLn(Num);
Sum := 0;
count:=0; {Подсчитывает число делителей. Фактически: простое ли?}
for k:=2 to Num-1 do
if Num mod k = 0 then begin
count := count +1;
if NOT odd(k) then Sum := Sum + k;
end;
if (count = 0) and (Num > 1) then WriteLn(''Число '',Num,'' - простое'')
else WriteLn(''Сумма четных делителей равна '',Sum);
END.
-----------
Вторая:
VAR
b: Real;
a, S, count: Word;
BEGIN
Write(''Введите площадь треугольника S: ''); ReadLn(S);
count:=0; {Число "таких" прямоугольников - а вдруг нет вообще}
if S > 1 then
for a:=1 to 20 do
begin
b := S - a*a;
if b > 0 then begin
b:=SQRT(b);
if trunc(b) = b then {b- целое}
begin
inc(count);
WriteLn(a:2,'' '',b:4:0);
end
end;
end;
if count = 0 then WriteLn(''Треугольников нет'');
END.

1588. Gonz   (24.04.2008 19:00)
0  
Спасибо, буду пробовать=)
"а в моем примере именно ROUND"
при округлении числа 23568,9 получится 23569, т.е уже отличается от "оригинала". а trunc ведь просто отбросит дробную часть.
Ответ: :) Таки округлять нужно. Я убедился в этом, когда сам графики рисовал и деления наносил. Вот именно ТАМ эта задача нужна практически - автоматически определить цену деления

1587. red-white   (24.04.2008 08:55)
0  
Здравствуйте. У меня такой вопрос. Где можно взять руские шрифты для графического режима Паскаля. А то у меня в текстовом формате с русским языком работать можно, а в графическом нет
Ответ: Есть у меня. Есть и программа, которая позволяет редактировать BGI-шрифты. Напишите, куда прислать.
---
ЗЫ: Ваше сообщение не буду активизировать, так что спамерам Ваш адрес обломится :)
Уж больно много их пытается у нас разместить свою фигню

1586. Gonz   (23.04.2008 19:03)
0  
А если при помощи прерывания 10h переключить активную страницу, то write и writeln будут работать с ней или с 0-ой? просто я щас пробовал сделать другую страницу активной, то там ничего не выводилось.
asm
mov ah, 05h;
mov al, 1;
int 10h;
end;
вот если так переключать.
Ответ: Если используется стандартная процедура Write (WriteLn), то это и не может привести к хорошему результату: я уже писал, что во всех функциях вывода $10-го прерывания номер страницы для отображения указывается ЯВНО (обычно в регистре BH). Так что во Write "зашита" нулевая страница

1585. Gonz   (23.04.2008 18:38)
0  
Спасибо большое.
а вот по какому адресу находятся остальные 7 страниц?
Кстати, насчет предыдущего поста Евгения - то лучше использовать вместо round - trunc.
Ответ: :) Я не разбирал его программу - а в моем примере именно ROUND. Все остальное может дать неправильное округление

Адреса вычисляются так: $B800:0000 - нулевая (под Windows рекомендуется использовать не $B800, а константу SegB800 - ее действительное значение определяется при запуске программы. Так написано, но пока я всегда находил именно там). Размер страницы 80*2*25 = 4000. То есть с адреса SegB800:4000 начинается вторая, и т.д. ...

1584. Евгений   (23.04.2008 17:52)
0  
Спасибо Вам, Борис, за ответ!

Действительно, просто.

...А к чему программа - не очень понял
......Да, собственно в виде иллюстрации, примера, так сказать...

1583. Евгений   (23.04.2008 13:53)
0  
Здравствуйте, Борис!
Подскажите, пожалуйста, есть ли в Паскале функция округления числа до конкретного количества знаков после запятой.
Например, число 2,356897111022 округлить до четвертого знака после запятой, т.е для расчета получить число 2,3569.
В данном случае получается, просто надо отбросить лишние значения.
==================================================================
Программа работает, но уж очень большую погрешность расчетов имеет
(массивы использовать нельзя - условие такое)
==================================================================
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
{ найти сумму N элементов поледовательности:
X(i)=0.7X(i-1)^3+0.3X(i-2)-0.1X(i-3)
при X(0)=X(1)=X(2)=1

X(i-1) и др. - это так обозначил индекс
}
Program Summa;
Uses CRT;
Const
N = 7;
Var
sum, d, Q, R, Z : Real;
i : integer;
BEGIN
Q := 1; R := 1; Z := 1; sum := 0;
For i := 1 to N do begin
d := 0.7*sqr(Q)*Q+0.3*R-0.1*Z;
sum := sum + d;
R := Q; Z := R; Q := d;
WriteLn(''***********************'');
WriteLn(''Promezhutochnoe d '',d:9:8);
WriteLn(''Promezhutochnya summa '',sum:9:8);
WriteLn(''***********************'');
end;
WriteLn(''Summa '',N,'' elementov sostavlyaet '',sum:9:8);
WriteLn(''================================================'');
ReadKey
END.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ответ: На самом деле очень просто:
a := round(a * 1000)/ 1000;

В вашем случае:
a := round(2,356897111022*10000)/10000;
--
А к чему программа - не очень понял

1582. Gonz   (22.04.2008 20:25)
0  
Так что с моим вопросом?
Ответ: Времени было мало :(
Ответ вот: в том текстовом режиме, который среда разработки Borland Pascal (Turbo.exe - это тоже) использует, имеется 8 видеостраниц. Причем программа, написанная здесь, имеет доступ только к первой (номер 0).
Средств работы с ними в Borland Pascal не предусмотрено. (Выбор активной видимой (отображаемой) страницы делает функция 5 прерывания 10h. Все функции вывода этого прерывания требуют указывать, на какую видеостраницу следут направить вывод). Повторюсь, в Паскале вывод только на первую (нулевую).
Так что, либо использовать ассемблерные вставки, либо использовать память, отведенную под эти страницы, по своему усмотрению. Например, так формировать какой-то образ, а потом переносить его на видимую нулевую.
Я как-то "копал" исходники и выяснил, что именно так восстанавливается изображение, которые было закрыто выпадающим меню, другим окном ....
Вот простой пример: вывожу нечто на экран. После нажатия клавиши стираю. После еще одного нажатия восстанавливаю:
------
uses CRT;
var x, y, size: Word;

BEGIN
TextAttr:=7;
ClrScr;
size := (80*2)*25; {Узнаешь цифры?}

WriteLn(''asdjkfjsdljkfhl'');
TextColor(green);
WriteLn(''1265'');
GotoXY(20,13);
TextBackground(lightred);
TextColor(white);
WriteLn(''ggggggg'');
MOVE(Ptr(SegB800, 0)^, Ptr(SegB800, size+1)^, size);
x:=WhereX; y:=WhereY;
ReadKey;
ClrScr;
ReadKey;
MOVE(Ptr(SegB800, size+1)^, Ptr(SegB800, 0)^, size);
GotoXY(x,y);
ReadKey
END.

1581. Gonz   (20.04.2008 21:46)
0  
Здраствуйте.
У меня такой вопрос:
есть ли в текстовом режиме видео-страницы(если конечно их можно так назвать)? если есть, то как с ними работать?

1580. Рябикин Геннадий   (20.04.2008 11:29)
0  
Я отправлял программу написаную мной! И текст её написания! Там указано моё имя вы поместили её на сайт? Как мне узнать? И Куда? Её название KK.
Вот код:
program KK;

var

a,x,b,c:real;

begin

writeln(''Автор: Рябикин Геннадий'');

writeln(''Что бы программа извлекала корень введите (1), что бы возводила в квадат введите (2)'');

write(''Enter='');read(x);

while x=1 do

begin

writeln(''Программа будет извлекать корень'');

write(''Введите число='');read(b);

a:=(sqrt(b));

write(''Корень из '');write(b:6:2);write('' Равен='',a:6:2);

readln(c);

end;

while x=2 do

begin

writeln(''Программа будет возводить в квадат'');

write(''Введите число='');read(b);

a:=(sqr(b));

write(b:6:2);write('' в квадрате='',a:6:2);

readln(c);

end;

end.
Ответ: Программа слишком простая. И кроме того, если сначала введем "1"Б а потом "4", то выполнится и возведение в квадрат, чего явно не желали
Такие вещи нужно делать, по крайней мере, через CASE

1579. Евгений   (17.04.2008 14:24)
0  
Здравствуйте, Борис!
Перешел к изучению функций и процедур, ну и сразу же вопросик:
написал минипрограммку, а в ней что-то напутал, помогите разобраться, пожалуйста.
=============
=============
Дана целочисленная прямоугольная матрица.
Определить:
Количество строк, не содержащих ни одного нулевого элемента
(оформить в виде функции, результат подпрограммы вывести в главной программе)

===========================
Program Var1;
Uses CRT;
Const
N=5; M=7;
Type
mas = array[1..N,1..M] of integer;
Var
a : mas;
f_in : text;
i, j : integer;
{---------------------------------------------}
Function nol(const L:mas):integer;
Var
i, j, k : integer;
Begin

For i:=1 to N do
k:=0;
For j:=1 to M do begin
if L[i,j] <> 0 then inc(k);
nol:=k;
end
end;

{---------------------------------------------}
Begin
{$I-}
assign(f_in,''e:PAStext2.txt'');
reset(f_in);

if IOResult <> 0 then begin
WriteLn(''Файл text2.txt не найден''); exit;
end;
{$I+}

For i:=1 to N do
For j:=1 to M do Read(f_in,a[i,j]);

if nol(a) <> 0 then writeln(''Строк без нулей - '',nol(a));
if nol(a) = 0 then writeln(''Строк без нулей нет'');

ReadKey
end.

==========================================================
==========================================================

Сама матрица:
1 1 1 1 1 1 1
0 2 2 2 2 2 2
3 3 3 3 3 3 3
4 0 4 4 4 4 4
5 5 5 5 5 5 5
====================
У меня получается 7

------------ Евгений -----------
Ответ: В таких случаях рекомендуется пройтись с ручкой в руках (самому выполнить все действия). Можно, конечно, с помощью отладчика, нажимая F7 и наблюдая, как изменяются переменные при выполнении строчек программы. Удобно нажав Crtl+F7 установить, как это по-русски, наблюдателя, что-ли за значением переменной.
В подпрограмме это k, i, j.
Тогда сразу поймете, что 7 - это ЧИСЛО НЕНУЛЕВЫХ ЭЛЕМЕНТОВ В ПОСЛЕДНЕЙ СТРОКЕ МАТРИЦЫ!!!
Сумеете сами исправить дефект? Подсказка: нужна еще одна переменная


Имя *:
Email *:
WWW:
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2024
    Конструктор сайтов - uCoz