0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 3
1

Напечатать все буквы, которые входят в наибольшее количество слов последовательности

14.12.2016, 02:44. Показов 2415. Ответов 5

Студворк — интернет-сервис помощи студентам
Я попал в беду, и мне очень срочно нужно переписать задачу с языка C++, на язык JS. Очень прошу помочь. И вот дополнительная информация по заданию, если что: Дана непустая последовательность слов (одномерный символьный массив): между словами запятые или пробелы, в конце точка. Напечатать все буквы, которые входят в наибольшее количество слов этой последовательности. Не использовать строковые функции

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
vector<char> getChars(string str) { 
map<char, int> values; 
map<char, int> tmp; 
int j; 
for (int i = 0; i < str.size(); ++i) { 
for (j = i; j < str.size() && str[j] != ' ' && str[j] != ','; ++j) { 
if (!tmp.count(str[j])) 
tmp.insert(make_pair(str[j], 1)); 
} 
i = j; 
for (auto it = tmp.begin(); it != tmp.end(); it++) { 
if (values.count(it->first)) 
values.find(it->first)->second = values.find(it->first)->second + 1; 
else 
values.insert(make_pair(it->first, 1)); 
} 
tmp.clear(); 
} 
vector<char> result; 
int max = -100; 
 
for (auto it = values.begin(); it != values.end(); it++) { 
if (max < it->second) { 
max = it->second; 
result.clear(); 
result.push_back(it->first); 
} 
else if (max == it->second) { 
result.push_back(it->first); 
} 
 
} 
for (int i = 0; i < result.size(); ++i) 
cout « result[i]; 
return result; 
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2016, 02:44
Ответы с готовыми решениями:

Напечатать все буквы, которые входят в наибольшее количество слов последовательности
Помогите с задачей. Дана непустая последовательность слов (одномерный символьный массив): между...

Напечатать все буквы, которые входят в наибольшее количество слов последовательности
Задана последовательность строчных латинских букв, между словами запятая, за последним – точка....

Напечатать все буквы, которые входят в наибольшее количество слов.
Задана строка символов. Группы символов, разделенные пробелом и не содержащие пробелов внутри себя,...

Вывести все буквы, которые входят в наибольшее количество слов строки
В первой надо - вывести все буквы, которые входят в наибольшее количество слов строки - &quot;Я учусь...

5
Эксперт JS
2434 / 1742 / 623
Регистрация: 11.07.2016
Сообщений: 4,027
14.12.2016, 11:01 2
Где ж вы эти задания-то берёте? johnsnow1234 случайно не в одной группе с вами учится?
Напечатать все буквы, которые входят в наибольшее количество слов последовательности
HTML5
1
2
3
<input value="условимся называть как необычного множества является множество всех расселовским множеством парадокс возникает при попытке определить, является ли это обычным или нет ли." id="input">
<input id="start" type="button" value="Запуск">
<div id="output"></div>
CSS
1
2
3
#input {
  width: 100%;
}
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
document.getElementById('start').onclick = function() {
  var string = document.getElementById('input').value; // Входная строка
  var array = []; // Массив слов строки
  var word = ''; // Отдельное слово строки
  var object = {}; // Буква => количество слов, в которых буква встречается
  var max = 0; // Наибольшее количество слов, в которых встречается отдельная буква
  var result = ''; // Буквы, встречающиеся наибольшее количество раз
  for (i in string) { // Парсим строку в отдельные слова (заполняем массив array)
    if (string[i] != ' ' && string[i] != ',' && string[i] != '.') word += string[i];
    else if (word) {
      array.push(word);
      word = '';
    }
  }
  for (i in array) { // Проходимся по кадому слову из массива array
    var obj = {}; // Временный объект с уникальными буквами в слове
    for (j in array[i]) { // Находим уникальные буквы в слове
      obj[array[i][j]] = true;
    }
    for (c in obj) { // Заполняем объект object
      if (!object[c]) object[c] = 1; else object[c]++;
      if (object[c] > max) max = object[c];
    }
  }
  for (i in object) if (object[i] == max) { // Формируем строку с буквами, встречающимися чаще всего
    if (result) result += ', ';
    result += i;
  }
  document.getElementById('output').innerHTML = 'Буквы '+result+' встречаются в '+max+' словах.'; // Выводим результат
}
Песочница: http://codepen.io/anon/pen/BQqOgQ

Важный момент! Алгоритм чувствителен к регистру. Также алгоритм не имеет ничего общего с описанным вами на языке C++
1
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 3
14.12.2016, 11:43  [ТС] 3
Спасибо большое за помощь, но не мог бы ты пояснить за for (... in ...), и можно ли как то это переписать через простой for?
0
Эксперт JS
2434 / 1742 / 623
Регистрация: 11.07.2016
Сообщений: 4,027
14.12.2016, 11:53 4
Можно и даже нужно. На самом деле цикл
Javascript
1
for (var i = 0; i < array.length; i++)
работает быстрее, чем
Javascript
1
for (i in array)
, хоть и смотрится более громоздко. Я иногда пренебрегаю производительностью в угоду более красивого и компактного кода, если задача требует мало ресурсов.
0
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 3
14.12.2016, 11:59  [ТС] 5
А что касается for (... in...) в obj, как нужно цикл переписать?
0
Эксперт JS
2434 / 1742 / 623
Регистрация: 11.07.2016
Сообщений: 4,027
14.12.2016, 12:47 6
А вот там никак. Точнее можно, но это будет глупо и странно. Перебор свойств в объектах осуществляется с помощью for ... in ...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2016, 12:47
Помогаю со студенческими работами здесь

Вывести все буквы, которые входят в наибольшее количество слов строки
Помогите преобразовать программу из турбо паскаля в паскаль абц program Project1; (*Возвращает...

Вывести все буквы, которые входят в наибольшее количество слов строки
Помогите мне пожалуйста с решением задачи, а так мне нужно решить три задачи, я в этом вообще...

Множество слов. Напечатать все звонкие согласные буквы, которые входят (не входят) хотябы в одно слово.
Дана непустая последовательность слов из строчных русских бкув, между ними запятая, в конце точка....

Напечатать в алфавитном порядке все согласные буквы, которые не входят ни в одно из слов(множества)
Дано последовательность из малых латинских букв. Между соседними словами - запятая, в конце текста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru