forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Задачка!!! (http://forum.boolean.name/showthread.php?t=1885)

HolyDel 01.12.2006 01:04

Re: Задачка!!!
 
и еще операторы сложения и присваивания

Halk-DS 03.12.2006 02:21

Re: Задачка!!!
 
Цитата:

Сообщение от HolyDel
и еще операторы сложения и присваивания

Всмысле? Ну если че, то вы несмотрите на меня как на тупака, просто я еше не очень обознан в етом деле! Я просто знаю то, что хранится в туториале сайта!

Len(...)-Ето я понял (надеюсь!)!!! Ета команда подсчитывает количество символов числа, или там переменной! А команди Str и Mid недогнал крапаль!

HolyDel 03.12.2006 13:45

Re: Задачка!!!
 
str - переводит число в строку, т.е. например число 123 будте строкой "123" синтаксис такой a$=str(b%). ето необходимо чтоюб было можно использовать команду mid$. Она нужна для определения символа / группы символов в строке. Синтаксис такой : h$=mid(s$,первый сивол, скока символов). Например mid("собака",2,3) вернет "оба", а mid("собака",3,3) вернет "бак". В общем твоя задача сведется к приведению числа к строке, как первого так и второго.
Разберем твой пример:
9562814547697752438 число большое и блитз его не держит, поэтому объявим сразу строкой, второе тоже ради удобства.
[blitz]
a$="9562814547697752438"
b$="47"
[/blitz]
далее определяем скока символов в каждой из строк:
[blitz]
a$="9562814547697752438"
b$="47"
ca=len(a)
cb=len(b)
[/blitz]
далее задаем новую строку, в которую будем записывать результат:
[blitz]
a$="9562814547697752438"
b$="47"
ca=len(a)
cb=len(b)
rs$=""
[/blitz]

далее идет собственно само решение, берем первый символ первой строки и сравнивапес его со всеми символами второй строки, если
где-то он есть, то прибавляем его к новой строке (там где результат).

[blitz]
a$="9562814547697752438"
b$="47"
ca=Len(a)
cb=Len(b)
rs=""
For i=1 To ca
For j=1 To cb
If Mid(a,i,1)=Mid(b,j,1) Then rs=rs+Mid(b,j,1)
Next
Next
Print rs
[/blitz]

у этого метода сразу просматривается огромный минус, все цифры во второй строке должны встречаться только один раз, так как это в условиях не оговаривалось, будем делать так чтобы во второй строке символы могли повторяться. Собственно не мудря слишкомЮ, добавляем exit после rs=rs+Mid(b,j,1) и получаем:

[blitz]
a$="9562814547697752438"
b$="47"
ca=Len(a)
cb=Len(b)
rs=""
For i=1 To ca
For j=1 To cb
If Mid(a,i,1)=Mid(b,j,1) Then rs=rs+Mid(b,j,1):Exit
Next
Next
Print rs
[/blitz]

вот и все.;)

p.s. Надеюсь ты следил за мыслью, а не листингом кода.

Halk-DS 04.12.2006 01:26

Re: Задачка!!!
 
Спасибки! Вот я то понял, но не все!!! Даже если у нас в условиях не уговаривалось про повтор числа b, но цикл то наш запущен!!! І програма должна виполнить все варианти от 1 до са !!! Как так! І команда Ехіт значит конец програми, или команди? Я думал что в програме вместо Ехіт используют Еnd! И вобще, какая разница между Еnd и Ехіт!!!

HolyDel 04.12.2006 01:35

Re: Задачка!!!
 
Ok, ща все объясню.
Exit используется для вывода упраляющего элемента за цикл.
В нашем случае exit использовался для предотвращения повторения цифры. Попробуй убрать его и вместо 47 написать 477 или 474, посмотри результат.
End - все, оно и в африке все. Используется для выхода из программы.

Halk-DS 04.12.2006 04:25

Re: Задачка!!!
 
А скоко цифр поддерживает Блитз(v1.88 )??? И вот еще! У меня эсть число А, нужно найти Х и У если А = Х квадрат + У квадрат!!!
Я зделал так, но есть ли способ зделать ето проще???

A#=Input$("Input #")
B#=A#/5
X#=B#*2
Y#=B#*3
Print"X= " +Sqr(X#)+ " Y= " +Sqr(Y#)
WaitKey

(Просто я уверен, что ето както по деревенски!!!)

jimon 04.12.2006 09:14

Re: Задачка!!!
 
a - известно; x,y - нет
a = x^2 + y^2

уравнение с двумя неизвестными - не решается :)
ну можно построить график
y = sqrt(x^2 - a)
где a <= x^2
тогда при XeR получаем y :)

HolyDel 04.12.2006 17:51

Re: Задачка!!!
 
-2147483648..2147483647

jimon 04.12.2006 23:05

Re: Задачка!!!
 
HolyDel
можно создать variable size переменую
и тогда количество вариантов ограничивается вот так по 256 ^ bytes :)
при bytes > 1024 (1 кб) мы и так получаем офигительные числа
а для числа можно юзать и 10 кб и 100 кб и метр ...

HolyDel 05.12.2006 01:14

Re: Задачка!!!
 
2 Jimon, а как? В блитз?

jimon 05.12.2006 09:00

Re: Задачка!!!
 
создаеш в C++ класс, ему прописываеш операторы нужные (ну там сложение, отнимание и тд)
прописываеш функцию перевода в строку и из строки
и получаем неплохой тип переменой

еще надо будет зделать typedef class my_var my_var
и получаем практически уже полноценую переменую :)
хотя ето не очень и так :-)

Halk-DS 05.12.2006 15:48

Re: Задачка!!!
 
Может и да, но при больших числах в блитце у меня получялись неправильные ответы!!! (Например 3482785430637362507256780974826780 Даже при использовании команды Str)

jimon 05.12.2006 17:01

Re: Задачка!!!
 
Halk-DS
непонял

HolyDel 06.12.2006 01:08

Re: Задачка!!!
 
2 Jimon, ага, все понятно, такую фигню можно и на блитзе замутить, такое число будет иметь максимальный размер -(10^256)+1..10^256-1 и для работы с ним нужны будут свои команды.

2 Jimon (непонял), а че непонятного, он использовал обычные числа блитза, максимальное значение которых я уже писал.

Halk-DS 07.12.2006 02:52

Re: Задачка!!!
 
Просто любое число, так как вы говорите отображается в степенях!!! И почемуто ответ неправильный :( !!!
И еще 8) ! Я немогу понять команды sqrt() и Sgn()! Просто в хелпах чють непонятно написано!!!


Часовой пояс GMT +4, время: 16:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot