как рассчитать среднее значение каждой строки

#c #c 11

#c #c 11

Вопрос:

Я имея трудное время преобразования в ASCII коллегой каждого char в строку, моя цель состоит в том, чтобы преобразовать среднее значение каждого слова, например: если пользовательский ввод «любовь» код вернет 54, что этот код находится внутри цикла, и если пользовательский ввод, например, слово «нет».1: «Любовь», слово «нет».2: «Любовь» код должен возвращать; 54 54 , но мой код возвращает 108 я думаю, проблема в этой части sum = static_castlt;intgt;(compute - 64); , но я не знаю правильный подход к моей проблеме

 for(int x = 1; x lt;= numofinput; x  ){  cout lt;lt; "Word no. " lt;lt; x lt;lt; ": ";  getline(cin,words);    for(auto compute : words){  if(isalpha(compute)){  compute = toupper(compute);  sum  = static_castlt;intgt;(compute - 64);   }  }  }  

Комментарии:

1. Почему бы не cout сразу, а не добавить ценность sum ?

2. "Word no. " и. getline(cin,words); .. Вы хотите прочитать одно слово или список слов ? auto compute делает compute char . Это то, чего ты ожидал?

3. Не используйте магические числа. Вместо 64 этого напишите '@' — или лучше: 'A' - 1

4. std::cin gt;gt; word; прочитал бы одно слово (и пропустил пробелы)

5. Вы суммируете все, а затем печатаете окончательную сумму, когда вы должны делать это для каждого слова.

Ответ №1:

Вам нужно установить sum = 0; значение для каждого слова, по которому вы производите вычисления. Есть также ряд других небольших проблем, которые я прокомментировал в этом примере:

 #include lt;cctypegt; #include lt;iostreamgt; #include lt;stringgt;  int main() {  int numofinput = 2;   for(int x = 1; x lt;= numofinput; x  ) {  std::cout lt;lt; "Word no. " lt;lt; x lt;lt; ": ";   if(std::string word; std::cin gt;gt; word) { // read one word  int sum = 0; // only count the sum for this word   // autoamp; if you'd like to show it in uppercase later:  for(autoamp; compute : word) {   // use unsigned char's with the cctype functions:  auto ucompute = static_castlt;unsigned chargt;(compute);   if(std::isalpha(ucompute)) {  compute = static_castlt;chargt;(std::toupper(ucompute));  sum  = compute - ('A' - 1); // 'A' - 1 instead of 64  }  }   std::cout lt;lt; "stats for " lt;lt; word lt;lt; 'n'  lt;lt; "sum: " lt;lt; sum lt;lt; 'n'  lt;lt; "avg: " lt;lt; static_castlt;unsignedgt;(sum) / word.size() lt;lt; 'n';  }  } }