1m Dany jest ciąg n znaków. Napisz program, który wypisze z tego ciągu liczby trzycyfrowe oraz wyznaczy liczbę największą. C++ plisss



Odpowiedź :

REGNAD

Odpowiedź:

#include <iostream>

#include <string>

#include <vector>

#include <algorithm>

int main() {

   std::string word; //zmienna do przechowywania slowa

   std::cout << "Podaj ciag znakow\n";

   std::cin >> word; //wprowadzamy slowo do sprawdzenia

   std::vector<int> numbers; //wektor do przechowywania liczb spelniajacych wymagania

   int tmpNumber = 0; //zmienna tymczasowa, do przechowywania tworzenia sie numeru

   int counter = 0; //licznik ile cyfr ma ta liczba

   for (int i = 0; i < word.length(); i++) { //petla po znakach slowa

       if (std::isdigit(word[i]) && counter <= 3) { //jesli spelnia wymagania to tworzymy ten numer

           tmpNumber = tmpNumber * 10 + (word[i] - '0');

           counter++;

       }

       if (std::isalpha(word[i]) || counter > 3 || word[i + 1] == '\0') {//jesli nie to zerujemy i dodajemy utworzony numer do wektora

           numbers.push_back(tmpNumber);

           tmpNumber = 0;

           counter = 0;

       }

   }

   int maxElement = *max_element(numbers.begin(), numbers.end());

   std::cout << "Najwieksza liczba we wprowadzonym ciagu spelniajaca wymagania to: " << maxElement; //wyswietlamy maksymalny element wektora

   return 0;

}

Wyjaśnienie:

Pewnie ta się jakoś lepiej, ale na taki pomysł wpadłem. Jak coś niejasne to pytaj :)

Inne Pytanie