Anagramy cyfrowe
Powiemy, że dwie liczby naturalne a i b są anagramami cyfrowymi, jeśli liczbę a
(symetrycznie b) można zapisać dziesiętnie za pomocą cyfr występujących w zapisie
dziesiętnym liczby b (symetrycznie a), używając każdej cyfry dokładnie tyle razy, ile razy
występuje w zapisie b (symetrycznie w zapisie a).
Uwaga: przyjmujemy, że w zapisie dziesiętnym żadnej liczby nie ma nieznaczących 0, co
oznacza, że 0 występuje na najbardziej znaczącej pozycji tylko w zapisie liczby zero.
W pliku dane_anagramy.txt znajduje się 1000 par liczb całkowitych dodatnich, z których
każda jest nie większa niż 2000000. Każda para liczb jest zapisana w osobnym wierszu.
Liczby w wierszu są oddzielone pojedynczym znakiem odstępu. Napisz program(-y), który
poda odpowiedzi na następujące pytania. Obliczone odpowiedzi zapisz w pliku
wyniki_anagramy.txt. Odpowiedź do każdego pytania podaj w osobnym wierszu,
poprzedzając ją identyfikatorem pytania.
a) W ilu wierszach pliku dane_anagramy.txt zapisane w nich liczby to anagramy cyfrowe?
b) Ile maksymalnie liczb można znaleźć w pliku dane_anagramy.txt, z których każde dwie
to anagramy cyfrowe?
#include <iostream> #include <fstream> #include<string> #include<algorithm> using namespace std; int main() { string anagramy[2000]; ifstream we("dane_anagramy.txt"); ofstream wyniki("wyniki.txt"); for(int i=0;i<2000;i++) { we>>anagramy[i]; } int licz=0; for(int i=0;i<2000;i=i+2) { if (anagramy[i].size()!=anagramy[i+1].size()) cout<<"Nie sa"<<endl; else { sort(anagramy[i].begin(),anagramy[i].end()); sort(anagramy[i+1].begin(),anagramy[i+1].end()); if (anagramy[i]==anagramy[i+1]) licz=licz+1; } } wyniki<<"Anagramow jest:"<<licz; wyniki.close(); we.close(); return 0; }
Nie wiem czemu ,ale mi nie działa ten kod do podpunktu a ,proszę o pomoc w celu poprawy :))Z góry dzięki