Помощь - Поиск - Пользователи - Календарь
Полная версия: Минуточку внимания!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Незнайка 013
Задачка следующая: Дано натуральное число n и действительное число a. Получить последовательность В1,....,Вn, где при i=1,2,...,n значение Вi равно а в степени i.
program one;
var
n,i :integer; x,a: reai;
begin
writeln ('введите числа n и a');
write ('n='); readln (n); write ('a='); readln (a);
for i:=1 to n do
begin
a:=exp (i*ln(a)); x:=a;
end;
write (x[i]:6:2,' ');
end.
Что я неправильно сделал? помогите пожалста...
Странник
Ты в пинципе все сделал, чтобы получить последовательность чисел тебе нужно было описать массив из вещественных чисел. Смотри код.

program one;
uses
crt;
var
n,i:integer;
a,x:real;
b:array [1..100] of real; //чтобы получить последовательность чисел нужно использовать массивы

begin
clrscr;
writeln ('Ввести числа n и a');
write ('n='); readln (n); write ('a='); readln (a);
for i:=1 to n do
begin
x:=exp(i*ln(a));

b[i]:=x; // записываешь результат вычисления в массив

write (b[i]:6:2,' '); //выводишь массив в цикле
end;
readln;
end.


volvo
Цитата
x:=exp(i*ln(a)); 
Это здесь не нужно совершенно. Есть предыдущее значение, из него вычисляй текущее. Лишние вычисления - зло...

О том, что резервировать место для 100 элементов массива, даже если тебе понадобится всего 5 из них, это некорректно - я уже говорил, но как видно, это всем по фигу...

Добавлено через 1 мин.
Цитата
чтобы получить последовательность чисел тебе нужно было описать массив
Чтобы получить последовательность массив не нужен. Он нужен, чтобы сохранить эту последовательность. Чувствуешь разницу?
Незнайка 013
Премного благодарен!!!
Еще можно?
задачка: Даны натуральные числа n,A1,A2,...,An. Определить количество членов Ак последовательности А1,...,Аn, кратных 3 и некратных 5. Опять моя програмка не работает.
program pyat;
var
x:array [1..200] of integer;
i,k,n: integer;
begin
write ('введите n<=200'); readln (n);
for i:=1 to n do
begin
write ('x[' ,i, ']= ');
readln (x[i]);
end;
k:=0;
for i:=1 to n do
if i mod 3=0 and mod 5<>0 then
begin
k:=k+1;
end;
writeln (k);
end.
Чего опять я нето написал?
Странник
Цитата(volvo @ 17.03.2008 16:06) *

Это здесь не нужно совершенно. Есть предыдущее значение, из него вычисляй текущее.


это всмысле вот так

 b[i]:=exp(i*ln(a)); 


или как то по другому?

andriano
Цитата(Странник @ 17.03.2008 14:25) *

это всмысле вот так

 b[i]:=exp(i*ln(a)); 


или как то по другому?

Это в смысле:
b := b*a;
Причем, b - не массив, а простая переменная, что избавляет сразу от двух неприятностей:
1. Нерационального использования памяти.
2. Возможности порчи памяти при выходе за границы массива, если запрошенное n окажется больше 100.
Странник
Цитата(andriano @ 17.03.2008 17:24) *

Это в смысле:
b := b*a;
Причем, b - не массив, а простая переменная, что избавляет сразу от двух неприятностей:
1. Нерационального использования памяти.
2. Возможности порчи памяти при выходе за границы массива, если запрошенное n окажется больше 100.


Имелось ввиду что то наподобие вот этого?

b:=1;
for i:=1 to n do
b:=b*a;
end;


Michael_Rybak
М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
6. Одна тема - один вопрос (задача)



Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.