Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 2

Нужно найти ошибку в программе

08.09.2018, 19:07. Показов 632. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Сегодня, выискивая ошибку в программе, столкнулась с такой проблемой: w2(s) считается по формуле w2(s)=w(s-1)-2*w(s)+w(s+1). На первом шаге все w(s) равны 0, но w2(4) оказывается отличной от нуля. Стала смотреть все по порядку. Добавила две строчки: if s=3 the print w(s-1),w(s),w(s+1) и то же самое при s=4. По сути программа выводит значения w2,w3,w4 в первой строчке и w3,w4,w5 во второй, и оказывается, что w3 в этих двух строчках отличаются друг от друга (в первой строчке все w = 0 как и должно быть, а во второй w(s-1)=w(3) почему-то оказывается отличной от нуля). Подскажите, в чем проблема?

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
CLS
 
gamma = 1 'koeffizient zatuhaniya kolebanii
q0 = 100 'raspredelennaya nagruzka
bb = 100
hh = 100
E = 360000
c00 = 0
c10 = 0
nu = 0
L0 = 400 'dlina balki
mas = 100 'massa
g = 0.01 'vert masshtab
g1 = 10000
g2 = 0.000005
q = 500 / LL ' goriz masshtab
LL = 1 'kol-vo shagov
b1 = 4
b = L0 / b1 'shag integrirovaniya
EI = E * bb * hh * hh * hh / 12
c0 = c00 * bb
c1 = c10 * bb
h0 = 0
r11 = 24 * EI / b / b / b
mas1 = mas / (b1 + 1)
omega = SQR(r11 / mas1)
CONST pi = 3.141592653589793
h1 = 2 * pi / omega
h = h1 / 100
DIM Iv(L0) AS DOUBLE, k1(2 * n, 5) AS DOUBLE, z(2 * n) AS DOUBLE, z0(2 * n) AS DOUBLE, x0(2 * n) AS DOUBLE, x(2 * n) AS DOUBLE
DIM Jp(n, n) AS DOUBLE, Ip(n, n) AS DOUBLE, s1(b1 + 2), m1(L0), p(b1 + 2) AS DOUBLE, r(b1 + 2, b1 + 2), mom(b1 + 2) AS DOUBLE, w2(b1 + 2) AS DOUBLE, w(b1 + 2) AS DOUBLE, qu(b1 + 2) AS DOUBLE, r0(b1 + 2) AS DOUBLE, r1(b1 + 2) AS DOUBLE
q = 500 / LL
DIM r2(b1 + 2), r3(b1 + 2), f(b1 + 2), a(b1 + 2, LL), d(b1 + 2), v0(b1 + 2), v(b1 + 2), fs(b1 + 2) AS DOUBLE
SCREEN 12
LINE (10, 0)-(10, 400), 12
LINE (0, 200)-(600, 200), 12
LOCATE 12, 1: PRINT "0"
OPEN "w(x)" FOR INPUT AS #2
OPEN "r" FOR OUTPUT AS #1
OPEN "prog" FOR OUTPUT AS #3
 
FOR s = 1 TO b1 + 1
    w(s) = 0
    r0(s) = 0
    v0(s) = 0
