IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Затруднения с циклами
Vaso
сообщение 13.12.2005 20:15
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Vasya

Репутация: -  0  +


Кто-нибудь может мне помочь сотавить алгоритм по задаче, т.к. я только начал учиться писать на Паскале:
Требуется подсчитать количество цифр больших 9, у натурального числа N в шестнадцатиричной
системе счисления.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 13.12.2005 20:22
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


uses crt;
const
D : array[0..5] of byte = (10,11,12,13,14,15);
var
s: string;
i,temp,count,n : LongInt;
begin


clrscr;

write('Hex = '); readln(s);

n := length(s);

writeln;
count := 0;
for i := 1 to n do begin
if s[i] in ['A'..'F'] then
temp := D[ord(s[i])-65]
else
temp := ord(s[i])-48;

temp := temp * round(exp((n-i) * ln(16)) );

writeln(temp);

if temp > 9 then inc(count);

end;

writeln;
writeln(count);


readln
end.



Сообщение отредактировано: klem4 - 13.12.2005 21:05


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.12.2005 20:31
Сообщение #3


Гость






Угу... И я введу '123af'
dry.gif
 К началу страницы 
+ Ответить 
klem4
сообщение 13.12.2005 21:06
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Кажись поправил unsure.gif

пс защиты от дурака нету. и буквы бльшие надо вводить, ну если надо, можно сделать патч smile.gif)

Сообщение отредактировано: klem4 - 13.12.2005 21:11


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Vaso
сообщение 14.12.2005 16:33
Сообщение #5





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Vasya

Репутация: -  0  +


Помогите найти ошибку в программе:
Требуется вычислить сумму ряда с погрешностью e=0.0001 в окрестности точки 0,
т.е. при |x|<1; y=x/2-x*x/(2*2*2)+x*x*x/(2*2*2*3)-x*x*x*x/2*2*2*2*4+....
Сама программа у меня получилась такая:
Код
const e=0.0001;
Var  y,slag,x,p:real;
         k,b:byte;
Begin
repeat
writeln ('Vvedite |x|<1);
readln (x);
until abs(x)<1;
y:=0;
p:=-1;
b:=1;
k:=0;
slag:=x/2;
While abs(slag)>=e do
begin
k:=k+1;
b:=b*1;
p:=-p*x;
slag:=p/(b*k);
y:=y+slag;
writeln ('znachenie slag na etapax ',slag:6:4);
end;
writeln ('Znachenie summi ',y:6:4);
end.

При малых числах все верно вычисляет, но при 0.9, 0.8 выдает ошибку деления на 0.
Не могу понять, где она видит деление на 0 при вычислении slag.


Спасибо всем за помощь с первой задачей! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.12.2005 16:51
Сообщение #6


Гость






Перед тем, как решать подобные задачки, тебе надо вывести формулу общего члена последовательности... В данном случае
Код
                    X^n
  Xn = (-1)^n * ------------
                 (2^n) * n
А теперь приступай к вычислениям...

Вот так ничего не вылетает:
const
eps = 0.0001;
Var
n, sign: integer;
x, s, next: real;

begin
repeat
write('Vvedite |x| < 1 ');
readln(x);
until abs(x)<1;

sign := 1; n := 1;
next := x / 2;
s := next;
repeat
next := next * x / 2;
inc(n); sign := -sign;
s := s + (sign * next / n)
until (next / n) < eps;

writeln('s = ', s:10:7);
end.
 К началу страницы 
+ Ответить 
Vaso
сообщение 15.12.2005 8:11
Сообщение #7





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Vasya

Репутация: -  0  +


Спасибо volvo!
Все работает good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 13:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"