Стандартные объекты и функции Javascript

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

#1
У меня есть лабораторная и там дано:
Написать функцию решения указанной задачи. Исходные данные должны задаваться внутри кода как константы.
Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.

Вот я написала приблизительный код:
Код:
<HTML>
<HEAD>
<TITLE>Работа со строками</TITLE>
<script type="text/javascript">
<!--
var str="Рассказ — малая форма эпической прозы, соотносимая с повестью как более развернутой формой повествования. Восходит к фольклорным жанрам (сказке, притче); как жанр обособился в письменной литературе; часто неотличим от новеллы, а с XVIII в. — и очерка. Иногда новеллу и очерк рассматривают как полярные разновидности рассказа.";
document.write(+str.bold()+"<br>");
var pos=0;
var num=-1;
var i=-1;
while (pos!=-1) {
pos=str.indexOf("с",i+1);
num+=1;
i=pos;
}
str1=str.slice(137,151);
document.write("То,что стоит в скобках:"+"\""+str1+"\""+"<br>");

-->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
Я правильно написала или надо было каким-то другим способом вывести на экран все символы, расположенные внутри этих скобок.
Заранее благодарю.
 
G

Guest

#3
вот я немного подправила,так правильно?
Код:
<HTML>
<HEAD>
<TITLE>Работа со строками</TITLE>
<script type="text/javascript">
var str="Рассказ — малая форма эпической прозы, соотносимая с повестью как более развернутой формой повествования. Восходит к фольклорным жанрам (сказке, притче); как жанр обособился в письменной литературе; часто неотличим от новеллы, а с XVIII в. — и очерка. Иногда новеллу и очерк рассматривают как полярные разновидности рассказа.";
document.write(str.bold()+"<br>");
var a = str.indexOf('(');
var b = str.indexOf(')');
s = str.slice(a + 1, b);
document.write("То,что стоит в скобках:"+"\""+s+"\""+"<br>");
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
 
G

Guest

#4
выводит вот такой вот текст:

То,что стоит в скобках:"сказке, притче"
 

hosm

* so what *
18.05.2009
2 442
6
#5
уже получше.
но потерялись проверки a==-1 b==-1 (когда одной из скобок нет в тексте - в общем случае они нужны)
Если a!=-1, то, возможно, имеет смысл искать ) после позиции a:
var b = str.indexOf(')', a);
А возможно, по задаче допустимо выделять текст и между такой последовательностью скобок:
")текст внутри скобок("
и, возможно, тогда надо посмотреть, какая из скобок расположена левее...
если a==-1, то вторую скобку искать бессмысленно...

Добавлено: чесгря, ")текст внутри скобок(" ничем не противоречит описанной Вами постановке - он расположен между скобками)))

Добавлено: в общем, если лабу не будут "пытать на дуракоустойчивость" "левыми" данными, то вполне сойдет )))
 
G

Guest

#6
у нас просто универ славится заданиями, условия которых понимают только преподы
вобщем там же написано вывести то,что расположено внутри этих скобок, не написали ведь вывести то,что находится между открытой и закрытой скобкой,так что будем надеется, что пронесет,если нет,на месте переделаю

Добавлено: или может попробывать прокрутить все варианты
 

hosm

* so what *
18.05.2009
2 442
6
#7
ок, собственно, там будет проблема только в порядке операндов для slice - я не помню, насколько корректно он обработает случай a+1 > b. быстро добавить сравнение и подправить код можно.
 
G

Guest

#8
тут в этой же лабе,ещё одну задачку надо решить и я не совсем понимаю её условия:
Написать функцию решения указанной задачи. Исходные данные получить при помощи датчика случайных чисел.12) Даны натуральные числа а1, а2, ..., аn. Указать те, у которых остаток от деления на М равен L,(0<= L<=M-1).

И вот я не могу понять:М и L самой произвольно выбрать (придумать),только что L должно быть меньше M-1 и больше 0,и натуральные числа тоже самой придумать?
Заранее спасибо.
 

hosm

* so what *
18.05.2009
2 442
6
#9
Исходные данные получить при помощи датчика случайных чисел.
а1, а2, ..., аn точно генерить придется

Думаю, М и L тоже.
смотрите ссылки с примерами для получения СЧ в заданном диапазоне:
http://www.w3schools.com/js/js_obj_math.asp
http://www.webdevelopersnotes.com/tutorial...javascript.php3
наверно, только кол-во чисел можно задать самой
 
G

Guest

#10
ну вот допустим,я хочу вывести натуральные числа в диапазоне от 0 до 1000
вот какой код вышел:
Код:
<script type="text/javascript">
Math.floor(Math.random() * (1001));
document.write(Math.floor(Math.random() * (1001))+"<br>");
</SCRIPT>
но он мне выводит только одно число,а я хочу чтобы мне сразу вывело несколько чисел и чтобы они не повторялись.
 
G

Guest

#11
спасибо, но я уже сама до этого додумалась, не успела написать, Нет вырубили...
 
G

Guest

#12
про Нет это я написала к тому,что я додумалась,когда Нета не было,но просто не смогла ответить на форуме и выложить свой ответ,так как его вырубили.
 
G

Guest

#14
блин,чё то я совсем запуталась,вот я составила такой код:
Код:
<script type="text/javascript">
var arr = new Array();
int r = 0;
while (i = 0; i < 10; i++)
{
var tmp = Math.floor(Math.random() * 1001);
if (arr[tmp] == 0) 
{
arr[tmp] = r;
r++;
}
document.write(arr[tmp]+"<br />");
}
</SCRIPT>
но чё то ни фига не выводит,я уже соображаю плохо
 
G

Guest

#15
подправила,самое элементарное забыла,вот код:
Код:
<script type="text/javascript">
var arr = new Array();
n = 10;
for (i = 0; i < n; i++)
{
var tmp = Math.floor(Math.random() * 1001);
arr[i]=tmp;
document.write(arr[i]+"<br />");
}
</SCRIPT>
всё вышло
 
G

Guest

#16
просто мне по условию надо чтобы был использован массив,поэтому пришлось использовать этот "хлам"
 
G

Guest

#17
тогда я не пойму,что я не так сделала

Добавлено: А теперь мне надо указать те, у которых остаток от деления на М равен L,(0<= L<=M-1).
Возможно мой вопрос покажется очень глупым,но я просто хочу понять,как делить в массиве,как вообще производить какие-нибудь арифметические операции в массиве.
Заранее благодарю.
Извините за глупость.
 
G

Guest

#18
Код:
<script type="text/javascript">
var arr = new Array();
n = 10;
M = 5; //согласно дальнейшему условию:указать те, 
L = 3; //у которых остаток от деления на М равен L,(0<= L<=M-1)
r=0;
for (i = 0; i < n; i++)
{
var tmp = Math.floor(Math.random() * 1001);
arr[i]=tmp;
document.write(arr[i]+"<br />");
k= arr[i]%М; //деление с остатком
document.write(k+"<br />");
}
</SCRIPT>
дальше я начала делать то что дальше по условию,но у меня почему-то остаток выводит сразу же после каждого числа,почему так?и как теперь указать те элементы,которые равны L (наведите на мысль)
 
G

Guest

#19
Код:
<script type="text/javascript">
var arr = new Array();
n = 10;
M = 5;
L = 3;
r=0;
for (i = 0; i < n; i++)
{
var tmp = Math.floor(Math.random() * 1001);
arr[i]=tmp;
if (arr[i]%M == L)
document.write(arr[i]+"<br />");
}
</SCRIPT>
вот так я думаю будет более правильным
 
Статус
Закрыто для дальнейших ответов.