Помощь - Поиск - Пользователи - Календарь
Полная версия: Что я пропустил?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DarkWishmaster
Program Multime; uses crt;                                                    
const Nmax=100;
type vector=array [1..Nmax] of integer;
var a,b,c:vector; i,j,n,m:integer;
begin ClrScr;
writeln('Length:'); read(n);
writeln('First vector data:');
for i:=1 to n do begin
write('a[',i,']='); read(a[i]);
end;
writeln('Second vector data:');
for j:=1 to n do begin
write('b[',j,']='); read(b[j]);
end;
for m:=1 to 2*n do
for i:=1 to n do
for j:=1 to n do begin
if m mod 2<>0 then c[m]:=a[i]
else c[m]:=b[j];end;

writeln('Vectors');
writeln('first vector:');
for i:=1 to n do begin
write(a[i], ' '); end;writeln;
writeln('second vector:');
for j:=1 to n do begin
write(b[j], ' '); end; writeln;
writeln('Resulting third vector:');
for m:=1 to 2*n do begin
write(c[m], ' ');
end;
readln;
readln;
end.


Вообщем програма должна заполнять два вектора n<=100 любыми числами, потом создать третий вектор 2n и заполнять все его четные поля числами из вектора B и нечетные числами из вектора A;
но тут так заполняет :
n:=5;
1 vector: числа 1,5,3,4,6;
2 vector: числа 3,5,3,21,6,7;
resulting: 6 7 6 7 6 7 6 7 6 7 (повторяються последнеe число из обоих векторов)


DarkWishmaster
всё разобрался ) оказываеться это из за того что неправильно алгоритм составил, вот придумал новый работоспособный:
if m mod 2<>0 then c[m]:=a[m div 2 +1]
else c[m]:=b[m div 2];

Извините, сначала надо было самому думать часок другой а потом уже по форумам, просто завтра что-то типа экзамена и готовиться надо )
Lapp
Цитата(DarkWishmaster @ 14.12.2010 17:03) *
всё разобрался ) оказываеться это из за того что неправильно алгоритм составил, вот придумал новый работоспособный:
if m mod 2<>0 then c[m]:=a[m div 2 +1]
else c[m]:=b[m div 2];

Извините, сначала надо было самому думать часок другой а потом уже по форумам, просто завтра что-то типа экзамена и готовиться надо )

Тут нет никакой нужды в распознавании четности номера, поскольку они строго чередуются. Вот так проще:
for i:=1 to n do begin
c[2*i-1]:=a[i];
c[2*i]:=b[i]
end;

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


Добавлено через 2 мин.
Да, и совершенно никакой нужды извиняться )). Тут всегда рады нормальному разговору по делу.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.