Programy w Pascalu z podręcznika Arciszewskiego

0

Witam, mam pewien problem. Mianowicie, nie owijając w bawełnę, z informatyki jestem kompletne zero, dno, po prostu pustka intelektualna. Wczoraj koleś od ćw. uszczęśliwił moją grupę każąc nam napisać 3 programy w Pascalu. Siedziałam dziś nad tym cały dzień i efekt jest marny niestety. Dlatego proszę Was o pomoc. W zamian mogę spróbować pomóc z innego przedmiotu, napisać jakieś wypracowanie lub coś takiego. Z góry dziękuję :)
Treść zadań:

  1. Napisać program wyznaczający cyfry x, y, tak, aby liczba 286y124x była podzielna przez 12.
  2. Napisać program wyznaczający 155 cyfrę po przecinku rozwinięcia dziesiętnego liczby 7/13.
  3. Napisać program wyznaczający sumę dzielników liczby 170 będących liczbami pierwszymi.

Bardzo mi zależy na tym, żeby ktoś mi pomógł, szczególnie, że mamy mu to wysłać do niedzieli.

Pozdrawiam. Martyna :)

0

wstrętny koleś od ćw - jak może coś wymagać, przecież tłumaczył wszytko tylko kilka miesięcy... Może trzeba było uważać na zajęciach.

0

Pewnie, najłatwiej to stwierdzić, że ktoś nie uważał, to się rozumie samo przez się. Zmienili mi ćwiczeniowca 2 zajęcia temu, poprzedni, który był świetny swoją drogą, bo tłumaczył rewelacyjnie poszedł na zwolnienie lekarskie i nie będzie go do końca semestru. Nowy przyszedł, napisał nam na tablicy 5 linijek, kazał przepisać do Lazarusa, po czym stwierdził, że możemy sobie już jakoś poradzić, w dobie internetu (jego słowa) i napisać mu te 3 programy, bo musi mieć z czego wystawić oceny do zaliczenia. Gdybym nie próbowała tego zrobić sama nie byłoby to w porządku, siedziałam nad tym jednak cały dzień i teraz szukam pomocy u osób, które mogą mi jej udzielić. Jednakowoż szanuję Twoje zdanie, nie chcesz, nie pomagaj. Nie studiuję informatyki, nie potrzebuję jej do niczego, ale staram się jak mogę, więc proszę. A z Pacsalem jako takim mam kontakt od 2 tygodni, a nie kilku miesięcy, wcześniej braliśmy Unixa.

0
Tysiulec napisał(a)

Gdybym nie próbowała tego zrobić sama nie byłoby to w porządku, siedziałam nad tym jednak cały dzień

Pokaż co już masz...

A tak nawiasem mówiąc, to jest pora roku, kiedy masę osób ma problemy: bo zmienili im wykładowcę, bo z powodu choroby nie mogli chodzić na zajęcia, bo ...

O, jest Olesio - więc zapewne problem z głowy ;)

0

Jasne, najlepiej naściemniac o zmianach wykładowcy. I nie rozumiem
po co szłaś do szkoły czy uczelni na kierunek, gdzie w ogóle będziesz
miała do czynienia z programowaniem, jeżeli nie potrafisz w ogóle nic
samodzielnie pokombinowac ani poszukać w google. Ech... po prostu
ręce opadają i nie tylko. Zaczął się sezon zaliczeń to już wiadomo, ze
tutaj pojawi się masę postów w stylu: "nie tłumaczono mi nic i teraz
zróbcie za mnie te X zadań, za darmo, a najlepiej na jutro, i jeszcze
niech będą komentarze do kodu". Ok, pierwsze zadanie masz poniżej
zrobione na prędce. A najprościej było by zdobyć te książkę mając na
to trochę czasu na pewno i poczytać. Nie uwierzę w to, że ktoś dal Ci
takie zadania nie wyjaśniając podstaw języka ani nawet wchodząc w
jakieś konkretniejsze szczegóły. Pewnie da się to napisać inaczej, no
ale ja kończyłem studium policealne jakiś czas temu i tam było tylko
Delphi, a poza tym ja się nie znam, bo wiadomo - umiem polecać na
tym forum tylko Synapse i tyle. A napisałem to zadanie - tak, jak je
zrozumiałem i tak jak potrafiłem. Pod Delphi czy Lazarusem można
użyć modułu SysUtils zamiast tych dwóch funkcji i dać typ integer,
ale było to napisane w Turbo Pascalu, bo jak ktoś pisze tutaj, że w
Pascalu ma być kod to ja rozumiem stare środowiska, bo tak to już
na ogół bywa, że się je stosuje. Co do drugiego nie mam pojęcia, a
trzecie idzie napisać jak się wygoogluje samodzielnie przykładowe w
Pascalu kody na wyznacznie liczb pierwszych. Jest tego mnóstwo, a
jak się Tobie dalej nie chce to znajdź kogoś kto wykona Ci szybko w
krótkim czasie te pozostałe zadania za pieniądze. Jest na tym forum
od tego dział: Offtopic - Praca. Ech, te zaliczające lenie i leniwice ;/

program tysiu1;

function StrToInt(S : string) : Longint;
var
  I : Longint;
  Code : integer;
begin
  Val(S, I, Code);
  if Code = 0 then
  begin
    StrToInt := I;
  end
  else
  begin
    StrToInt := 0;
  end;
end;

function IntToStr(I : Longint) : string;
var
  S : string[11];
begin
  Str(I, S);
  IntToStr := S;
end;

const
  S1 = '286';
  S2 = '124';
var
  S : string;
  Z : Longint;
  X, Y : Byte;
begin
  for X := 0 to 9 do
    for Y := 0 to 9 do
    begin
      S := S1 + IntToStr(Y) + S2 + IntToStr(X);
      Z := StrToInt(S);
      if Z mod 12 = 0 then
        Writeln('   ', Z);
    end;
  Readln;
end.

EDIT: madmike: machnąłem na prędce jak pisałem tylko te pierwsze, o ile to
w ogóle tak może wyglądać. Pozostale niech pogoogluje dziewczyna albo jak
nie uważało się / nie chodziło się na zajębia to musi teraz wykoszstować się,
aby ktoś tutaj przed niedzielą to zrobił za Nią, bo "za darmo umarło", no a to
forum jest od pomagania i naprowadzania - jak wiemy, a nie do odwalania w
całości za kogoś roboty. Nawet ja już się tak nie poświęcam jak kiedyś, bo w
sumie po co później zgraja haterów ma mi nawrzucać, a poza tym też już mi
się zwyczajnie nie chce, bo co to - ja "mudzin z Afrika", od klepania za kogoś
kodów do zaliczeń jestem? :) O nie nie moi drodzy, skończyło się od teraz ;P

0

A.d. 2 - podziel to sobie w kalkulatorze to zobaczysz pewna oczywista zaleznosc...(wlasciwosc) ktora mocno ulatwi sprawe.
1 - Podzielna przez 12 => podzielna przez 3*4. Liczba jest podzielna przez 3 jezeli suma jej cyfr jest podzielna przez 3, no a z 4 to juz oczywiste.

0

Ej, nie chcę gotowców, chcę, żeby mi ktoś pomógł. Wiem, że nikt nie lubi odwalać roboty za kogoś. Sama dosyć często rozwiązuję zadania z matmy na forach i nie widzę w tym jakiegoś szczególnego problemu. Po co poszłam na taki kierunek. Niestety na AGHu informatyka jest na prawie każdym kierunku, czyli mimo tego, że jestem dobra z matmy i fizyki powinnam sobie dać spokój ze studiami tak? Nie wiem, czy jest na stronie, ale możecie sobie sprawdzić, czy zmienili czy nie zmienili, Szczepanik się pan nazywa. Natomiast problemów z zaliczeniem jako takim nie mam, na razie mam 4,5 za kartkówkę i 5 z Unixa. I chodzę na wszystko, nie choruję i nie kantuję. Dziękuję tym, którzy pomogli :)

W zadaniu 2. na razie wyszło mi takie coś:

program Project3;
var
i,a,s:integer;
begin
s:=0;
for i:=1 to 170 do
begin
if 170 mod i = 0 then
begin
a:=2;
while (a<i) and ((i div a)*a<>i) do
a:=a+1;
begin
s:=s+i;
end;
end;
end;
writeln ('Suma dzielnikow = ',s);
readln;
end.

no i niby działa poprawnie, ale jednak liczba, która się wyświetla nie jest taka jak powinna.

0

1.Jaką liczbę wyświetla ?
2.Wrzuć to w znaczniki <delphi>
3.Czy ten kod "while (ai) do" w ogóle się kompiluje ?

0
  1. Tam mam a<i, niechcący usunęłam po wklejeniu.
  2. W którym miejscu mam dać te znaczniki?
    1. Dzielniki mają być liczbami pierwszymi.
0

Tysiulec, piszesz że jesteś dobra z matmy, więc z drugim zadaniem powinnaś sobie poradzić bez problemu. Wystarczy tylko wiedzieć, jak się dzieli pod kreską. Na pewno było w podstawówce!
Poniżej masz kod, niestety trochę ocenzurowany

program Project2;
var Dzielna, Dzielnik, Iloraz, Reszta, i: Integer;
    Rozwiniecie, TempString: string;
begin
  Dzielna:= 7;
  Dzielnik:= 13;
  Rozwiniecie:= '';
  Write(Dzielna, '/', Dzielnik ,' = ');
  for i:= 1 to 156 do begin  {156, aby otrzymać 155 cyfrę po przecinku}
    Iloraz:= {Uwaga: dzielenie liczb całkowitych!}
    Reszta:= 
    {Zamień Iloraz na łańcuch znakowy (procedura Str)}
    {Powiększ Rozwiniecie o Iloraz (oczywiście zamieniony na łańcuch znakowy)}
    Dzielna:= {Tu się kłania dzielenie pod kreską}
    if i = 1 then {Wstaw przecinek do rozwinięcia}
  end;
  Writeln(Rozwiniecie);
  Readln;
end.

A wynik działania programu jest taki: 7/13 = 0,53846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846153846

co można oczywiście zapisać krócej 7/13 = 0,(538461)

PS. Pochwal się działającym programem, to może uwierzymy, że chcesz to sama napisać. Piszę "może", bo nie mogę wypowiadać się za innych.

PS.2
20 grudnia 2010 o godz. 18:00 zniesiono cenzurę ;)

program Project2;
var Dzielna, Dzielnik, Iloraz, Reszta, i: Integer;
    Rozwiniecie, TempString: string;
begin
  Dzielna:= 7;
  Dzielnik:= 13;
  Rozwiniecie:= '';
  Write(Dzielna, '/', Dzielnik, ' = ');
  for i:= 1 to 156 do begin
    Iloraz:= Dzielna div Dzielnik;
    Reszta:= Dzielna mod Dzielnik;
    Str(Iloraz, TempString);
    Rozwiniecie:= Rozwiniecie + TempString;
    Dzielna:= (Dzielna - Dzielnik*Iloraz)*10;  {Dopisywanie zera}
    if i = 1 then Rozwiniecie:= Rozwiniecie + ',';
  end;
  Writeln(Rozwiniecie);
  Readln;
end.
0

Proszę :) Ten program ma wyznaczać liczbę liczb (głupio to brzmi ale tak), w przedziale od 1 do 1000, które nie dzielą się przez 5 lub 7 lub przez obydwie. Działa, wyznacza dobrze :) To jedyne co mi się wczoraj udało zrobić.

program project1;
var
i,s:integer;
begin
for i:=1 to 1000 do
begin
if (i mod 5 <> 0) and (i mod 7 <> 0) then
begin
s:=s+1;
end;
end;
writeln (s);
readln;
end.

0
Program Project1;
Var I, S: Integer;
Begin
 S := 0; //Ważne, aby zerować !
 For I := 1 To 1000 Do
  if (I Mod 5 <> 0) And (I Mod 7 <> 0) Then
   Inc(S);
 WriteLn(S);
 ReadLn;
End.

Tak ładniej.
PS: znacznik <code class="delphi"> wrzuć przed kodem.

A znacznik </code> wrzuć po kodzie.

0
Tysiulec napisał(a)

... które nie dzielą się przez 5 lub 7 lub przez obydwie. Działa, wyznacza dobrze :)
...

if (i mod 5 <> 0) and (i mod 7 <> 0) then

Czy aby na pewno?

PS. Chodziło mi o to, abyś uzupełniła program, który napisałem, a nie pokazała jakiś inny, który nijak się ma do zadań, które przedstawiłaś w pierwszym poście.

1 użytkowników online, w tym zalogowanych: 0, gości: 1