NEXT s
FOR L = 1 TO LL
    v(1) = 0
    v(b1 + 1) = 0
    w(1) = 0
    w(b1 + 1) = 0
    FOR s = 1 TO b1 + 1
        s1(s) = b * s
        IF s = 1 THEN w(s) = 0
        IF s = b1 + 1 THEN w(s) = 0
        w2(s) = (w(s - 1) - 2 * w(s) + w(s + 1)) / b
        IF s = 3 THEN PRINT w(s - 1), w(s), w(s + 1)
        IF s = 4 THEN PRINT w(s - 1), w(s), w(s + 1)
        IF s = 1 THEN w2(s) = 0
        IF s = b1 + 1 THEN w2(s) = 0
        mom(s) = w2(s) * EI
        IF L = LL THEN LINE (10 + s1(s - 1) * 500 / L0, mom(s - 1) * g + 200)-(10 + s1(s) * 500 / L0, mom(s) * g + 200), 5
        IF s = 1 THEN qu(s) = qu(s + 1) ELSE qu(s) = (mom(s) - mom(s - 1)) / b
        p(s) = qu(s + 1) - qu(s)
        IF s = 1 THEN p(s) = qu(s)
        IF s = b1 + 1 THEN p(s) = qu(s)
        FOR m = 1 TO b1 + 1
            m1(m) = b * m
            r(s, m) = EXP(-nu * ABS(s1(s) - m1(m)))
            r1(s) = r0(s) + r(s, m)
            r0(s) = r1(s)
        NEXT m
        r2(s) = w(s) * r1(s) * c1
        r3(s) = r2(s) + w(s) * c0
        'LINE (10 + s1(s - 1) * 500 / L0, r3(s - 1) * g1 * 0.01 + 200)-(10 + s1(s) * 500 / L0, r3(s) * g1 * 0.01 + 200), 25
        mas1 = mas / (b1 + 1)
        fs(s) = -v0(s) * gamma * mas1
        IF s = 1 THEN fs(s) = -v0(s) * gamma * mas1 / 2
        IF s = b1 + 1 THEN fs(s) = -v0(s) * gamma * mas1 / 2
        f(s) = p(s) + r3(s) + fs(s)
        IF s = ((b1 / 2) + 1) THEN f(s) = f(s) - 10000 
        85 a(s, L) = f(s) / mas1
        IF s = 1 THEN a(s, L) = f(s) * 2 / mas1
        IF s = b1 + 1 THEN a(s, L) = f(s) * 2 / mas1
 
        IF L = 1 THEN d(s) = v0(s) * h + (323 * a(s, L)) * h * h / 360
        IF L = 1 THEN v(s) = v0(s) + (55 * a(s, L)) * h / 24
        IF L = 1 THEN GOTO 200
        IF L = 2 THEN d(s) = v0(s) * h + (323 * a(s, L) - 264 * a(s, L - 1)) * h * h / 360
        IF L = 2 THEN v(s) = v0(s) + (55 * a(s, L) - 59 * a(s, L - 1)) * h / 24
        IF L = 2 THEN GOTO 200
        IF L = 3 THEN d(s) = v0(s) * h + (323 * a(s, L) - 264 * a(s, L - 1) + 159 * a(s, L - 2)) * h * h / 360
        IF L = 3 THEN v(s) = v0(s) + (55 * a(s, L) - 59 * a(s, L - 1) + 37 * a(s, L - 2)) * h / 24
        IF L = 3 THEN GOTO 200
        d(s) = v0(s) * h + (323 * a(s, L) - 264 * a(s, L - 1) + 159 * a(s, L - 2) - 38 * a(s, L - 3)) * h * h / 360
        v(s) = v0(s) + (55 * a(s, L) - 59 * a(s, L - 1) + 37 * a(s, L - 2) - 9 * a(s, L - 3)) * h / 24
        200 v0(s) = v(s)
        w(s) = d(s)
        IF L = LL THEN PRINT #3, w(s)
        IF L = LL THEN LINE (10 + s1(s - 1) * 500 / L0, w(s - 1) * g1 + 200)-(10 + s1(s) * 500 / L0, w(s) * g1 + 200), 2
     NEXT s
    LINE (10 + (L - 1) * 500 / LL, d((b1 / 2) + 1) * g1 + 200)-(10 + L * 500 / LL, d((b1 / 2) + 1) * g1 + 200), 60
NEXT L
PRINT "w="; d((b1 / 2) + 1)
CLOSE #1
CLOSE #2
CLOSE #3
END
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2018, 19:07
Ответы с готовыми решениями:

Нужно найти ошибку в программе
Вообще начал делать тест,решил начать с простого,вроде сделал все как надо а не работает,ошибок вообще не выдает.Сама программа запускается...

Нужно найти ошибку в программе
Вот код программы,он должен переворачивать слово из строки,т.е если было робот должно тобор быть Я написал но не получается,проверял 100...

Нужно найти ОШИБКУ в программе
УСЛОВИЕ: Дан текст, состоящий не менее чем из пяти слов. Вывести на экран слова, которые имеют одинаковые окончания...

2
1104 / 480 / 33
Регистрация: 05.07.2018
Сообщений: 1,870
Записей в блоге: 7
08.09.2018, 20:46
Уважаемая Алена9309,
в вашей программе я не обнаружил использование файлов
#1 и #2. (хотя эти файлы объявлены)

Добавлено через 4 минуты
Строка 82.
Число 85 - это метка? Если да, то откуда передается управление?

Добавлено через 6 минут
Число n = ?
Чему равно это число? Ведь с помощью его вы объявляете массивы
(длиной в один элемент) ... ?
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
08.09.2018, 22:21
Алена9309, в вашей программе слишком много ошибок. Я бы Вам посоветовал аккуратно полностью переписать задание и выложить его сюда. Может, кому-то и интересно копаться в куче чужих ошибок, лично мне проще написать свою работающую программу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.09.2018, 22:21
Помогаю со студенческими работами здесь

нужно найти ошибку в программе с++ на двумерные массивы
void task_1(int** A, int M ) { int i, j; double sum=0; bool flag=0; printf("\n1 задание: "); for(i=0; i<M; i++) for(j=0;...

Нужно найти ошибку в программе простенькой задачи
Задача: TopCoder (Время: 1 сек. Память: 16 Мб Сложность: 25%) Некоторые из вас, наверное, слышали о сайте http://www.topcoder.com,...

Нужно найти ошибку в программе, встает и не работает дальше
Program lab8; Var a: array of char; b: array of char; konstr, kontxt, sym: char; i, u: integer; r, s: integer; ...

Народ мне нужно найти ошибку в программе (Turbo Assembler)
Народ помогите найти ошибку в простой программе (Assembler))...все из методички пробовал, то что нужно не получается=(( надо: ...

нужно найти ошибку в программе, буду в крайней степени благодарен
program pr6n5; var z,c,x:integer; s,e,a:real; begin writeln('vvedite x'); readln(x); s:=0; z:=2; e:=0.0001; c:=sqr(x);


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru