Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
1

Интерфейс програмки

17.05.2020, 14:23. Просмотров 1704. Ответов 18
Метки нет (Все метки)

Здравствуйте, нужна ваша помощь, весь интернет перерыл, в книгах искал, не нашёл, мне нужно сделать интерфейс, например: нажимаю кнопку 1 , меня кидает на первое задание(REM zadanie 1), нажимаю 2(второе задание), , потом нажимаю 3(3 задание), и 4 - выход из программы. Подскажите какими командами это можно сделать, либо допишите просто несколько строк к моему коду( ниже код), заранее спасибо







QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CLS
REM zadanie 1
DIM a(5, 5)
FOR i = 0 TO 5
FOR j = 0 TO 5
a(i, j) = 3 ^ (i + j) * SQR((i + 2.6) + j) * ((2 * ABS(i - j + 3)) / (3 * (i + 1.4)))
PRINT USING "   #####.###"; a(i, j);
NEXT j
PRINT
NEXT i
PRINT "..............................................................................."
REM zadanie 2
FOR i = 0 TO 5
x(i) = a(2, i) + a(3, i)
PRINT USING " ######.###"; x(i);
NEXT i
PRINT "................................................................................"
REM zadanie 3
FOR i = 0 TO 4
G = G + (1 / (1 + x(i)) + x(i + 1))
NEXT i
PRINT "G="; G
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2020, 14:23
Ответы с готовыми решениями:

Написание програмки для Visual Studio (либо QBasic)
Дана следующая система дифферениальных уравнений: y'1=y3+y2-y1 y'2=y3-y2+y1 y'3=y3+y2+y1 ...

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

Автозапуск програмки в VBA
Подскажите как зделать автозапуск програмки в VBA? При загрузки только файла екселя

не могу сделать програмки в Visual Basic 6
никак не получается,сколько ни пыталась... пожалуйста помогииите)))все КРОМЕ 5,срочно!!))

18
Платежеспособный зверь
8664 / 4092 / 1588
Регистрация: 28.10.2009
Сообщений: 10,989
17.05.2020, 14:31 2
SELECT CASE вам в помощь
1
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
17.05.2020, 14:49  [ТС] 3
кот Бегемот, спасибо

Добавлено через 15 минут
кот Бегемот, но тут вроде нужно с помощью INKEY$
0
Платежеспособный зверь
8664 / 4092 / 1588
Регистрация: 28.10.2009
Сообщений: 10,989
17.05.2020, 14:53 4
А что, это обязательно?
0
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
17.05.2020, 15:12  [ТС] 5
кот Бегемот, в условие пишет - обязательное использование оператора INKEY , но спасибо за подсказку)
0
33 / 26 / 6
Регистрация: 09.05.2020
Сообщений: 88
Записей в блоге: 7
17.05.2020, 15:26 6
Лучший ответ Сообщение было отмечено Taras_Hosti как решение

Решение

Ответ на вопрос Taras_Hosti от 17.05.2020

(ВАРИАНТ БЕГЕМОТА)

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
CLS
DIM a$
[COLOR="Purple"]
DO UNTIL a$="4"
  a$=INKEY$
  SELECT CASE a$
     CASE "1"
[/COLOR]
        REM zadanie 1
        DIM a(5, 5)
        FOR i = 0 TO 5
        FOR j = 0 TO 5
        a(i, j) = 3 ^ (i + j) * SQR((i + 2.6) + j) * ((2 * ABS(i - j + 3)) / (3 * (i + 1.4)))
        PRINT USING "   #####.###"; a(i, j);
        NEXT j
        PRINT
        NEXT i
        PRINT "..............................................................................."
[COLOR="Purple"]  SELECT CASE a$
     CASE "2"
[/COLOR]
REM zadanie 2
FOR i = 0 TO 5
x(i) = a(2, i) + a(3, i)
PRINT USING " ######.###"; x(i);
NEXT i
PRINT "................................................................................"
[COLOR="purple"]  SELECT CASE a$
     CASE "3"
[/COLOR]
REM zadanie 3
FOR i = 0 TO 4
G = G + (1 / (1 + x(i)) + x(i + 1))
NEXT i
PRINT "G="; G
[COLOR="purple"]  END SELECT
LOOP
[/COLOR]

Или вариант № 2 через условие IF ... THEN вместо SELECT .... END SELECT

