Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 18:37   #1
artems67
Пользователь
 
Регистрация: 17.11.2015
Сообщений: 62
По умолчанию Проблема с процедурой [PascalABC]

Условие: Составить процедуру для определения числа элементов одномерного массива, предшествующих его первому нулевому элементу (A[i]=0) . Используя данную процедуру, распечатать тот из двух заданных одномерных массивов A(n) и B(m), в котором больше элементов, предшествующих первому нулевому. При равенстве чисел таких элементов вывести на печать сообщение "Числа совпали".

Код программы:

Код:
Program Pr_11;
  uses crt;
  type mas=array [1..25] of integer;
  var A,B:mas;
      i,n,m,b1,b2:integer;
  Procedure poisk (C:mas;k:integer;var b:integer);
    var j,x:integer;
    begin
      x:=1;
      b:=0;
      For j:=1 to k do
       if (A[j]=0) and (x=1) then x:=j;
      For j:=1 to k do
       if (A[j]<>0) and (j<x) then b:=b+1;
    end;
  Begin
   Write('n= ');
    readln(n);
   Write('m= ');
    readln(m);
   writeln;
   For i:=1 to n do
    begin
      write('A[',i,']= ');
        readln(A[i]);
    end;
   writeln;
   For i:=1 to m do
    begin
      write('B[',i,']= ');
        readln(B[i]);
    end;
    writeln;
    poisk(A,n,b1);
      writeln('b1= ',b1:3);
    poisk(B,m,b2);
      writeln('b2= ',b2:3);
    If b1 > b2 then 
      For i:=1 to n do writeln('A[',i,']= ',A[i]:3);
    If b2 > b1 then 
      For i:=1 to m do writeln('B[',i,']= ',B[i]:3);
    If b1 = b2 then writeln('Числа совпали');
  End.
Что выводит программа моя(пример):



Помогите разобраться почему b2 не соответствует должному результату ? Вроде процедура норм (хоть и с костылем ввиде x), но схема рабочая, но почему для массива B(m) процедура считает результат некорректно ?
artems67 вне форума Ответить с цитированием
Старый 24.12.2015, 18:40   #2
artems67
Пользователь
 
Регистрация: 17.11.2015
Сообщений: 62
По умолчанию

*Facepalm* задал в процедуру массив С, а в цикле подпрограмма работает с массивом A из-за этого и одинаковые результаты b1 и b2. Поспешишь, людей насмешишь. Тему можно закрыть. Удалите этот стыд, пожалуйста. ((
artems67 вне форума Ответить с цитированием
Старый 24.12.2015, 20:52   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не надо. Пусть будет в назидание поколениям.
Тем паче что тут ничего стыдного не вижу. Тем более что ты самостоятельно разобрался в отличии от различных школоло.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с процедурой eymar Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 15.12.2012 01:09
Здраствуйте! проблема с процедурой. хлебец Помощь студентам 0 31.05.2011 19:23
Проблема с дочерней процедурой reser Помощь студентам 5 10.08.2010 21:03
Проблема с процедурой Gettime erazer89 Паскаль, Turbo Pascal, PascalABC.NET 0 09.09.2009 17:57
Проблема с хранимой процедурой Lion-Tiger БД в Delphi 6 08.06.2009 13:32