Witam mam problem, nie działa mi program, który ma za zadanie zamienić dane wejściowe licznik i mianownik na ułamek dzisiętny uwzględniając ułamki okresowe. Czyli np dla danych wejściowych 1 i 2, powinien zwrócić 0.5000 (cyfry po przecinku zeleżne od tego ile sobie ustawie globalnie w tablicy). Wszystko dobrze hula ale dla danych wejściowych np 1 i 6 program wypisuje jakiś głupoty zamiast 0.1(6)
#include <iostream>
using namespace std;
const int MAX = 100;
int szukaj(int tab[MAX], int a, int wartosc){
for(int i = 0; i < a; i++)
if(tab[i] == wartosc){
return i;
}
return -1;
}
void wartosc_ulamka(int licznik, int mianownik){
cout << licznik / mianownik << ".";
int tab[MAX];
int reszty[MAX];
bool okres = false;
for(int i = 0; i < MAX; i++){
reszty[i] = -1;
tab[i] = 0;
}
licznik = licznik % mianownik;
for(int i = 0; i < MAX; i++){
licznik *= 10;
tab[i] = licznik / mianownik;
int liczba = szukaj(reszty, i, licznik % mianownik);
if(liczba != -1){
for(int j = 0; j < liczba; j++)
cout << tab[j];
cout << "(";
for(int j = liczba; j < i; j++)
cout << tab[j];
cout << ")";
okres = true;
break;
}
reszty[i] = licznik = licznik % mianownik;
if(reszty[i] == 0) break;
}
if(!okres)
for(int i = 0 ; i < MAX; i++)
cout << tab[i];
}
int main(){
int licznik, mianownik;
int tab[MAX];
cin >> licznik >> mianownik;
wartosc_ulamka(licznik, mianownik);
}