Member 14081190 Ответов: 4

Как проверить количество раз, когда число присутствует?


Напр..

Пользовательский ввод: 2 2 3 3 3

Программа отображает: поправочные!

--------------------------------------

Пользовательский ввод: 2 2 4 4 4

Дисплеи программы: 4 должны появиться 4 раза

затем программа должна показать минимальный количество чисел, которые он должен изменить, чтобы быть правильным. (Например, 1 должен присутствовать один раз, 2-два раза, 3-три раза и так далее)

Пожалуйста помочь.

Что я уже пробовал:

#include <iostream>
#include <string>
using namespace std;

int main()
	{
	
		int n;
		string a;
		
		cin >> n;
		cin >> a;
		
	}

4 Ответов

Рейтинг:
2

Rick York

Вам нужно посмотреть, какие методы доступны в std::string. Один из них-length(). Он скажет вам, какой длины струна. Другой-это оператор [], который даст вам символ в данном месте. С этими вещами, и предполагая, что у вас есть куча чисел в строке a, вы можете написать логику следующим образом:

int alength = a.length();
for( int i = 0; i < alength; ++i )
{
    char cvalue = a[i];
    if( cvalue == ' ' )
        continue;      // skip spaces

    // the character is not a space
    // do something with it here
}
Что именно вы делаете с персонажами там, я не могу вам сказать, потому что описание вашей проблемы отсутствует. Например, что означает "правильно" для вашей проблемы?


Member 14081190

Правильно означает, что, например, если пользователь вводит 1 один раз или 2 дважды или 3 трижды и так далее. А целое число n-это количество чисел, которое пользователь будет вводить, потому что программа должна изменить минимальное количество чисел, чтобы они были "правильными". Он должен вывести, сколько раз ему нужно изменить числа (например. Пользователь: 5 || 1 2 3 3 3 || Вывод: 1|| потому что он должен изменить 1 на 2, чтобы получить правильный ответ. Надеюсь, это вам поможет, и не могли бы вы объяснить мне это с помощью кода.

Рейтинг:
2

KarstenK

Храните все входные данные в a вектор и чем использовать сравнение для подсчета экземпляров. Сначала сделайте поиск, чтобы найти уникальные данные, а затем подсчитайте их.


Рейтинг:
1

Richard MacCutchan

Почему вы сначала читаете целое число, что оно должно вам сказать? Когда вы читаете строку, вам просто нужно пройти через нее символ за символом (используйте индекс) и сосчитать последовательные цифры. Если подсчет соответствует фактической цифре (преобразуйте первую цифру в целое число для сравнения), то подсчет будет правильным. Если вы получаете неверный счетчик до достижения конца, то отклоните строку.

Но поскольку это ваша домашняя работа, мы не будем писать настоящий код.


Рейтинг:
1

OriginalGriff

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

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


Member 14081190

Это не домашнее задание. Я делаю проект, и я застрял.

OriginalGriff

С чего ты взял, что "проект" - это не домашнее задание? Конечно, это так!

Member 14081190

Домашний проект, только для себя. Я пытаюсь стать лучше в C++, но я застрял на этом.

OriginalGriff

Вы не "застряли" - вы еще не начали!

Member 14081190

Потому что я не знаю, как начать, и я ищу помощи.