Czy ktoś nakieruje mnie jak zrobić zadanie?


(Ian Hiperwersum) #1

Mam do zrobienia zadanie z Pascala (na lekcji mówiliśmy trochę o Pythonie i pseudokod pisaliśmy) i kompletnie nie wiem jak się zabrać żeby coś konkretniejszego wyszło, bo nie znam się na komputerach. Jest ktoś kto może mi pomóc?

program zadanie;
var
  x:longint;
  i:longint;
  y:longint;
  z:longint;
 begin
        writeln('Imie Nazwisko','416234');
        readln;
        x:=416234;
        FOR i:=1 TO 416234 DO
           begin
             writeln ('x mod i', x mod i);
             end;
           if (x mod i =0) then
           begin
             writeln(i);
           end;
           readln;
           end.;
        readln;
 end.

(angry) #2

A na czym dokładnie polega?


(Ian Hiperwersum) #3

Jak widzicie mi nie wychodzi. Ktoś podpowie jak zrobić żeby zapisać te dzielniki?


(Drobok) #4

 Twoim problemem jest to, że twój program w ogóle nawet nie kojarzy się z tym co chcesz uzyskać. Zacznij od poczytania w necie na temat tablic, o begin end - ty używasz swojej pętli całkiem do czegoś innego niż byś chciał. Zrób tak:

  1. deklarujesz tablicę nadmiarową
  2. tworzysz licznik dzielników i przypisujesz do niego 1
  3. pobierasz swoje imie i nr do 2 osobnych zmiennych
  4. iterujesz od 1 do nr/2 np zmienną i
  • jeżeli reszta z dzielenia nr przez i jest zero
    • zapisujesz i do tablicy na index licznika_dzielników
    • zwiększasz licznik dzielników
  1. zapisujesz nr jako ostatni dzielnik
  2. tworzysz pętlę nieskończoną
  3. pytasz o liczbę
  4. jeżeli liczba > niż licznik dzielników kończysz pętlę
  5. jeżeli jest inaczej wyświetlasz z tablicy wartość pod indeksem z pobranej liczby

(floyd) #5
program zadanie;
uses crt;
var
  x:longint;
  i:longint;
  max:integer;
  ilosc:integer;
  numer:integer;
  nazwisko:string;

  ld:array[1..100] of longint;
 begin
 clrscr;
 max:=0;
         writeln('Nazwisko i imie',' - index');
        readln(nazwisko,x) ;
        FOR i:=1 TO x
        DO
        begin
           if (x mod i =0) then
           begin
            writeln(i);
            max:=max+1;
            ld[max]:=i;
           end
        end;
        writeln ('ilosc dzielnikow liczby - ',x,' do przetestowania');
        ReadLn(ilosc);
        for i:=1 to ilosc do
        begin
        writeln ('podaj numer dzielnika');
        ReadLn(numer);
        if (numer<=max) and (numer>0) then
        begin
        writeln ('dzielnik o numerze: ',numer, ' to ',ld[numer]);
        end
        else
        begin
        writeln ('moj index nie ma dzielnikow o takim numerze'
        );
        end;
        end;
repeat until keypressed;
 end.

Może być np tak, a tak przy okazji, to pascal jest obrzydliwy. :wink:


(Ian Hiperwersum) #6

OK, dziękuję jak zaloguję się na komputer w uczelni to sprawdzę.


(Ian Hiperwersum) #7

Najpierw chciałam uzyskać same dzielniki.

 

Ale dziękuję wszystkim już mam poprawny kod.