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

 

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