Вернуться Форум Bashtel.RU > Общение > Вопрос - ответ
Ответ
 
Опции темы Опции просмотра

помогите с програмированием
Старый 25.12.2012, 07:23   #1
Завсегдатай форума
 
Аватар для coooler
 
coooler вне форума
Регистрация: 19.09.2009
Адрес: Бирск
Сообщений: 1,048
Отправить сообщение для coooler с помощью ICQ
По умолчанию помогите с програмированием

Вообщем есть программа в бэйсике- 1 процедура сортирует массив, вторая- реализует интерполяционный поиск в нем, в с поиском как раз и трабла- почему то при выполнении программа зависаеит. вот код:
тык:
Dim x(20) As Integer, N As Integer
Private Sub Command1_Click()
N = 0: Picture1.Cls
Open "c:\A.txt" For Input As #1
While Not EOF(1)
N = N + 1
Input #1, x(N)
Wend
Close #1
d = (N \ 2)
s = d
q = 0
While q < s
For i = 1 To N - d
If x(i) > x(i + d) Then
m = x(i)
x(i) = x(i + d)
x(i + d) = m
End If
Next i
If d = 1 Then
q = q + 1
d = (N \ 2)
Else
d = (d \ 2)
If d <> 1 Then
If d Mod 2 = 1 Then
d = (d \ 2) + 1
End If
End If
End If
Wend
For i = 1 To N
Picture1.Print x(i)
Next i

End Sub

Private Sub Command2_Click()
t = Val(Text1.Text)
l = 1
r = N

While (x(r) > t) And (t <= x(l))
i = Int((r - l) * (t - x(l)) / (x(r) - x(l)))
If t < x(i) Then
l = i + 1
Else:
If t > x(i) Then
r = i - 1
Else: l = i
End If

End If


Wend
If x(l) = t Then
Picture2.Print "NAYDENO"
Else
Picture2.Print "Ne naydeno"
End If


End Sub


Private Sub mrpropper_Click()
Picture2.Cls
End Sub
  Ответить с цитированием
 

Старый 25.12.2012, 07:46   #2
Маньяк форума
 
Аватар для F0iL
 
F0iL вне форума
Регистрация: 19.05.2009
Адрес: Уфа
Сообщений: 6,299
По умолчанию

ты еще хуже отформатировать текст не мог, да?
__________________
Origin: ...почему люди бьются головой об стену? Биться об угол намного эффективнее!
Я не являюсь работником ОАО БИС и по всем связанным вопросам посылаю нафиг.
  Ответить с цитированием
 

Старый 25.12.2012, 08:15   #3
Завсегдатай форума
 
Аватар для coooler
 
coooler вне форума
Регистрация: 19.09.2009
Адрес: Бирск
Сообщений: 1,048
Отправить сообщение для coooler с помощью ICQ
По умолчанию

т.е?))
  Ответить с цитированием
 

Старый 25.12.2012, 10:54   #4
Завсегдатай форума
 
Аватар для Toyota
 
Toyota вне форума
Регистрация: 30.07.2009
Адрес: Slv
Сообщений: 1,422
Отправить сообщение для Toyota с помощью ICQ
По умолчанию

не все переменные тут,текст в виде форматированного кода
а че не 3 тема?
__________________
  Ответить с цитированием
 

Старый 25.12.2012, 12:44   #5
Завсегдатай форума
 
Аватар для coooler
 
coooler вне форума
Регистрация: 19.09.2009
Адрес: Бирск
Сообщений: 1,048
Отправить сообщение для coooler с помощью ICQ
По умолчанию

инет тупанул вот и две темы)
а переменные вроде все... я полностью вроде код скинул...
  Ответить с цитированием
 

Старый 25.12.2012, 15:14   #6
Завсегдатай форума
 
Аватар для Toyota
 
Toyota вне форума
Регистрация: 30.07.2009
Адрес: Slv
Сообщений: 1,422
Отправить сообщение для Toyota с помощью ICQ
По умолчанию

бейсик с си перепутал
хотя есть подозрения что на бейсике не много чем код отличается
__________________
  Ответить с цитированием
 

Старый 25.12.2012, 19:22   #7
Завсегдатай форума
 
Аватар для coooler
 
coooler вне форума
Регистрация: 19.09.2009
Адрес: Бирск
Сообщений: 1,048
Отправить сообщение для coooler с помощью ICQ
По умолчанию

а в чем ошибка то у меня?
  Ответить с цитированием
 

Старый 26.12.2012, 20:54   #8
Завсегдатай форума
 
MoxHypKa вне форума
Регистрация: 01.04.2006
Адрес: Уууу-ФФаааа !!!
Сообщений: 1,109
По умолчанию

Я так понимаю, массив упорядоченный.

а у тебя переменная i, случаем, не отрицательная???
Цитата:
While (x(r) > t) And (t <= x(l))
i = Int((r - l) * (t - x(l)) / (x(r) - x(l)))
x(l) >= t , значит t - x(l) <= 0;
(r - l) заведомо > 0;
(x(r) - x(l)) зависит от того, по-возрастанию или по-убыванию отсортирован массив.

Поэтому возможно получается, что i максимум = 0 или меньше 0. А как там бейсик берёт элемент из массива с отрицательным номером, я не в курсе.
Возможно, он приравнивает его =0, тогда у тебя оба if не выполняются и r никогда не меняется. Это ведёт к тому, что, если прога не нашла искомое число с первого тыка, то l зацикливается между 2 значениями, т.е. тоже, по сути, не меняется.

Отсортируй массив наоборот , либо измени знак у i принудительно.
Если не поможет, тогда не знаю.

Других предположений нет.

Последний раз редактировалось MoxHypKa; 26.12.2012 в 21:06..
  Ответить с цитированием
 
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с програмированием coooler Вопрос - ответ 0 25.12.2012 07:22
помогите плз..... micovandreu WarCraft III 4 30.08.2010 20:44
Помогите mutant Компьютеры 2 10.03.2010 14:11
Помогите!!! Denkls Сервисы сети Bashtel 0 29.06.2009 20:45
помогите -monster- Мобильники, смартфоны, КПК 2 11.07.2008 20:10



Текущее время: 12:26. Часовой пояс GMT +3.


vBulletin skin developed by: eXtremepixels
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
top of page