06. The Signal and the Noise - Теста вече е ОК :)
Не е точно въпрос.
Теста е ок. Автоматично се ъпдейтнаха точките.
Не е точно въпрос.
Теста е ок. Автоматично се ъпдейтнаха точките.
Здравейте. Ще представя моето решение на задачата, с цел ако може някой да качи и своето решение с цел да сравним логиката. Също така и може да се направи някаква оптимизация по кода.
Ето ти моето. За съжаление съм затънал в домашни - имам Джава и C++ следващото, та надали ще имам, време да чета твоя код, за което се извинявам. Принципно четенето на чужд код си е тренировка. Но все пак, ако искаш разяснение по моя - казвай :)
#include <iostream>
#include <vector>
#include <algorithm> // тази библиотека, май не сме я взимали
int main(){
std::vector <std::string> stringVector;
std::vector <int> intVector;
std::string TSK;
getline (std::cin, TSK);
std::string tempString;
TSK+=' ';
for(auto ch: TSK){
if (ch!=' ')
{if (isdigit(ch)){tempString+=ch;}
}
if (ch==' ' ){stringVector.push_back(tempString); tempString.clear();}
}
for (int i =0; i<stringVector.size();i++){
intVector.push_back(stoi(stringVector[i]));
}
std::cout <<*max_element(intVector.begin(), intVector.end()); // това е от горната библиотека
return 0;
}
Двете изкоментирани неща ги има на cpp refernecе, ако добре си спомням, заедно с други благинки :)
Първоначално бях добавил още една променлива за по-добра четимост, както и нямаше "isdigit", а сравнянвах 0<=ch<=9
Поздрави, Тошо.
Ето го и моето решение. Подхода ми е доста по-различен. Първоначално работя директно с input-а, като го изчиствам от ненужни символи, след което екстрактвам останалите числа и проверявам кое е най-голямо. Просто ми се стори по-бързо и без излишни изливания във вектори после обхождането им и т.н. За целите на задачата е работи. Подобен подход обаче не би бил подходящ ако това е част от мащабен проект в който в последствие трябва да се използва оригиналния вход.
#include <iostream>
#include <string>
#include <sstream>
void signalAndNoise(std::string input) {
using namespace std;
int i = 0;
int len = input.size();
while (i < len) {
if(!isdigit(input[i]) && input[i] != ' '){
input.erase(i,1);
len--;
} else {
i++;
}
}
int maxNumber = INT_MIN;
int number = 0;
istringstream iss(input);
while (iss >> number) {
if (number > maxNumber){
maxNumber = number;
}
}
cout << maxNumber;
}
int main() {
std::string input;
getline(std::cin, input);
signalAndNoise(input);
return 0;
}