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

Подсчет стоимости сообщения

05.08.2016, 13:21. Показов 1794. Ответов 4

На почте стоимость отправки одного сообщения рассчитывает так: берётся по 2 копейки за букву и по 1 копейке за знак препинания (пробел, точка, запятая). Необходимо посчитать стоимость сообщения. Пробел считать как знак препинания. Стоимость вывести в консоль.
______________________--
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
 
using namespace std;
 
int main() {
  string message;
  cout << "Введите сообщение: ";
  getline(cin, message);
  int total_cost = 0;
  for (int i = 0; i < message.size()-2; i++) {
    if (message[i] != ( ' ' || '.' || ',' ) ) {
    total_cost+=2;  
      
    } else {
      total_cost++;
    }
  }
  
  cout << "Стоимость сообщения - " << total_cost;
  return 0;
}
_____________________________________
Во-первых ответ выдает не верный, а во вторых не понимаю почему в for message.size()-2
мне сказали, что так нужно и ничего не объяснили(
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2016, 13:21
Ответы с готовыми решениями:

Подсчет стоимости межугородного телефоного разговора
int main(void) { setlocale(LC_ALL, &quot;Russian&quot;); int cod, dlit,c,S; c = 0; printf(&quot;Введите...

Подсчет стоимости книг, данные хранятся в файлах
Необходимо написать программу для подсчета суммы книг сравнения этой суммы с числом и выведение...

Подсчет стоимости разговора для разных мобильных операторов
//Написать программу подсчета стоимости разговора для разных мобильных //операторов.Пользователь...

Пронумеровать очерёдность каждого сообщения так, чтобы нумерация очерёдности печаталась напротив сообщения
Покажите мне пожалуйста как можно пронумеровать очерёдность каждого сообщения так чтоб нумерация...

4
Модератор
Эксперт С++
12780 / 10236 / 6150
Регистрация: 18.12.2011
Сообщений: 27,405
05.08.2016, 13:27 2
Цитата Сообщение от kindertei Посмотреть сообщение
if (message[i] != ( ' ' || '.' || ',' ) ) {
C++
1
2
3
4
if (message[i] ==  ' ' || message[i] == '.' || message[i] ==','  )
     total_cost++;
else
    total_cost+=2;
0
0 / 0 / 1
Регистрация: 05.08.2016
Сообщений: 1
05.08.2016, 13:56 3
Лучший ответ Сообщение было отмечено zss как решение

Решение

Цитата Сообщение от kindertei Посмотреть сообщение
Во-первых ответ выдает не верный, а во вторых не понимаю почему в for message.size()-2
мне сказали, что так нужно и ничего не объяснили(
Это тебя запутали, я подозреваю, что дело в том, что версия getline из стандартной библиотеки C считывает символы конца строки и добавляет их к строке (а при запуске программы в Windows там как раз два символа у конца строки \r\n). Но версия из стандартной библиотеки C++ std::getline(std::cin, output) не добавляет к строке ouput символы конца строки, поэтому делать -2 - неправильно, ты просто получишь некорректный результат, не надо так делать. Правильный вариант такой:
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
#include <iostream>
#include <string>
 
int main() {
    std::string message;
    std::cout << "Enter message: ";
    std::getline(std::cin, message);
 
    unsigned int cost = 0;
    for (int i = 0; i < message.size(); ++i) {
        switch (message[i]) {
            case ' ':
            case '.':
            case ',':
                cost += 2;
                break;
            default:
                cost += 1;
                break;
        }
    }
 
    std::cout << "Message cost: " << cost << std::endl;
    return 0;
}
0
0 / 0 / 1
Регистрация: 04.08.2016
Сообщений: 96
05.08.2016, 14:03  [ТС] 4
Спасибо большое, не перестаю удивляться этому форуму. Все настолько четко и ясно объясняется. Моему счастью нет предела )
0
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 4
23.08.2017, 18:14 5
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
  string message;
  cout << "Введите сообщение: ";
  getline(cin, message);
 
  int total_cost = 0;
 
 for (int i = 0; i <message.size(); i++) {
        if ((message[i]!=' ' )&&(message[i]!='.' )&&(message[i]!=',' )) {
            total_cost += 2;
        }
        else {
            total_cost++;
        }
    }
  
  cout << "Стоимость сообщения - " << total_cost;
  return 0;
}
Вот правильно и просто
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2017, 18:14
Помогаю со студенческими работами здесь

Подсчет стоимости с учетом прибыли в размере 10% от стоимости
Доброго времени суток! Возникла необходимость автоматизировть подсчет стоимости с учетом прибыли в...

Подсчет стоимости заказа
Есть таблица Orders. В ней поле OrderValue (стоимость заказа). Надо сделать так, чтобы она...

Подсчет стоимости собранного ПК
Здравствуйте. Не могу найти как реализовать подсчет стоимости сборки ПК. Есть такие таблицы:...

Подсчет стоимости трансфера
Приветствую! Имеется скрипт, который считает стоимость тура на сайте. Есть один косяк, считает...


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

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

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