Затруднение с 4та задача от втора лекция
Малко ми остава да го завърша , но вече изпуших . Кода работи ...освен в случаите, когато не работи :)
Как да направя така , че да ми остава само най-често срещаното число във вектора mostCommonNumS . Като цяло в него вкарва най-често срещаното число , но заедно с него вкарва и най-често срещаното число - 1 . Как да структурирам частта с откриването и извеждането САМО на най-често срещанНИТЕ числа ?
#include <iostream>
#include<stdlib.h>
#include<time.h>
#include<vector>
#include <algorithm>
using namespace std;
int random(int min, int max){ //range : [min, max)
static bool first = true;
if ( first )
{
srand(time(NULL)); //seeding for the first time only!
first = false;
}
return min + rand() % (max - min);
}
//int searchForLongestSentence(vector<int> eqIndex){
//
//int mostCommonNum = eqIndex.back();
//int mostFreq,mostHighest=0;
//
//std::sort(eqIndex.begin(), eqIndex.end());
//
//
// for ( int i = 1; i < eqIndex.size(); i++){
//
// if ( eqIndex[i] == eqIndex[i-1] ){
// int num;
// mostFreq++;
// if (mostHighest <= mostFreq ){
// mostHighest=mostFreq;
// mostCommonNum=eqIndex[i];
// }
// }
// }
//return mostCommonNum;
//
//}
int main(){
vector<int> Vector;
int NumCount;
cout << "Please enter the length of random numbers to be generated (number generated range will be 0-9):";
cin >> NumCount;
// Generate and display random numbers from 0-9
for (int i = 0; i < NumCount; i++ ){
int number;
number = random(0,9);
Vector.push_back(number);
cout << Vector[i];
if ( i < NumCount - 1 ){
cout << ' ' ;
}
}
cout << endl;
std::sort(Vector.begin(), Vector.end());
int mostFreq,mostHighest = 0;
vector<int> mostCommonNumS;
for ( int i = 1; i < Vector.size(); i++){
if ( Vector[i] == Vector[i-1] ){
mostFreq++;
if (mostHighest <= mostFreq ){
mostHighest=mostFreq;
mostCommonNumS.push_back(Vector[i]);
}
}
else {
mostFreq = 1;
}
}
//delete duplicates
//sort( mostCommonNumS.begin(), mostCommonNumS.end() );
//
//
//mostCommonNumS.erase( unique( mostCommonNumS.begin(), mostCommonNumS.end() ), mostCommonNumS.end() );
//
//int test = searchForLongestSentence(mostCommonNumS);
//
//cout << "The longest sentence is " << test << endl;
for (int i = 0; i < mostCommonNumS.size(); i++){
cout << mostCommonNumS[i];
}
cout << "The number(s) ";
for (int i =0; i < mostCommonNumS.size(); i++) {
cout << mostCommonNumS[i];
if ( i < mostCommonNumS.size() - 1 ){
cout << ' ' ;
}
}
cout << " are/is the most frequent and occurs " << mostHighest << " times.";
return 0;
}
Благодаря !
Благодаря Жоро ,
Ами направих го , но съм доста далече от 20-те реда код ... Явно не виждам простото решение :)
Ето и кода , който направих :
Поздрави,
Любо