Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с задачей с циклом For i:=N downto 1 do
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lutan
Элементы заданного массива B(N) переписать в новый массив A(N) в обратном порядке
klem4
Твоих попыток что-то не видно ... с чем проблемы ? С вводом массива ? Алгоритм практически весь в заголовке твоей темы написан.

Массивы. Матрицы. Типичные задачи.
Гость
ну т.е.
сначала раписал массив как B(n) как For i:=1 to N do
потом A(n) как For i:=N downto 1 do B[i]:=A[N-i+1]
но что-т не получается задача)
klem4
вводишь массив A, а потом
for i := n downto 1 do
b[i] := a[n - i + 1];


все верно ... показывай весь код
volvo
Ничего не понял... Что вводится, а что надо заполнить? Вводится B, заполняется A? Тогда
for i := n downto 1 do
a[i] := b[n - i + 1];

Гость

type mas=array [1..20] of real;
var
A, B: mas;
i,N: integer;
begin
write('Vvedite N');
readln(N);
for i:=1 to N do begin
Write('A[',i,']=');
readln(A[i]);
end;
for i:=N to 1 do B[i]:=A[N-i+1];
writeln;
writeln(A[i],'');
readln
end.

Гость
посидел над программкой.
вот что в итоге получилось:

var
I, N: integer;
A,B:array [1..50] of integer;
begin
Write('Vvedite kol-vo 4isel v massive, N=');
Readln(N);
for i:=1 to n do
begin
write('Vvedite A[',i,']=');
readln(A[i]);
end;
for i:=n downto 1 do A[N-i+1]:=B[i];
write(B[i],' ');
readln;
end.

но ответ выводит не тот, который нужен. выводит всего 0, а не массив в обратном порядке. если же рассматривать задачу с одним массивом, то всё отлично работает:
var
I, N: integer;
A:array [1..50] of integer;
begin
Write('Vvedite kol-vo 4isel v massive, N=');
Readln(N);
for i:=1 to n do
begin
write('Vvedite A[',i,']=');
readln(A[i]);
end;
for i:=n downto 1 do
write(A[i],' ');
readln;
end.



кто-нибудь может помочь?)) плз)
Айра
Цитата
но ответ выводит не тот, который нужен. выводит всего 0

Естесственно, смотри:

readln(A[i]); //ты заполняешь массив А, хотя по заданию надо В..
end;
for i:=n downto 1 do A[N-i+1]:=B[i]; //а тут ты ему же присваиваешь значения из массива В,
//который пока что состоит из нулей
write(B[i],' '); //и выводишь ты в не цикла (begin\end вроде еще не отменяли)))


Должно быть так:
var
i, n: integer;
A,B:array [1..50] of integer;
begin
Write('Vvedite kol-vo 4isel v massive, N=');
Readln(n);
for i:=1 to n do
begin
write('Vvedite B[',i,']=');
readln(B[i]); //заполняешь массив _В_
end;
for i:=n downto 1 do
begin
A[n-i+1]:=B[i];
write(A[n-i+1],' '); //и выводить нужно с таким индексом, иначе, при A[i] ты выводишь
// элементы, которые еще не заполнены, то бишь нули
end;
readln;
end.
Гость
оо)
огромное спасибо)
Гость
Цитата(Lutan @ 16.01.2008 19:00) *

Элементы заданного массива B(N) переписать в новый массив A(N) в обратном порядке

Я решил эту задачу так решил...вроде работало...посмотри....

program Demo;
uses
crt;
var
a,b:array [1..10] of integer;
i:integer;
begin
clrscr;
writeln('a[i]>');
for i:=1 to 10 do
readln(a[i]);
for i:=10 downto 1 do
begin
b[i]:=a[10-i+1];
writeln('b[i]',b[i]);
end;
readln;
end.


Гость
[quote name='Гость' date='26.01.2008 23:47' post='119317']
Я решил эту задачу так решил...вроде работало...посмотри....

program Demo;
uses
crt;
var
a,b:array [1..10] of integer;
i:integer;
begin
clrscr;
writeln('a[i]>');
for i:=1 to 10 do
readln(a[i]);
for i:=10 downto 1 do
begin
b[i]:=a[i];
writeln('b[i]',b[i]);
end;
readln;
end.


Yevgeny
[quote][quote name='Гость' date='26.01.2008 23:47' post='119317']
Я решил эту задачу так решил...вроде работало...посмотри....

program Demo;
uses
crt;
var
a,b:array [1..10] of integer;
i:integer;
begin
clrscr;
writeln('a[i]>');
for i:=1 to 10 do
readln(a[i]);
for i:=10 downto 1 do
begin
b[i]:=a[i];
writeln('b[i]',b[i]);
end;
readln;
end.
[/quote]

Бред, бред, бред... blum.gif
Айра
for i:=10 downto 1 do
begin
b[i]:=a[10-i+1]; //присваивание правильное
writeln('b[i]',b[i]); //а вывод нет.. у тебя массив В выводится с конца, а тогда похоже,
//что заполнен он не правильно
end;


for i:=10 downto 1 do
begin
b[i]:=a[i]; //а здесь ты заполняешь его неправильно.. он получается такой же как А
writeln('b[i]',b[i]); //а на выводе "обманываешься"))
end;

сделай в обоих вариантах вывод массива В "вне" цикла с присваиванием и посмотри, где правильно, а где нет..
и еще.. если тебе нужно видеть номер выводимого элемента, а не красивую буковку i smile.gif, то надо делать так
writeln('b[',i,']',b[i]); //тогда и ошибки увидишь
Гость
А вот теперь точно правильно...Спасибо за комментарии..я понял свои ошибки...

uses
crt;
var
a,b:array [1..10] of byte;
i:integer;
begin
clrscr;
write('b[i]>');
for i:=1 to 10 do
readln(b[i]);
for i:=10 downto 1 do
begin
a[10-i+1]:=b[i];
end;
for i:=1 to 10 do
writeln(a[i]);
readln;
end.

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