CLS
dim a$

DO UNTIL a$="4"
a$=INKEY$

IF a$ = "1"

REM zadanie 1
DIM a(5, 5)
FOR i = 0 TO 5
FOR j = 0 TO 5
a(i, j) = 3 ^ (i + j) * SQR((i + 2.6) + j) * ((2 * ABS(i - j + 3)) / (3 * (i + 1.4)))
PRINT USING " #####.###"; a(i, j);
NEXT j
PRINT
NEXT i
PRINT "............................. .............................. ...................."

ELSEIF a$ = "2"

REM zadanie 2
FOR i = 0 TO 5
x(i) = a(2, i) + a(3, i)
PRINT USING " ######.###"; x(i);
NEXT i
PRINT "............................. .............................. ....................."

ELSEIF a$ = "3"

REM zadanie 3
FOR i = 0 TO 4
G = G + (1 / (1 + x(i)) + x(i + 1))
NEXT i
PRINT "G="; G

END IF

LOOP



И там, и там используется команда INKEY$
1
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
17.05.2020, 15:28  [ТС] 7
vedunasv, спасибо вам большое, уже не первый раз выручаете
0
Платежеспособный зверь
8664 / 4092 / 1588
Регистрация: 28.10.2009
Сообщений: 10,989
17.05.2020, 15:29 8
Это ничего не меняет, INKEY$ считывает код клавиши, этот код можно использовать в SELECT CASE
1
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
17.05.2020, 15:40  [ТС] 9
vedunasv, извините пожалуйста, но в первом коде , выбивает(ожидается выражение(везде, где вписана команда COLOR), если везде убрать COLOR,то вконце выбивает ошибку (LOOP без DO)
Второй код работает , но в третьем задание , он показывает разный исход, а должен быть одинаковый
0
33 / 26 / 6
Регистрация: 09.05.2020
Сообщений: 88
Записей в блоге: 7
17.05.2020, 15:51 10
кот Бегемот, конечн, можно ))))) Никто не возражает.
Taras_Hosti, добавить в начале проги DO, аналогично второго варианта..-навернео случайно стерлось
На сам расчет не должно влиять....
может-при копировании кода что-то изменилось....удалилась строчка или еще что-то.
проверте просто ваш сам код

Добавлено через 1 минуту
счас проверю конкретно по ошибке ,а расчет - надо просто сравнить ваш код со вставленным...

Добавлено через 4 минуты
вижу ошибку: после закрытия тега COLOR почему-то добавилось еще раз SELECT CASE a$

сейчас приведу нормальный код без тегов (благодарю за цензирование)
1
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
17.05.2020, 15:52  [ТС] 11
vedunasv, жду, спасибо ещё раз
0
33 / 29 / 10
Регистрация: 10.11.2019
Сообщений: 41
17.05.2020, 15:55 12
но в третьем задание , он показывает разный исход, а должен быть одинаковый
Потому что в задании 1 вычисляется массив a(i,j), в задании 2 на основе массива a() вычисляется массив x()
который кстати желательно декларировать с помощью DIM, а в задании 3 через x() вычисляется G.

Поэтому эти три задания никак нельзя вызывать независимо друг от друга. Кроме того стандартная функция
inkey$ не ожидает нажатия клавиши, если клавиша не нажата, возвращается пустая строка "".
1
33 / 26 / 6
Регистрация: 09.05.2020
Сообщений: 88
Записей в блоге: 7
17.05.2020, 15:56 13
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
CLS
DIM a$
 
DO UNTIL a$="4"
  a$=INKEY$
 
  SELECT CASE a$
     CASE "1"
 
        REM zadanie 1
        DIM a(5, 5)
        FOR i = 0 TO 5
        FOR j = 0 TO 5
        a(i, j) = 3 ^ (i + j) * SQR((i + 2.6) + j) * ((2 * ABS(i - j + 3)) / (3 * (i + 1.4)))
        PRINT USING "   #####.###"; a(i, j);
        NEXT j
        PRINT
        NEXT i
        PRINT "..............................................................................."
 
     CASE "2"
 
        REM zadanie 2
        FOR i = 0 TO 5
         x(i) = a(2, i) + a(3, i)
         PRINT USING " ######.###"; x(i);
        NEXT i
        PRINT "................................................................................"
 
     CASE "3"
        REM zadanie 3
        FOR i = 0 TO 4
           G = G + (1 / (1 + x(i)) + x(i + 1))
        NEXT i
        PRINT "G="; G
 
