Важная информация
Показано с 1 по 4 из 4

Тема: Помогите исправить ошибку в программе

  1. #1 Помогите исправить ошибку в программе 
    Новичок
    Регистрация
    05.03.2011
    Сообщений
    2
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Необходимо расчитать многоступенчатый контроль для дипломной работы. Вот нашел лабораторную работу "Контроль партии изделий", контролируются резисторы. Расчёт идёт в QBasic.

    Код программы:
    CLS
    REM "Vvod isxodnux dannux"
    DATA 9.725, 10.2, .05, .01, 24, 3600
    READ xo, xb, dx, em, nd, No
    PRINT "xo="; xo, "xb="; xb, "dx="; dx, "em="; em, "nd="; nd
    DIM n(12)
    DATA 0, 9, 32, 85, 153, 187, 155, 86, 33, 10, 0, 0
    FOR i = 1 TO 12
    READ n(i): PRINT n(i);
    NEXT
    PRINT
    REM "bu4islenie srednego zna4enija k.p. i objema vuborki"
    n = 0: xc = 0: x = xo
    FOR i = 1 TO 12
    n = n + n(i)
    xc = xc + x * n(i)
    x = x + dx
    NEXT
    xc = xc / n
    PRINT "sr. zna4enie xc="; xc, "ras4. objem vuborki n="; n
    REM "vu4islenie dispersii"
    D = 0: x = xo
    FOR i = 1 TO 12
    D = D + n(i) * (x - xc) * (x - xc)
    x = x + dx
    NEXT
    D = D / (n - 1): d1 = SQR(D)
    PRINT "dispersija D="; D, "sr. kvadr. otklonenie d="; d1
    REM "vu4islenie koefficienta soglasija"
    m = 0: m1 = 0: x = xo
    FOR i = 1 TO 12
    t = (x - xc) / d1
    f = EXP(-t * t / 2) / 2.5
    p = dx * n * f / d1
    m = m + p - n(i)
    L = ABS(m)
    IF L > m1 THEN m1 = L
    x = x + dx
    NEXT
    L = m1 / SQR(n)
    PRINT "koefficienta soglasija L="; L
    IF L < .56 THEN PRINT "soglasie otli4noe": GOTO g1
    IF L < .76 THEN PRINT "soglasie xorowee": GOTO g1
    IF L < 1.36 THEN PRINT "soglasie ydovletvoriteljnoe"
    g1: PRINT
    REM "Opredelenie vxodnogo ka4estva"
    t = (xb - xc) / d1: dh = t / 100: S = 0
    DEF fna (x) = EXP(-x * x / 2) / 1.2533
    FOR x = dh / 2 TO t - dh / 2 STEP dh
    S = S + fna(x)
    NEXT
    J = S * dh: N0 = 120000 * (1 - J)
    PRINT "vx. ka4-vo J="; J, "dokontroljnui brak N0="; INT(N0)
    IF N0 < nd THEN PRINT : PRINT "partijy mowna prinjatj bez kontrolja": END
    IF N0 > No THEN PRINT : PRINT "partija otklonjaetsja po vxodn. ka4estvy": END
    REM "rezyljtayu tradicionnogo kontrolja"
    p2 = em * fna(t) / (4 * d1)
    n2 = 120000 * p2
    PRINT "risk zakaz. P2="; p2, "brak pri tr. kontrole Nm2="; INT(Nm2)
    IF n2 < nd THEN PRINT : PRINT "Zakljy4enie: dostato4en tr. kontrolj": END
    REM "rezyljtatu mnogostypen4atogo kontrolja"
    k = 1
    g2: p = (k + 1) * 2 ^ (k - 2)
    Nm2 = 120000 * p2 / p
    IF Nm2 < nd THEN g3
    k = k + 1: GOTO g2
    g3: PRINT "4islo ciklov k="; k, "brak pri mn. kontrole Nm2="; INT(Nm2)
    PRINT
    PRINT "Zakljy4enie: trebyetsja mnogost. kontrolj s 4islom stypenei k="; k




    Выдаёт ошибку на этой подпрограмме:
    REM "rezyljtatu mnogostypen4atogo kontrolja"
    k = 1
    g2: p = (k + 1) * 2 ^ (k - 2)
    Nm2 = 120000 * p2 / p
    IF Nm2 < nd THEN g3
    k = k + 1: GOTO g2
    g3: PRINT "4islo ciklov k="; k, "brak pri mn. kontrole Nm2="; INT(Nm2)
    PRINT
    PRINT "Zakljy4enie: trebyetsja mnogost. kontrolj s 4islom stypenei k="; k


    Помогите исправить ошибку.
    P.S. Как писать в QBasic на русском языке?
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    У меня при загрузке вашего текста выбило ошибку о второй копии одной и той же метки, плюс у вас отсутствовали переходы Goto перед вызовом метки. Я слегка подправил. Теперь протестируйте программу на правильность работы. Сам я не могу сказать что либо, ибо с электроникой знаком плохо, и слабо представляю для чего вообще служить программа.
    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    REM "Vvod isxodnux dannux"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 9.725, 10.2, .05, .01, 24, 3600
    [Ссылки могут видеть только зарегистрированные пользователи. ] xo, xb, dx, em, nd, No
    [Ссылки могут видеть только зарегистрированные пользователи. ] "xo="; xo, "xb="; xb, "dx="; dx, "em="; em, "nd="; nd
    [Ссылки могут видеть только зарегистрированные пользователи. ] n(12)
    [Ссылки могут видеть только зарегистрированные пользователи. ] 0, 9, 32, 85, 153, 187, 155, 86, 33, 10, 0, 0
    FOR i = 1 TO 12
    [Ссылки могут видеть только зарегистрированные пользователи. ] n(i): [Ссылки могут видеть только зарегистрированные пользователи. ] n(i);
    NEXT
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    REM "bu4islenie srednego zna4enija k.p. i objema vuborki"
    n = 0: xc = 0: x = xo
    FOR i = 1 TO 12
    n = n + n(i)
    xc = xc + x * n(i)
    x = x + dx
    NEXT
    xc = xc / n
    [Ссылки могут видеть только зарегистрированные пользователи. ] "sr. zna4enie xc="; xc, "ras4. objem vuborki n="; n
    REM "vu4islenie dispersii"
    D = 0: x = xo
    FOR i = 1 TO 12
    D = D + n(i) * (x - xc) * (x - xc)
    x = x + dx
    NEXT
    D = D / (n - 1): d1 = [Ссылки могут видеть только зарегистрированные пользователи. ](D)
    [Ссылки могут видеть только зарегистрированные пользователи. ] "dispersija D="; D, "sr. kvadr. otklonenie d="; d1
    REM "vu4islenie koefficienta soglasija"
    m = 0: m1 = 0: x = xo
    FOR i = 1 TO 12
    t = (x - xc) / d1
    f = [Ссылки могут видеть только зарегистрированные пользователи. ](-t * t / 2) / 2.5
    p = dx * n * f / d1
    m = m + p - n(i)
    L = [Ссылки могут видеть только зарегистрированные пользователи. ](m)
    IF L > m1 THEN m1 = L
    x = x + dx
    NEXT
    L = m1 / [Ссылки могут видеть только зарегистрированные пользователи. ](n)
    [Ссылки могут видеть только зарегистрированные пользователи. ] "koefficienta soglasija L="; L
    IF L < .56 THEN [Ссылки могут видеть только зарегистрированные пользователи. ] "soglasie otli4noe": GOTO g1
    IF L < .76 THEN [Ссылки могут видеть только зарегистрированные пользователи. ] "soglasie xorowee": GOTO g1
    IF L < 1.36 THEN [Ссылки могут видеть только зарегистрированные пользователи. ] "soglasie ydovletvoriteljnoe"
    g1: [Ссылки могут видеть только зарегистрированные пользователи. ]
    REM "Opredelenie vxodnogo ka4estva"
    t = (xb - xc) / d1: dh = t / 100: S = 0
    [Ссылки могут видеть только зарегистрированные пользователи. ] fna (x) = [Ссылки могут видеть только зарегистрированные пользователи. ](-x * x / 2) / 1.2533
    FOR x = dh / 2 TO t - dh / 2 STEP dh
    S = S + fna(x)
    NEXT
    J = S * dh: N0 = 120000 * (1 - J)
    [Ссылки могут видеть только зарегистрированные пользователи. ] "vx. ka4-vo J="; J, "dokontroljnui brak N0="; [Ссылки могут видеть только зарегистрированные пользователи. ](N0)
    IF N0 < nd THEN [Ссылки могут видеть только зарегистрированные пользователи. ] : [Ссылки могут видеть только зарегистрированные пользователи. ] "partijy mowna prinjatj bez kontrolja": [Ссылки могут видеть только зарегистрированные пользователи. ]
    IF N0 > No THEN [Ссылки могут видеть только зарегистрированные пользователи. ] : [Ссылки могут видеть только зарегистрированные пользователи. ] "partija otklonjaetsja po vxodn. ka4estvy": [Ссылки могут видеть только зарегистрированные пользователи. ]
    REM "rezyljtayu tradicionnogo kontrolja"
    p2 = em * fna(t) / (4 * d1)
    n2 = 120000 * p2
    [Ссылки могут видеть только зарегистрированные пользователи. ] "risk zakaz. P2="; p2, "brak pri tr. kontrole Nm2="; [Ссылки могут видеть только зарегистрированные пользователи. ](Nm2)
    IF n2 < nd THEN [Ссылки могут видеть только зарегистрированные пользователи. ] : [Ссылки могут видеть только зарегистрированные пользователи. ] "Zakljy4enie: dostato4en tr. kontrolj": [Ссылки могут видеть только зарегистрированные пользователи. ]
    REM "rezyljtatu mnogostypen4atogo kontrolja"
    k = 1
    g2: p = (k + 1) * 2 ^ (k - 2)
    Nm2 = 120000 * p2 / p
    IF Nm2 < nd THEN GOTO g3
    k = k + 1: GOTO g2
    g3: [Ссылки могут видеть только зарегистрированные пользователи. ] "4islo ciklov k="; k, "brak pri mn. kontrole Nm2="; [Ссылки могут видеть только зарегистрированные пользователи. ](Nm2)
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] "Zakljy4enie: trebyetsja mnogost. kontrolj s 4islom stypenei k="; k
     
    REM "rezyljtatu mnogostypen4atogo kontrolja"
    k = 1
    g4: p = (k + 1) * 2 ^ (k - 2)
    Nm2 = 120000 * p2 / p
    IF Nm2 < nd THEN GOTO g5
    k = k + 1: GOTO g4
    g5: [Ссылки могут видеть только зарегистрированные пользователи. ] "4islo ciklov k="; k, "brak pri mn. kontrole Nm2="; [Ссылки могут видеть только зарегистрированные пользователи. ](Nm2)
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] "Zakljy4enie: trebyetsja mnogost. kontrolj s 4islom stypenei k="; k

    Для того, чтобы на новых ОС видеть русский язык, нужно загрузить перед запуском самой программы какой нибудь русификатор, вроде keyrus.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  3. #3  
    Новичок
    Регистрация
    05.03.2011
    Сообщений
    2
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Вторую копию я написал для наглядности. Понял, что вместо IF Nm2 < nd THEN g3 надо IF Nm2 < nd THEN GOTO g3.
    Спасибо ОГРОМНОЕ за помощь!
    Ответить с цитированием  
     

  4. #4  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Незачто, обращайтесь, если опять понадобиться помощь
    Что касается русского языка, то подробнее можете посмотреть по этой ссылке:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    В двух словах, добываете программку keyrus, или аналогичный ему русификатор, и в командной строке, либо же командном bat файле запускаете сначала русификатор, а затем бейсик. Тогда русские символы будут нормально отображаться. Это касается как чистого запуска бейсика, так и запуска через эмуляторы вроде DosBox.
    Дружба-магия-радость!
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 14
    Последнее сообщение: 23.08.2011, 01:06
  2. При создании .exe выдает ошибку
    от Редиска в разделе QBasic
    Ответов: 14
    Последнее сообщение: 12.08.2011, 14:37
  3. Ответов: 5
    Последнее сообщение: 24.05.2011, 12:53
  4. Помогите исправить код программы
    от azalivin в разделе QBasic
    Ответов: 3
    Последнее сообщение: 10.05.2011, 18:52
  5. Ответов: 6
    Последнее сообщение: 09.12.2010, 18:40
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •