помогите с задачами по QBasic

Лапик

Участник
Надо решить 2 задачки...очень буду благодарна за какую-нибудь помощь, потому что своих идей уже нет.
1. Дан одномерный массив числовых значений, насчитывающий N элементов.
Исключить из массива элементы, принадлежащие промежутку [B;C].
2. Выполнить обработку элементов прямоугольной матрицы А, имеющей N строк и М столбцов. Определить, сколько нулевых элементов содержится в верхних L строках матрицы и в левых К столбцах матрицы.
 

aleks

Старожил
if ... then уже в школах не проходят?

Подумай хоть 5 минут и всё получится, сама потом рада будешь.
 

Лапик

Участник
aleks":f0y2i25u сказал(а):
if ... then уже в школах не проходят? Подумай хоть 5 минут и всё получится, сама потом рада будешь.
А по твоему мнению сделать внутренний массив, чтоб в него впихать удаленные элементы так просто...это if и then не отделаться...Я уже пробовала, идеи иссякли
 

SerЕga

Старожил
Лапик":16xb5u1z сказал(а):
А по твоему мнению сделать внутренний массив, чтоб в него впихать удаленные элементы так просто...
А что у тебя не получается?
P.S. может лучше пихать в новый массив, те элементы которые надо оставить
 

Лапик

Участник
SerЕga":29qfz6bb сказал(а):
А что у тебя не получается? P.S. может лучше пихать в новый массив, те элементы которые надо оставить
У меня уже ничего не получается,потому я сюда и написала,меня вырубает это программирование,потому что я в него не въезжаю,а объяснить мне никто не может,и решить..тоже всем лень...печально :( :cry:
 

gram

Старожил
2Лапик:
закинь сюда то, что ты написала, а мы подправим :) просто никому не хочется полностью делать твое задание, надо убедиться, что мозговые усилия ты тоже прилагала ;)
 

[Evil]#1_in_the_world

Старожил
Лапик":2ykncu79 сказал(а):
2. Выполнить обработку элементов прямоугольной матрицы А, имеющей N строк и М столбцов. Определить, сколько нулевых элементов содержится в верхних L строках матрицы и в левых К столбцах матрицы.

Элементы матрицы задаются вручную или случайным образом. L и K задаются только один раз за задачу или надо чтобы можно было их изменять для одной и той же матрицы, после ее вывода? Если Сразу задают матрицу и Л и К и нужен только один ответ на задачу - то простыми счеткиками все делается, ими же и задается матрица ими же и отсекаются нужные строки и столбцы. И вообще благодари что у Дмитрия Палыча из второй школы не была там люди на бейсике на БКшках игры набивали - штука злая - сохранять нельзя, кто по клаве ударит - сразу сброс и все по новой набирать :)
 

SerЕga

Старожил
gram":1zfukkn8 сказал(а):
2Лапик: закинь сюда то, что ты написала, а мы подправим :) просто никому не хочется полностью делать твое задание, надо убедиться, что мозговые усилия ты тоже прилагала ;)
и еще хочется, что бы поняла как это делается в следующий раз сама смогла написать
 

Лапик

Участник
gram":1afizri1 сказал(а):
2Лапик: закинь сюда то, что ты написала, а мы подправим :) просто никому не хочется полностью делать твое задание, надо убедиться, что мозговые усилия ты тоже прилагала ;)
Блин,там проги переписывать,и у меня только каркас. Есть 2 варианта,я все дело это сюда перепечатываю...каркас только,новый массив я не вводила,дискету с частичным решением уволокли. Или я скидываю в самом basic эти проги куда-нить,ну и саму пргу basic тоже,если надо
 

gram

Старожил
эээ.. а открыть .bas файл в текстовом редакторе и скопировать сюда слабо?:)
 

Лапик

Участник
[Evil сказал(а):
#1_in_the_world":1knam23g] И вообще благодари что у Дмитрия Палыча из второй школы не была там люди на бейсике на БКшках игры набивали - штука злая - сохранять нельзя, кто по клаве ударит - сразу сброс и все по новой набирать :)
Мне в школе Pascal хватило

Добавлено спустя 4 минуты 42 секунды:

gram":1knam23g сказал(а):
эээ.. а открыть .bas файл в текстовом редакторе и скопировать сюда слабо?:)
Спасибо,я даже и не знала, что так можно:)
REM PR1
INPUT "vvedite razmernost massiva"; N
INPUT "vvedite nachalo otrezka na ydalenie", b
INPUT "vvedite konec otrezka na ydalenie", c
(x)=
DIM A(N)
FOR I = 1 TO N
INPUT A(I)
NEXT I
FOR I = 1 TO N
IF A(I) = RND((x)) THEN A(I) = A(I + 1)
NEXT I
FOR I = 1 TO N - 1
PRINT A(I)
NEXT I
END

REM PR2
INPUT "strok"; N
INPUT "stolbcov"; M
INPUT "kolichestvo verxnix strok"; L
INPUT "kolichestvo levbIx stolbcov"; K
DIM A(N, M)
FOR I = 1 TO N
FOR J = 1 TO N
INPUT A(I, J)
NEXT J
NEXT I
FOR I = 1 TO N
FOR J = 1 TO N
PRINT A(I, J)
NEXT J
PRINT
NEXT I
PRINT
END

Тут нет ровным счетом ничего стоящего
 

gram

Старожил
жжош!
хоть вспомил как басик выглядит :lol: :lol:
если найду ща на винте у себя это чудо, гляну :) массив-то откуда брать? случайные числа?
 

Лапик

Участник
gram":24zcymmp сказал(а):
жжош! хоть вспомил как басик выглядит :lol: :lol: если найду ща на винте у себя это чудо, гляну :) массив-то откуда брать? случайные числа?
агукс,что захочется то и ставится..
 

gram

Старожил
первый пошел
Честно говоря, забыл как правильно PRINT-ом пользоваться:)
Код:
REM PR1
INPUT "vvedite razmernost massiva "; N
INPUT "vvedite nachalo otrezka na ydalenie "; b
INPUT "vvedite konec otrezka na ydalenie "; c

PRINT "vvedite elementy massiva ("; N; ") shtuk"

DIM A(N), RES(N)
FOR i = 1 TO N
        INPUT A(i)
NEXT i

j = 0
FOR i = 1 TO N
        IF A(i) < b OR A(i) > c THEN
                j = j + 1
                RES(j) = A(i)
        END IF
NEXT i
PRINT "rezultat"
FOR i = 1 TO j
        PRINT RES(i), " ";
NEXT i
и чего тут было сложного?
 

Лапик

Участник
gram":1dsxeygj сказал(а):
и чего тут было сложного?
Блин..ну не дано девушке быть программистом...ну вернее мне...или просто мне надо,чтоб это нормально расстолковали,а не как на паре,где если я до чего-то доехала, у меня 100 раз переспросят а почему?
 

gram

Старожил
и вторая:
Код:
REM PR2

INPUT "strok"; N
INPUT "stolbcov"; M
INPUT "kolichestvo verxnix strok"; L
INPUT "kolichestvo levbIx stolbcov"; K

DIM A(N, M)
FOR i = 1 TO N
        FOR j = 1 TO M
                INPUT A(i, j)
        NEXT j
NEXT i

zeros = 0

FOR i = 1 TO N
        FOR j = 1 TO M
                PRINT A(i, j);
              
                REM zaodno poschitaem kol-vo nylei
                IF i <= L AND j <= K AND A(i, j) = 0 THEN zeros = zeros + 1
        NEXT j
        PRINT
NEXT i

PRINT "kol-vo nylevyh elementov"; zeros

END
почти все у тебя было :)
 

Лапик

Участник
gram":io30og8z сказал(а):
а вот тут че-то не так...не досчитывает...вернее я вообще не понимаю какие нули она считает.О :shock: на видимо считает нули только в верхней строке..Хотя нет,она вообще выводит что их 2 нуля в любом случае
 

gram

Старожил
как я понял из задачи, нули в квадрате, ограниченном заданными строкой и столбцом. Или нужно отдельно 2 числа получить?

Добавлено спустя 3 минуты 1 секунду:

второй вариант, считает раздельно
Код:
REM PR2

INPUT "strok"; N
INPUT "stolbcov"; M
INPUT "kolichestvo verxnix strok"; L
INPUT "kolichestvo levbIx stolbcov"; K

DIM A(N, M)
FOR i = 1 TO N
        FOR j = 1 TO M
                INPUT A(i, j)
        NEXT j
NEXT i

zerosL = 0
zerosK = 0

FOR i = 1 TO N
        FOR j = 1 TO M
                PRINT A(i, j);
             
                REM zaodno poschitaem kol-vo nylei
                IF i <= L AND A(i, j) = 0 THEN zerosL = zerosL + 1
                IF j <= K AND A(i, j) = 0 THEN zerosK = zerosK + 1
        NEXT j
        PRINT
NEXT i

PRINT "kol-vo nylevyh elementov v verhnih"; L; "strokah:"; zerosL
PRINT "kol-vo nylevyh elementov v levyh"; K; "stolbcah:"; zerosK


END
 

Лапик

Участник
тааааааааак,это я уже торможу,извини...на сколько я поняла,там нужно посчитать сколько нулей содержится в верхних и левых строках(то что на их пересечении понятное дело считается один раз).Видимо тут надо будет посчитать сколько нулей на пересечении оставшихся нижних и правых строк,и от общей суммы нулей в матрице это отнять..что-то такое
 

gram

Старожил
ты глючишь:)
первый вариант считает такой случай:


1 0 1|1
0 1 1|0
------
1 0 1 1
1 1 0 0

т.е. размерность 4x4, ограничение строк - 2, столбцов - 3
получается отсеченный прямоугольник слева вверху, кол-во нулей 2

второй случай считает так:

1 0 1|1
0 1 1|0 т.е. сколько нулей выше второй строки - 3 шт.
-------- и сколько нулей левее третьего столбца - 4 шт.
1 0 1|1
1 1 0|0

выбирай, Что для тебя правильней:)
 
Верх