LOOP

вот.
1
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
17.05.2020, 16:00  [ТС] 14
qbfan, я так понял, второе задания можно написать иначе? через одномерный массив?

Добавлено через 3 минуты
vedunasv, я вижу, что DO присутствует, но Qbasic всёравно пишет что LOOP без DO
0
33 / 26 / 6
Регистрация: 09.05.2020
Сообщений: 88
Записей в блоге: 7
17.05.2020, 16:07 15
Лучший ответ Сообщение было отмечено Taras_Hosti как решение

Решение

qbfan, в само задание я счас не лезу - человек конкретно дал вопрос, поэтому не знаю что там творится.
Но благодарю, что косвенным путем вы стали моим адвокатом ))))))))))
И что не делаю контроль на пустую строку - тоже все верно.
Но сам Taras_Hosti сделал задание, а то, что не понял одной команды - не страшно, главное - спросил достойно о помощи )))), Не пустышка человек, старается разобраться.

Добавлено через 2 минуты
второй раз за 10 минут позорюсь !!!!!!! Эхххххххххх
в конце кода перед LOOP ПОСТАВТЕ END SELECT - ПРОПУЩЕНО

Добавлено через 1 минуту
Отнимите за невнимательность ОДИН БАЛ
(но простите за спешку )

Добавлено через 1 минуту
Taras_Hosti, что там????
1
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
17.05.2020, 16:09  [ТС] 16
vedunasv, спасибо большое, всё работает , вы мне очень помогли, благодарю

Добавлено через 1 минуту
vedunasv, вы очень сильно в этом шарите, за несколько секунд, вы помогли с интерфейсом, который я делал 2 недели(и ничего не получилось), читая книги
0
33 / 26 / 6
Регистрация: 09.05.2020
Сообщений: 88
Записей в блоге: 7
17.05.2020, 16:14 17
Taras_Hosti, это не интерфейс.
для меня интерфейс - эта вся облочка по управлению прогой, удобство, простота. А то,что внутри добавить команду-это к вам придёт, если будете постоянно это делать.

И тут гораздо больше людей знающих. Просто они в этот момент были заняты.
qbfan, кот Бегемот, - они сразу заметили всё.

А вообще-то форуму благодарность, что он есть.
1
0 / 0 / 0
Регистрация: 14.04.2020
Сообщений: 31
21.05.2020, 18:05  [ТС] 18
qbfan, vedunasv, а покажите как записать через одномерный массив(2zadanie), мне пригодится
0
33 / 29 / 10
Регистрация: 10.11.2019
Сообщений: 41
21.05.2020, 19:36 19
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
REM zadanie 2
DIM x(5) ' будет создан массив с ячейками от 0 до 5
FOR i = 0 TO 5
' если оператора DIM нет то создается массив
' по умолчанию из 11 ячеек (от 0 до 10)
' Это в данном примере касается массива a - он создаётся по умолчанию
x(i) = a(2, i) + a(3, i)
PRINT USING " ######.###"; x(i);
NEXT i
У Вас есть русский QBasic ? Загружаете любую программу в QBasic.
Наводите курсор под непонятный оператор. Нажимаете F1.
Открывается описание. Нажимаете F6, чтобы перейти в окно описания
(или мышкой). Обратите внимание на все операторы в разделе "см также"
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2020, 19:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написание програмки для Visual Studio (либо QBasic)
Дана следующая система дифферениальных уравнений: y'1=y3+y2-y1 y'2=y3-y2+y1 y'3=y3+y2+y1 ...

Склеить 2 програмки в 1,все програмки есть готовые
Нужно вставить две программки(готовые) в 1 рамку(как менюшку) программы вот: 1: program mask;...

програмки C++
1. Даны сведения об авто: фамилия владельца, марка, цвет, год выпуска: 1) Найти фамилии...

составте програмки
вот задание За вибором користувача (реалізується через оператор case) розв’язати вказане завдання,...

Ускорение програмки
#include <stdio.h> #include <string.h> #include <stdlib.h> struct Tree { char s; ...

решите програмки на C++
1. Описать процедуру Swap(x,y), меняющую содержимо переменных x и y(x и y - вещественные параметры,...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.