Loading...
DimitarKazakov avatar DimitarKazakov 17 Точки

Здравейте. Ще представя моето решение на задачата, с цел ако може някой да качи и своето решение с цел да сравним логиката. Също така и може да се направи някаква оптимизация по кода.

https://pastebin.com/Cs9tC2Py

0
spasimira25 avatar spasimira25 25 Точки

Ето ти моето. За съжаление съм затънал в домашни - имам Джава и 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
Поздрави, Тошо.

0
06/10/2019 16:18:33
dmartinov avatar dmartinov 37 Точки

Ето го и моето решение. Подхода ми е доста по-различен. Първоначално работя директно с 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;
}

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.