Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пример программы с использованием массивов, возможно в книге опнчатка??? 
:(
    Опции темы
Alyonka_v
Дата 29.7.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 23.12.2006
Где: Latvia, Daugavpil s

Репутация: нет
Всего: нет



Здравствуйте! Пытаюсь изучать Си по книге Е.М.Демидовича "Основы алгоритмизации и программирования. Язык Си".  Когда одну из задач компилировала в 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";
}

PM MAIL WWW ICQ   Вверх
IKM2007
Дата 29.7.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Пошагово пройди этот кусочек кода.
Код

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;
        }
    }
    }


Цитата

1.)r=3;l=0;
k=1;
4<5;true;
{l=2;}
2.)r=3;l=2;
k=2;
4>2;true;
r=1;
3.)r=1;l=2;
k=1;
4<5;true;
l=2;//вот отсюда начинается бесконечный цикл...
4.)r=1;l=2;
k=1;
4<5;true;
l=2;
5.)...




--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
compiler91
  Дата 29.7.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

Репутация: нет
Всего: нет



Попробуй как-то так:
Код

for(i=0;i<k1;i++){
        l=0; r=k2;
        k = round((l+r)/2);         /*для round нужна библиотека cmath или math.. */
        while( (k!=l && k!=r) && b[k]!=a[i] ){
                if( a[i]>b[k] ) r=k;
                        else if(a[i]<b[k]) l = k;
                k = round((l+r)/2);
        }
        if (b[k]==a[i]) cout<<a[i]<<" is found \n";
}

А вообще Си этого Демидовича какой-то не сишный smile 

Это сообщение отредактировал(а) compiler91 - 29.7.2008, 21:28
PM MAIL   Вверх
Alyonka_v
Дата 30.7.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 23.12.2006
Где: Latvia, Daugavpil s

Репутация: нет
Всего: нет



Я опечаталась в строке  while(r>=1)   там должно быть не 1(odin) а l (bukva l )  , тогда всё работает...  smile 
PM MAIL WWW ICQ   Вверх
Necias
Дата 30.7.2008, 11:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 7.4.2006

Репутация: нет
Всего: 2



мораль (скорее для автора книги) - давать переменным нормальные имена  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.