Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [c++]Пример программы с использованием массивов


Автор: Alyonka_v 29.7.2008, 19:22
Здравствуйте! Пытаюсь изучать Си по книге Е.М.Демидовича "Основы алгоритмизации и программирования. Язык Си".  Когда одну из задач компилировала в Borland C++ ошибки не возникло, но во время запуска программы и ввода данных указанных в книге для проверки работоспособности программы, прпограмма зависает... 
/* Ввести 2 массива целых чисел. Второй массив упорядочен в порядке убывания. Определить, какие числа первого массива принадлежат и второму массиву. */
/* Ввод: k1-?2  4 7         k2-?3  7 5 2
Вывод: 7 is found */
Код

#include<iostream.h>
#include<conio.h>
void main()
{
  clrscr();
  int a[100],b[100];
  int i,j,k,k1,k2,l,r;
  cout<<"k1-?"; cin>>k1;
  for(i=0;i<k1;i++)
  cin>>a[i];
  cout<<"\n k2-?"; cin>>k2;
  for(i=0;i<k2;i++)
  cin>>b[i];
  for(i=0;i<k1;i++)
    {
      l=0; r=k2;
      while(r>=1)
    {
      k=(l+r)/2;
      if(a[i]>b[k]) r=k-1;
      else if(a[i]<b[k]) l=k+1;
      else
        {
          cout<<a[i]<<" is found \n"; break;
        }
    }
    }
  cout<<"\n";
}

Автор: volvo877 30.7.2008, 09:25
Alyonka_v, в строке
Код

      while(r>=1) 

у тебя опечатка... Сравнивать R надо не с единицей, а с L (строчная L очень похожа на единицу, правда? smile  ) ... 

Автор: HoTMetaL 30.7.2008, 09:38
Цитата(volvo877 @  30.7.2008,  09:25 Найти цитируемый пост)
строчная L очень похожа на единицу, правда?


Если в книге так напечатали, то авторам "-1". Нам на первом курсе на эту тему лекцию читали, какие переменные нельзя использовать, среди них l и o, так как можно перепутать с 1 и 0. Что собственно и произошло.

Автор: mrbrooks 30.7.2008, 15:37
Видимо преподы сами учились по этой книжке  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)