Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с задачей пожалуйста. (https://javascript.ru/forum/misc/43224-pomogite-s-zadachejj-pozhalujjsta.html)

lord2kim 01.12.2013 16:03

YorikoSC, вам предлагается ознакомится какие имеются свойства и методы у каждого типа переменных в JavaScript...

YorikoSC 01.12.2013 18:02

Все равно не очень понятно, но это ладно головняком стало другое задание:
<!DOCTYPE html>
<html>
<body>
<p>Задание 1 вариант 4: Написать скрипт, в котором будет предлагаться ввести текст размером не
менее случайного сгенерированного программно числа (генерировать в диапазоне от 1
до 45) символов. Все четные символы перевести в верхний регистр, все нечетные в
нижний регистр. Вывести в сообщении полученный результат.</p>
<p id="условие">Нажмите на кнопку, чтобы сгенерировать число.</p>
<p id="текст"></p>
<button onclick=Generate()>ГСЧ</button>
<button onclick=Text()>Нажмите для ввода.</button>
<script>
function Generate(){
document.getElementById("условие").innerHTML = Math.floor(Math.random() * 44)+1;
document.getElementById("текст").innerHTML = "Введите текст длинной в число."
}
function Text(){
var x = prompt("Введите текст:", "");
if (x = Generate()){
alert("Ура,правильно!")
}
}
</script>
</body>
</html>


Естественно, что при вводе текстка происходит не проверка а генерация нового числа:(
А как ещё и символы разбить на ToUpperCase, ToLowerCase я вообще понять не могу, хотя гугл уже ничего нового мне не говорит:(
Минусы вечерней формы обучения - нам ни фига не объясняют((.

lord2kim 01.12.2013 18:37

YorikoSC, предыдущее задание нельзя назвать заданием...чисто ознакомление...

с текущим...делайте все действия в одной функции
сгенерируйте случайно число; предлагайте вводить текст пока его длина не будет достигнута величины "random-но" сгенерированного числа; как только длина текста достигнута с помощью метода charAt() в цикле получайте i-ый символ строки -> если это четный символ, т.е. остаток от деления на 2 = 0 (number % 2) - значит число четное, иначе не четное; требуемый результат собирайте в новую переменную (строку) и выводите результат на экран...

YorikoSC 01.12.2013 19:35

function Generate(){
		document.getElementById("условие").innerHTML = Math.floor(Math.random() * 44)+1;
		document.getElementById("текст").innerHTML = "Введите текст длинной в число.";
	
		var x = prompt("Введите текст длинной в сгенерированное число","");
		
		while ("x".lenght = "условие")
		{
		x = prompt("Введите текст длинной в сгенерированное число","");
		}
		
}

Как приравнять к рандомному числу корректно? Из того что я написал он не проверяет:(

lord2kim 01.12.2013 20:06

Цитата:

Сообщение от YorikoSC (Сообщение 283800)
function Generate(){
		document.getElementById("условие").innerHTML = Math.floor(Math.random() * 44)+1;
		document.getElementById("текст").innerHTML = "Введите текст длинной в число.";
	
		var x = prompt("Введите текст длинной в сгенерированное число","");
		
		while ("x".lenght = "условие")
		{
		x = prompt("Введите текст длинной в сгенерированное число","");
		}
		
}

Как приравнять к рандомному числу корректно? Из того что я написал он не проверяет:(

во-первых, свойство называется не lenght, а length; во-вторых, рандомное сгенеренное число записывайте в переменную, иначе вы никогда не проверите длину вводимой строки на равенство числу
function Generate() {
	var random = Math.floor(Math.random() * 44)+1, x;
	
	document.getElementById("условие").innerHTML = random;
	document.getElementById("текст").innerHTML = "Введите текст длинной не менее чем "+random+" символов.";
	
	//alert(random);
	
	do {
		x = prompt("Введите текст длинной в сгенерированное число ("+random+")","");
	}
	while (x.length < random)
}
Generate();

YorikoSC 01.12.2013 20:07

Огромное вам спасибо:)

YorikoSC 01.12.2013 22:25

function Generate(){
		var random = Math.floor(Math.random() * 44)+1, x;
	
		document.getElementById("условие").innerHTML = random;
		document.getElementById("текст").innerHTML = "Введите текст длинной в "+random+" символов.";
	
	do
		{
			x = prompt("Введите текст длинной в сгенерированное число","");
		}
	while
		(x.length != random);
		var answer = x;
		{
		alert(x.charAt(i%2=0).toUpperCase());
		}
}
		
	Generate();


Ну не работает оно:(
Не понимаю я как правильно применить((

Попробовал переписать:(
function Generate(){
		var random = Math.floor(Math.random() * 44)+1, x;
	
		document.getElementById("условие").innerHTML = random;
		document.getElementById("текст").innerHTML = "Введите текст длинной в "+random+" символов.";
	
	do
		{
			x = prompt("Введите текст длинной в сгенерированное число","");
		}
	while
		(x.length != random);
		var answer = x.charAt();
		if (charAt(i%2=0))
		{
		return toUpperCase;
		}
		else
		{
		return toLowerCase;
		{
		alert("answer");
		}
}
		
	Generate();


Результат тот же:(

lord2kim 01.12.2013 22:41

YorikoSC, откуда взялись скобки?
{
        alert(x.charAt(i%2=0).toUpperCase());
        }


и естественно нужно обрабатывать (не)четность символов в отдельно цикле...

function Generate() {
	var random = Math.floor(Math.random() * 44)+1, x, final_str = "";
	
	document.getElementById("условие").innerHTML = random;
	document.getElementById("текст").innerHTML = "Введите текст длинной не менее чем "+random+" символов.";
	
	//alert(random);
	
	do {
		x = prompt("Введите текст длинной в сгенерированное число ("+random+")","");
	}
	while (x.length < random)
	
	for (i=0; i < x.length; i++) { // в цикле перебираем всю полученную строку и собираем новую на основе поставленной задачи
		if (i%2) { // если номер очередного символа строки делится на 2 с остатком - нечетный
			final_str += x.charAt(i).toUpperCase();
		} else { // иначе четный
			final_str += x.charAt(i).toLowerCase();
		}
	}
	
	alert(final_str);
}
Generate();

YorikoSC 01.12.2013 22:59

Цитата:

Сообщение от lord2kim (Сообщение 283840)
YorikoSC, откуда взялись скобки?
{
        alert(x.charAt(i%2=0).toUpperCase());
        }


и естественно нужно обрабатывать (не)четность символов в отдельно цикле...

function Generate() {
	var random = Math.floor(Math.random() * 44)+1, x, final_str = "";
	
	document.getElementById("условие").innerHTML = random;
	document.getElementById("текст").innerHTML = "Введите текст длинной не менее чем "+random+" символов.";
	
	//alert(random);
	
	do {
		x = prompt("Введите текст длинной в сгенерированное число ("+random+")","");
	}
	while (x.length < random)
	
	for (i=0; i < x.length; i++) { // в цикле перебираем всю полученную строку и собираем новую на основе поставленной задачи
		if (i%2) { // если номер очередного символа строки делится на 2 с остатком - нечетный
			final_str += x.charAt(i).toUpperCase();
		} else { // иначе четный
			final_str += x.charAt(i).toLowerCase();
		}
	}
	
	alert(final_str);
}
Generate();

Исправил чуток ваш код:

function Generate(){
		var random = Math.floor(Math.random() * 44)+1, x;
		var answer = new String()//добавил новое значение - без него ругалось.
		document.getElementById("условие").innerHTML = random;
		document.getElementById("текст").innerHTML = "Введите текст длинной в "+random+" символов.";
	
	do
		{
			x = prompt("Введите текст длинной в сгенерированное число","");
			//отсюда убрал alert - он стопорил процесс, в любом случае.
		}
	while
		(x.length != random);//поставил != т.к. при < большее кол-во символов пропускалось, как верное
		
		for (i=0; i< x.length; i++)
			{//перебор полученой строки.
				if (i%2) //проверка четности, если делится на 2 без остатка.
				{
					answer +=x.charAt(i).toUpperCase();
				}
				else //если не делится.
				{
					answer +=x.charAt(i).toLowerCase();
				}
		}
		
		alert(answer);
}
		
	Generate();


В общем большое спасибо:) без вас бы кумекал половину ночи:)

lord2kim 01.12.2013 23:19

YorikoSC,
Цитата:

Сообщение от YorikoSC (Сообщение 283846)
while
		(x.length != random);//поставил != т.к. при < большее кол-во символов пропускалось, как верное

так у вас в задании написано...

Цитата:

Сообщение от YorikoSC (Сообщение 283789)
<p>Задание 1 вариант 4: Написать скрипт, в котором будет предлагаться ввести текст размером не
менее случайного сгенерированного программно числа (генерировать в диапазоне от 1 до 45) символов...

Цитата:

Сообщение от YorikoSC (Сообщение 283789)
if (i%2) //проверка четности, если делится на 2 без остатка.

"если делится на 2 с остатком..."

Цитата:

Сообщение от YorikoSC (Сообщение 283789)
var answer = new String()//добавил новое значение - без него ругалось.
		document.getElementById("условие").innerHTML = random;
		document.getElementById("текст").innerHTML = "Введите текст длинной в "+random+" символов.";

; не забывайте в конце строки и не давайте элементам значения id и name атрибутов кирилицей...


Часовой пояс GMT +3, время: 23:26.