1

Тема: Що я роблю не так?

Усім привіт!
Потихеньку вчу JavaScript і натрапив на цікаву задачку.
Потрібно всі символи : "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя" замінити на "сквφα!tχайωопшγhrsuzїцфєуяліw?$βю".
Типу зашифрувати повідомлення :)
Суть в тому , що програма запускається і виконується , але лише частково. Тому що результат, який мені потрібен , просто не виводить на екран.
Підкажіть у чому помилка?
Код нижче :

<meta charset="utf-8">
<script>

var text = prompt("Введіть ваш текст");
var smal_leters='абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'; // відповідно малі літери і їх відповідники 
var key ='сквφα!tχайωопшγhrsuzїцфєуяліw?$βю';   //обидві стрічки по 33 символи


var rez = toLowerCase(text); //пробував варіант і var rez = text.toLowerCase(); 
                                          //переводить на малі літери і так і так

var i = 0;

while(i<rez.length)
{
    for(var j=0;j<smal_leters.length;j++)  
        if(rez[i]==smal_leters[j])
            rez[i]=key[j];
        i++;
}
    
alert(rez);

Наперед дякую!

2

Re: Що я роблю не так?

Дайте приклад тексту, з яким працює, бо в мене виводить тільки початковий рядок.

3

Re: Що я роблю не так?

quez написав:

Дайте приклад тексту, з яким працює, бо в мене виводить тільки початковий рядок.

Так в тому то й справа:) Програма компілюється , але працює не так як треба.
Воно не виводить тексту - тобто не працює :(
Виводить лише (якщо добавити) :

alert(rez);

  після функції

toLowerCase();

той самий рядок який я вводжу , тільки тепер всі літери є маленькими.

4

Re: Що я роблю не так?

Не працює присвоювання, якщо звертатись до символа як до елемента масиву. Працює отак:

var result = "";
while(i<rez.length)
{
    for(var j=0;j<smal_leters.length;j++){
        if(rez[i]==smal_leters[j]){
            result = result.concat(key[j]);
        }
    }
    i++;
}
Подякували: #Sparta1

5

Re: Що я роблю не так?

В javascript не можна так присвоювати. Ось тут можна знайти повну і вичерпну відповідь:

http://stackoverflow.com/questions/1337 … k#13371244

А це означає, що "вчіться користуватися пошуком"!

Подякували: #Sparta1

6

Re: Що я роблю не так?

Master_Sergius написав:

В javascript не можна так присвоювати. Ось тут можна знайти повну і вичерпну відповідь:

http://stackoverflow.com/questions/1337 … k#13371244

А це означає, що "вчіться користуватися пошуком"!


Якраз читаю! Дякую!
quez, Вам спасибі! Виправив.

7

Re: Що я роблю не так?

var text = prompt("Введіть ваш текст");
var smal_leters='абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'; // відповідно малі літери і їх відповідники
var key ='сквφα!tχайωопшγhrsuzїцфєуяліw?$βю'; //обидві стрічки по 33 символи
var rez = text.toLowerCase();
function compare(v) {
    for(var j=0;j<smal_leters.length;j++) {
        if(v == smal_leters[j]) {
            return key[j];
        }
    }
    return null;
}
 
var i = 0;
var new_string = '';
while(i<rez.length)
{
    new_string += compare(rez[i]);
    i++;
}
rez = new_string;
alert(rez);
Подякували: #Sparta, 221VOLT2

8

Re: Що я роблю не так?

Прихований текст
Invader написав:
var text = prompt("Введіть ваш текст");
var smal_leters='абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'; // відповідно малі літери і їх відповідники
var key ='сквφα!tχайωопшγhrsuzїцфєуяліw?$βю'; //обидві стрічки по 33 символи
var rez = text.toLowerCase();
function compare(v) {
    for(var j=0;j<smal_leters.length;j++) {
        if(v == smal_leters[j]) {
            return key[j];
        }
    }
    return null;
}
 
var i = 0;
var new_string = '';
while(i<rez.length)
{
    new_string += compare(rez[i]);
    i++;
}
rez = new_string;
alert(rez);

Я , звісно, дякую за готовий код. Але дороблю вже сам:)
Адже не розберуся - не буду знати!

Подякували: Сергій781

9

Re: Що я роблю не так?

НУ проаналізуйте код. Помилка в тому що потірбно кожен елемнт одного рядку порівнювати з кожним елементом іншого а у вас тільки один елемент одного рядку з усіма елементами іншого.

10 Востаннє редагувалося quez (10.09.2015 16:40:19)

Re: Що я роблю не так?

Invader, на ввід "а " виводить сnull.

Чому не повертати пустий рядок замість null?

11

Re: Що я роблю не так?

Так, null туту ні до чого. Можна ще поверати те що ввели (return v).

12

Re: Що я роблю не так?

Invader написав:
Прихований текст
var text = prompt("Введіть ваш текст");
var smal_leters='абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'; // відповідно малі літери і їх відповідники
var key ='сквφα!tχайωопшγhrsuzїцфєуяліw?$βю'; //обидві стрічки по 33 символи
var rez = text.toLowerCase();
function compare(v) {
    for(var j=0;j<smal_leters.length;j++) {
        if(v == smal_leters[j]) {
            return key[j];
        }
    }
    return null;
}
 
var i = 0;
var new_string = '';
while(i<rez.length)
{
    new_string += compare(rez[i]);
    i++;
}
rez = new_string;
alert(rez);

ще можна так

var text = prompt("Введіть ваш текст");
var symbols='абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'; // відповідно малі літери і їх відповідники
var key ='сквφα!tχайωопшγhrsuzїцфєуяліw?$βю'; //обидві стрічки по 33 символи
var inp = text.toLowerCase();
function compare(v){
    var pos=symbols.indexOf(v);
    if(pos != -1){
        return key[pos];
    }
return '';
}
var i = 0;
var rez = '';
while(i<inp.length){
    rez += compare(inp[i]);
    i++;
}
alert(rez);
Подякували: Monolith, Betterthanyou2