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

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

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

 
 Ответить  Открыть новую тему 
> Что я пропустил?, Не работает нормально програма.
DarkWishmaster
сообщение 14.12.2010 16:41
Сообщение #1


Бывалый
***

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

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


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 число из обоих векторов)


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 14.12.2010 17:03
Сообщение #2


Бывалый
***

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

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


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

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

Сообщение отредактировано: DarkWishmaster - 14.12.2010 17:03
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 14.12.2010 21:45
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(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 мин.
Да, и совершенно никакой нужды извиняться )). Тут всегда рады нормальному разговору по делу.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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