logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Nie jestem programista ale mam problem z bankiem - pomocy

Poke 09 Gru 2007 15:23 1455 11
REKLAMA
  • #1 4569278
    Poke
    Poziom 11  
    Posty: 24
    Ocena: 1
    Mam kolumne cyfr i mam sume - problem w tym ze nie wiem ktore cyfry z kolumny zostaly wlaczone do tej sumy - czy istenie jakas mozliwosc aby znalesc te cyfry ktore daja w wyniku dodawania w/w sume.

    Bankowi pojawila sie na koncie pewna kwota - jest z "kosmosu", chcialbym wiedziec skad onie to wzieli.
  • REKLAMA
  • #2 4569447
    Seba85
    Poziom 17  
    Posty: 110
    Pomógł: 24
    Ale gdzie jest ta kolumna i suma? W programie, który łączy się z bazą danych? Czy gdzie? Tak BTW to niewiele ma to wspólnego z programowaniem...
  • #3 4569464
    Poke
    Poziom 11  
    Posty: 24
    Ocena: 1
    Nie, mam ja w notatniku. I sume "bankowa" takze. Co do programowania to imho ma to bardzo wiele wspolnego - dla kogos to moze byc 5 minut pracy aby napisac taka procedurke. Stad prosba o pomoc.
  • #4 4569842
    Seba85
    Poziom 17  
    Posty: 110
    Pomógł: 24
    No dobra, no to teraz pytanie: jaki jest format danych? I to są cyfry czy liczby? Jeżeli liczby rzeczywiste, to jak są oddzielana część całkowita od ułamka, kropką czy przecinkiem? Najlepiej jakbyś podał krótki przykład jak wygląda taki plik, wystarczy kilka liczb.
  • REKLAMA
  • #5 4569857
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    uruchom exela - wklej tam ta kolumne i uzyj wbudowanej forumluy SUMA() ;) - szybkie, proste i kazdy moze to zrobic
  • REKLAMA
  • #6 4569942
    Seba85
    Poziom 17  
    Posty: 110
    Pomógł: 24
    Ja ten problem zrozumiałem tak: mamy kolumnę liczb i podaną sumę, a program ma wyliczyć jakie liczby z kolumny wchodzą do tej sumy... Jeżeli dobrze to zrozumiałem, to nie da się tego zrobić w excelu.
  • REKLAMA
  • #7 4570489
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    ta - tyle ze zauwaz, ze jezeli w tych kolumnach sa liczby ujemne i jezeli tych roznych liczb jest calkiem sporo to program nie znajdzie jedynego slusznego roziwazania tylko kilka mozliwych
    pomijajac to - jezeli bak daje historie konta to wszystkie operacje w niej uwzgeldnione musza byc zsumowane i potem na koncu podana sume - taka jest kolej rzeczy, wiec nie ma mozliwosci, zeby jakies liczby podane w kolumnie nie zostaly uwzglenione w sumie na koncu kolumny
  • #8 4571168
    Poke
    Poziom 11  
    Posty: 24
    Ocena: 1
    Moze byc kilka mozliwych, starczy i to choc nie sadze aby to bylo prawdopodobne przy kilkudziesiecu pozycjach.

    Co do banku to nie jest to wcale takie oczywiste, gdyby bylo to nie mialbym problemu. Rozliczenia KK sa specyficzne.
  • #9 4571242
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    coz - to zalezy od ilosci pozycji, ich wartosci oraz sumy jaka ma sie uzyskac
    generalnie taki programik bedzie dzialal bardzo wolno - bedzie musial sprawdzic wszytkie mozliwe kombinacje liczb dla 1, 2 itd az do ilosci wierszy w kolumnie - do zrobienia, ale testowanie tego byloby bardzo irytujace ;)
  • #10 4571326
    ostrytomasz
    Poziom 25  
    Posty: 494
    Pomógł: 82
    Ocena: 218
    Lepiej skontaktuj się z bankiem. To zagadnienie należy do grupy NP-complete i napisać można o metodach rozwiązywania niejedną książkę.
    Dla kilku-kilkunastu liczb możesz spróbować metody czołgowej:
    http://search.cpan.org/~andale/Algorithm-Knapsack-0.02/lib/Algorithm/Knapsack.pm
  • Pomocny post
    #11 4572372
    Seba85
    Poziom 17  
    Posty: 110
    Pomógł: 24
    Metoda siłowa wyglądałaby mniej więcej tak:

    #include "stdio.h"
    #define MAX_N 1000
    
    float liczby[MAX_N];
    bool liczona[MAX_N];
    float suma;
    int N;
    FILE* plikwe;
    FILE* plikwy;
    
    void sprawdz_sume(int i, float suma_czesc)
    {
    if(i == N)
      return;
    
    liczona[i] = false;
    sprawdz_sume(i+1,suma_czesc);
    suma_czesc += liczby[i];
    liczona[i] = true;
    sprawdz_sume(i+1,suma_czesc);
    
    if(suma_czesc == suma)
    {
      for(int k = 0; k <= i; k++)
         if(liczona[k])
           fprintf(plik_wy, "%f ", liczby[k]);
      fprintf(plik_wy, "\n");
    }
    }
    
    void wczytaj_dane(){
    // ta funkcja wczytuje liczby do tablicy liczby[] oraz wczytuje sumę
    // oraz ładuje do N liczbę liczb
    }
    
    
    int main(int argc, char* argv[])
    {
    plikwe = fopen(argv[1], "rt");
    plikwy = fopen(argv[2], "wt");
    
    if(argc != 3 || plikwe == 0 || plikwy == 0)
    {
      printf("Nieprawidlowe paramerty\n");
      return 1;
    }
    
    wczytaj_dane();
    sprawdz_sume(0, 0.0);
    fclose(plikwe);
    fclose(plikwy);
    return 0;
    }


    Pisałem ten kod na sucho, więc może są tu jakieś błędy, ale ogólna idea myślę że jest czytelna :). Trzeba jeszcze napisać metodę, która wczytuje dane z pliku.

    Wywołanie programu to: prog.exe plik_wejściowy.txt plik_wyjściowy.txt
  • #12 4579248
    Poke
    Poziom 11  
    Posty: 24
    Ocena: 1
    Dziekuje.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik posiada kolumnę liczb oraz sumę, ale nie wie, które liczby z kolumny składają się na tę sumę, co jest problemem w kontekście niejasnej kwoty pojawiającej się na koncie bankowym. Dyskusja wyjaśnia, że znalezienie podzbioru liczb dającego określoną sumę to problem kombinatoryczny (NP-complete), który dla większej liczby elementów jest obliczeniowo złożony. Proponowano użycie Excela do prostych sum, jednak nie rozwiązuje to problemu identyfikacji składników sumy. Zaproponowano metodę siłową (brute force) do sprawdzenia wszystkich kombinacji liczb, co może być czasochłonne, ale wykonalne dla niewielkiej liczby pozycji. Przykładowy kod w C ilustruje rekurencyjne sprawdzanie kombinacji liczb w celu znalezienia tych, które sumują się do podanej wartości. Wskazano również na specyfikę rozliczeń kart kredytowych oraz zalecenie kontaktu z bankiem w celu wyjaśnienia pochodzenia kwoty.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA