👤

PROGRAMOWANIE C++, DAJĘ 80 PUNKTÓW I NAJ
Sławek pracuje w Centrum Astronomicznym Bitmir. Jego zadaniem jest sprawdzanie zgodności wzorów w sygnałach radiowych. Każdy sygnał reprezentowany jest przez czterocyfrową liczbę naturalną, której cyfry nie powtarzają się. W żargonie trafienie „wow!” następuje wtedy, gdy w dwóch porównywanych sygnałach cyfra na tej samej pozycji okaże się taka sama. Jeżeli cyfra nie występuje na tej samej pozycji, ale występuje w obu sygnałach, to mamy trafienie „ooo!”.

Napisz program, który wczyta ze standardowego wejścia dwa sygnały i wyświetli wynik porównania zgodności sygnałów w postaci liczby całkowitej nieujemnej, której cyfra dziesiątek oznacza liczbę trafień „wow!”, a cyfra jedności liczbę trafień „ooo!”.


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <string>

int samePlaceDigits(int num1, int num2) {

   std::string string1 = std::to_string(num1); //zamieniamy na stringa zeby miec dostęp do pojedynczych cyfr

   std::string string2 = std::to_string(num2); //jak wyżej

   int wowCounter = 0; //licznik

   for (int i = 0; i < string1.length(); i++) { //sprawdzamy odpowiadające pozycje

       if (string1[i] == string2[i]) {

           wowCounter++; //jesli jednakowe pozycje jednakowe to zwiekszamy licznik

       }

   }

   return wowCounter; //zwracamy licznik

}

int notSamePlaceDigits(int num1, int num2) {

   std::string string1 = std::to_string(num1);

   std::string string2 = std::to_string(num2);

   int oooCounter = 0;

   for (int i = 0; i < string1.length(); i++) {

       for (int j = 0; j < string2.length(); j++) {

           if (string1[i] == string2[j] && i != j) { // jesli sa jednakowe, ale nie na odpowiadajacych miejscach

               oooCounter++;

           }

       }

   }

   return oooCounter;

}

int main() {

   int num1, num2;

   std::cin >> num1 >> num2;

   std::cout << 10 * samePlaceDigits(num1, num2) + notSamePlaceDigits(num1, num2);

   return 0;

}

Wyjaśnienie:

Jak coś niejasne to pisz