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] program na podzielną przez 3

D-Generat-X 14 Kwi 2012 12:10 3082 13
  • #1 14 Kwi 2012 12:10
    D-Generat-X
    Poziom 7  

    Muszę napisać program który po wprowadzeniu liczby rzeczywistej sprawdza czy jest ona podzielna przez 3 jednak gdy wprowadzam zmienną rzeczywistą Pascal twierdzi że "jest to niekompatybilny typ zmiennej"

    Kod: pascal
    Zaloguj się, aby zobaczyć kod

    0 13
  • #2 14 Kwi 2012 12:45
    akajarz
    Poziom 22  

    Pascala dawno nie używałem, ale...
    czy wprowadzasz zmienną x z przecinkiem jako miejscem dziesiętnym czy kropką?
    if x mod 3=0 --> w pascalu to bez nawiasów działa?

    0
  • #3 14 Kwi 2012 13:12
    Dżyszla
    Poziom 42  

    @akajarz - nawiasy nie są potrzebne.

    @D-Generat - nie można stosować operacji takich jak mod czy div do liczb zmiennoprzecinkowych, gdyż te operacje są ściśle związane z rozkazami podjednostki ALU procesora, a ona pracuje tylko na liczbach całkowitych. Ponadto jaki jest wg Ciebie sens sprawdzania, czy 3.1 jest podzielne czy nie? Możesz przedstawić definicję podzielności liczb rzeczywistych?

    0
  • #4 14 Kwi 2012 13:17
    D-Generat-X
    Poziom 7  

    tak racja chyba tu jest bład brak nawiasu
    a co do miejsc dziesiętnych to wpisujesz coś takiego
    np.

    Kod: pascal
    Zaloguj się, aby zobaczyć kod

    co oznacza że zmienna jest bez przecinków przed i po niej

    Dodano po 2 [minuty]:

    @Dżyszla
    nie mam zamiaru po przecinku sprawdzać tylko wprowadzasz dowolną liczbę rzeczywistą a program ma sprawdzać czy jest ona podzielna przez 3 czy też nie i ma wyświetlać jeżeli liczba jest podzielna

    0
  • #6 14 Kwi 2012 14:09
    D-Generat-X
    Poziom 7  

    dobra powiedzmy że mój nauczyciel jest lekko walnięty...dobra czyli jednak będzie trzeba pójść za radą Pascala czyli longint...a mój nauczyciel i tak powie że będzie źle

    0
  • #8 14 Kwi 2012 16:15
    D-Generat-X
    Poziom 7  

    tak tylko w tedy powie że jeszcze takich rzeczy jak "frac" czy "int" nie mieliśmy...
    chodzi mu oto żeby gdy liczba jest podzielna przez 3 została wyświetlona odpowiedź a jeżeli nie no to...eeee...żeby zatrzymać program

    0
  • #9 14 Kwi 2012 16:54
    walek33
    Poziom 28  

    Cytat:
    takich rzeczy jak "frac" czy "int" nie mieliśmy

    To, że na zajęciach nie mieliście to jedno, ale nigdzie nie jest powiedziane, że Twoja wiedza ma ograniczać się tylko do zajęć.
    To co podpowiedział Ci kolega to pascalowskie funkcje dla liczb rzeczywistych a o nie przecież chodzi. I tak:
    - frac(x) zwraca część ułamkową liczby
    - int(x) to konwersja do liczby całkowitej tj. zwraca część całkowitą nie mylić z zaokrąglaniem to robi round(x)

    0
  • #10 14 Kwi 2012 21:53
    D-Generat-X
    Poziom 7  

    no to trzeba będzie pokombinować...ale znając nauczyciel będzie mówił że ściągnąłem gotowca z internetu...dodatkowo nadal kompilator twierdzi że jest niekompatybilny typ zmiennej

    0
  • #11 15 Kwi 2012 00:07
    walek33
    Poziom 28  

    A zmieniłeś typ zmiennej na integer tak jak radzili Ci koledzy? Bez tej zmiany dziwisz się kompilatorowi? A przykład, że po zmianie działa masz na obrazku.
    [PASCAL] program na podzielną przez 3

    Dodane:
    Drobne sprostowanie do mojej poprzedniej odpowiedzi.
    Funkcja int(x) standardowo w TP nie występuje. W zastępstwie jest trunc(x).

    0
  • #12 15 Kwi 2012 11:44
    arnoldziq
    Moderator Programowanie

    Nauczyciele to podstępne bestie :P
    Zawsze się do czegoś przyczepią :P
    Wiem, bo sam się kiedyś do biednych studentów czepiałem :)
    Jakbym był na miejscu tego Twojego nauczyciela, to nie interesowałoby mnie czy liczna 33 jest podzielna przez 3...
    Ja raczej zapytałbym czy liczba np. 453748573868349649826992334423399198276 jest podzielna całkowicie przez 3.
    Ja zastosowałbym taki kod :

    Kod: pascal
    Zaloguj się, aby zobaczyć kod

    0
  • #13 15 Kwi 2012 11:54
    Dżyszla
    Poziom 42  

    Arnoldzikq, z całym szacunkiem i uznaniem dla pomysłu, ale chyba to nie do końca w temacie jest ;) Autor miał problem z liczbą rzeczywistą, a nie z samym algorytmem. No chyba, że zakładasz, że prowadzący zasugerował użycie zmiennej rzeczywistej aby umożliwić wprowadzenie większej liczby, niż 2G.

    @walek33 - masz rację, mój błąd. w TP jest Trunc, który zwraca część całkowitą w formacie LonInt. Zamiast podanego przeze mnie Int(x) należy użyć Trunc(x).

    0
  • #14 18 Kwi 2012 12:09
    D-Generat-X
    Poziom 7  

    @Dżyszla masz racje prowadzący chciał aby program sprawdzał czy liczba jest podzielna przez 3 z użyciem zmiennej rzeczywistej typu real

    0