Timkor

words

Feb 2nd, 2021 (edited)
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let wordcountinRow = 1; /* ця змінна буде збільшуватись з кожним пробілом, якщо припустити, що ця ж кількість і є кількість слів, то можна іменувати wordCounter. Згідно ТЗ роздільники можуть бути не тільки пробілом, а ще можуть слідувати групою один за одним між словами. */
  2.  
  3. let userWords = prompt('Write what you want! '); /* у множині правильно іменувати масиви, в цю змінну потрапить рядок від користувача, можна іменувати її line, string, text etc. */
  4.  
  5. for (let i = 0; i < userWords.length; i++) {
  6.     if ( userWords[i] == String.fromCharCode(32)) { // підраховуєте пробіли, краще використати суворе порівняння ( === )
  7.         wordcountinRow ++;
  8.     }
  9. }
  10.  
  11. console.log ('Кількість слів у рядку: ' + wordcountinRow);
  12.  
  13. // видалив зайві пусті рядки з коду. Таке рішення підраховує кількість пробілів у тексті.
  14.  
  15.  
  16.  
  17.  
  18. // Спитайте людину про рядок і виведіть на екран найдовше слово в рядку.
  19.  
  20. let label ,
  21.     startWord = 0,
  22.     maxWord = 0;
  23.  
  24. let userWords = prompt('Write what do you want!');
  25.  
  26. let b = []; // нажаль таке іменування не допомагає читати код, мабуть писати також.
  27. let c = ""; // а оце вже краще. Шуткую.
  28.  
  29. for (let i = 0; i < userWords.length; i++) {  //скопіювала рядок в масив,щоб можна було його змінювати
  30.  
  31.     b[i] = userWords[i]; // це зайве, зі строкою можна так само працювати як з масивом.
  32. }
  33.  
  34. for (let i = 0; i <= b.length; i++) { // все ж за межі масиву не всі мп дозволяють виходити, краще цього не робити і в js
  35.     if (b[i] == String.fromCharCode(32) || b[i] == undefined) { // ===, інша умова може допомогти з кінцем рядка
  36.         let space = i; // spacePosition, spaceIndex
  37.         let lengthWord = space - startWord;
  38.  
  39.             if (lengthWord > maxWord) {  // шукаємо найдовше слово і ставимо мітку,з якого місця воно починається.
  40.                 maxWord = lengthWord;
  41.                 label = space-lengthWord; // lengthWord = space - startWord; =>  label = startWord; )
  42.             }  
  43.        startWord = space + 1;
  44.     }
  45. }
  46.  
  47. // змінну с варто було створити тут - якомога ближче до місця використання.
  48. for (let i=label; i<= label + maxWord -1; i++){ //найдовше слово склеюємо в рядок
  49.     c = c + b[i];
  50. }
  51.  
  52. console.log (c);
  53.  
  54. моє питання: Що робити, якщо в рядку буде кілька слів, що матимуть найбільшу довжину? чи для цієї задачі це несуттєво?
  55. - несуттєво
  56. мені цікаво, як зробити так, щоб можна було вивести два слова однієї довжини? не підкажете?
  57. - тоді варто складати слова з максимальною довжиною до масиву, а якщо потім знайдеться ще більше - обнуляти весь масив.
  58.  
  59. раджу подивитися рішення цієї задачи за посиланням https://codeshare.io/2KKPqP
  60. // Гарного коду.
Add Comment
Please, Sign In to add comment