Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PASCAL] Dzielenie pisemne za pomoca petli

akelem 27 Lis 2011 14:55 2402 11
  • #1 27 Lis 2011 14:55
    akelem
    Poziom 7  

    Cześć, potrzebuje pomocy w napisaniu pewnego programu w pascalu. Nie proszę Was o gotowca, a raczej o wskazówki. Potrzebuje prostego programiku który będzie wykonywał dzielenie pisemne w taki sposób:

    [PASCAL] Dzielenie pisemne za pomoca petli

    Nie mam pojęcia jak do tego się zabrać, wiem ze program musi wczytywać 1-2-3-4... cyfrę a następnie sprawdzać czy ta mieści się w dzielniku, jeżeli nie dopisuje kolejna cyfrę i program wykonuje petle.

    0 11
  • #2 27 Lis 2011 15:37
    Dżyszla
    Poziom 42  

    Algorytm dzielenia na wielobajtowych liczbach w systemie binarnym przedstawiłem w zlinkowanym tekście.

    Jeśli jednak chcesz zastosować stricte zasady dzielenia pod kreską, to również można. Najlepiej potraktuj liczbę wejściową jako ciąg tekstowy. Następnie od jego początku szukaj takiej wartości, która będzie większa (lub równa) od dzielnika. Wykonaj dzielenie, zapisz wynik także do ciągu tekstowego. Następnie resztę z dzielenia zapisz do tymczasowej zmiennej, pomnóż przez 10 i dodaj kolejną cyfrę z wejścia. I teraz już w koło Macieju :)

    Owszem, wszystko można by wykonać także na zmiennych liczbowych, ale czy nie łatwiej analizować w ten sposób i nie ograniczać się do dzielenia tylko "małych" liczb? ;)

    Praktycznie nie wiem, jak opisać algorytm, bo przecież jest on znany. Wystarczy to zaimplementować.

    0
  • #3 27 Lis 2011 17:34
    akelem
    Poziom 7  

    Wczytujemy liczby, pierwsza liczba > dzielnika jakie działanie program ma tutaj wykonać? a mod dzielnik = 0 ? Jakie maja być to działania, kolejność i schemat programu rozumiem, co ze sprawdzaniem, porównywaniem i dopisywaniem kolejnych liczba, oraz jak wspomniałeś wyżej reszta tymczasowa. W jaki sposób to zapisać jaką funkcją :?:

    0
  • #4 27 Lis 2011 19:39
    Dżyszla
    Poziom 42  

    Jak jaką funkcją? Dzieleniem!

    Tak naprawdę to cały pierwszy etap można pominąć - on ma na celu tylko eliminację wiodących zer. Więc wszystko sprowadza się do czegoś w stylu

    Kod: pascal
    Zaloguj się, aby zobaczyć kod

    0
  • #5 27 Lis 2011 20:19
    akelem
    Poziom 7  

    Wiem, wiem ze dzieleniem :)
    Załóżmy ze mamy liczbę 125 i chcemy ja podzielić w tym programie przez 5.
    Co robimy? Wczytujemy liczbę(125) dzielnik(5) a następnie tworzymy pętle, jaka to ma być pętla? Jak to ma wyglądać ze program sprawdza czy w 1-dycne mieści się 5-tka jeżeli nie przepisuje kolejna liczbę i tak dalej? Jak program ma to zrobić w bardzo prosty sposób, bez funkcji których nie znam(StrToInt) etc.

    0
  • #6 27 Lis 2011 20:56
    Dżyszla
    Poziom 42  

    IntToStr to po prostu zamiana liczby na string (zgodnie z nazwą). Praktycznie podałem gotowy algorytm. Pęlta? Wedle uznania! Może być for, while, repeat..until... Badasz tak długo, aż dojdziesz do końca ciągu wejściowego.

    0
  • #7 27 Lis 2011 23:38
    akelem
    Poziom 7  

    Mam kolejny problem, otóż podając liczbę ,przykładowo 125 nie wiem jak porównać pierwsza liczbę, gdyż jest ona przypisana do jednej zmiennej, miotałem coś z funkcją case, jednak wydaje mi sie ze to nie to :(

    http://iv.pl/images/37405347188069020211.jpg

    Programik musi wczytywać liczbę, dzielnik i wykonywać dzielenie pisemne znane nam z podstawówki, w zasadzie bardzo proste, jednak mecze sie z tym od paru dni.

    Pomocy :(!

    Zasady dodawania fotografii znajdziesz tu: Zasady - arnoldziq

    0
  • #9 28 Lis 2011 16:09
    akelem
    Poziom 7  

    Tzn ? Moglbys mi to napisac w prosty i konkretny sposob?

    0
  • #11 28 Lis 2011 18:06
    akelem
    Poziom 7  

    Free pascal, w tym momencie by sie przydał, próbowałem z Twoimi radami, nie miało to ładu, dalbys rade napsac prosty programik używając w nim prostych funkcji for, to,do, naprawdę podstawy :)?

    Moderowany przez arnoldziq:

    Jeszcze jedna taka prośba i "nagrodzę" kolegę ostrzeżeniem.
    3.1.17. (10.9, 16) Zabronione jest publikowanie wpisów obniżających ogólny poziom dyskusji, wynikających z lenistwa lub zawierających roszczeniowy charakter wypowiedzi.
    Proszę poprawić poprzednie posty zgodnie z moimi uwagami.

    0
  • #12 28 Lis 2011 18:51
    Dżyszla
    Poziom 42  

    Dobra, podstawowy, dosowy pascal nie ma inttostr ani strtoint. Można jednak zastąpić w tym szczególnym przpadku w dość specjalny sposób - liczby, jakie będziemy konwertowac nigdy nie przekroczą zakresu 0..9. Stąd zamiana znaku (tak znaku!) na liczbę będzie wyglądała tak:

    Kod: pascal
    Zaloguj się, aby zobaczyć kod
    Z kolei odwrotna funkcja da się zapisać tak:
    Kod: pascal
    Zaloguj się, aby zobaczyć kod

    Mając teraz funkcje konwersji znaków na liczby i liczb na znaki możesz wrócić do opisanego przeze mnie algorytmu. Na kompletny kod nie licz.

    (Arnoldziq - to była prowokacja ;) )

    0