Próbuję napisać program który ma za zadanie podać liczbę dzielników o największej ilości powtórzeń i liczbę powtórzeń tych dzielników. Lecz jak zawsze napotkałem problem ... ; [
#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;
int main()
{
long long int a, d;
int N, l = 0;
vector <int> vec, kr;
cin >> N;
for(int i = 0; i < N; i++)
{
cin >> a;
d = 2;
while(1)
{
if((a % d) == 0)
{
a /= d;
vec.push_back(d);
}
else
d++;
if(a == 1)
break;
}
}
for(int i = 0; i < vec.size(); i++)
cout << vec[i] << " | ";
cout << endl;
for(int i = 0; i < vec.size(); i++)
{
int k = 0;
l = vec[i];
while(1)
{
int j = 0;
cout << vec[j] << "$ ";
if(l == vec[j])
{
k++;
vec.erase(vec.begin() + j);
}
else
j++;
cout << vec[j] << " - " << k << endl;
if(j = vec.size())
break;
}
for(int j = 0; j < vec.size(); j++)
cout << vec[j] << " ~ ";
cout << endl;
kr.push_back(k);
}
for(int i = 0; i < kr.size(); i++)
cout << kr[i] << "-";
getch();
return 0;
}
Tak wygląda mój program ... a problem jest z pętlą która nie wiem czemu ale nie spełnia moich założeń ... ; /
for(int i = 0; i < vec.size(); i++)
{
int k = 0; // zlicza krotnosc liczby 'L' z ciagu
l = vec[i]; // przypisanie wartosci do zmiennej ... wartosc bedzie porownywana z innymi wartosciami ciagu
while(1) // petla ... podczas ktorej liczba 'L' ma byc porownywana z liczbami w wektorze ...
{ // i gdy funkcja warunkowa bedzie zwracac wartosc 'TRUE' liczba 'K' zwiekszy swoja
int j = 0; // tworzenie zmiennej pomocniczej ktora zwieksza sie gdy 'L' nie jest rowne vec[j]
if(j = vec.size()) // jezeli 'J' jest rowne wielkosci wektora ...
{
kr.push_back(k); // dodanie elementu - liczby 'K' na koniec wektora 'kr'
break; // zakacz petle ... juz wiecej liczb 'L' nie znajduje sie w wektorze vec
}
if(l == vec[j]) // porownywanie vec[j] z liczba 'L'
{ // jesli tak ...
k++; // zwiekszenie liczby 'K' - krotnosc ktora ma byc zapisana do wektora kr
vec.erase(vec.begin() + j); // usuwanie elementu o indeksie 'J'
}
else // jesli vec[j] nie jest rowny 'L'
j++; // zwieksz indeks czyli liczbe 'J'
cout << vec[j] << " - " << k << endl;
}
}
Co mogłem przegapić ... bo już nie mam pomysłów a od doszukiwania się błędów bolą mnie oczy ; [