Pascal opis programu

0

Witam potrzebuje pomocy mam program który zmienia liczby na notacje rzymskie i problem w tym ze muszę opisać krok po kroku działanie tego programu opis jest umieszczany w komentarzach Prosił bym o pomoc w dokończeniu

program ewerw1pi;

{$APPTYPE CONSOLE}

var                                     {definiujemy zmienne}
n:longint;
t,s,de,j : integer;
i,v,x,l,c,d,m:string;
begin                                  {zaczynamy wlasciwa czesc programu}

write ('Podaj liczbe z zakresu (0;4000) = ');     { Wyswietla napis w programie}

read (n);                        {program czeka na wprowadzenie zmiennych}

 if n<4000 then                 {program pada jakis warunek podejmuje decyzje  i wzalezniosci odniej wykonuje czynosc w tym przypadku jest to podanie liczby od jede n do 4000}
 if n>0 then
  begin
  t:=n div 1000;           {przypisujemy zmiennych poczatkowych wartosci }
  s:=(n-(t*1000)) div 100;
  de:=(n-(t*1000)-(s*100)) div 10;
  j:=(n-(t*1000)-(s*100)-(de*10)) div 1;
  i:='I';
  v:='V';
  x:='X';
  l:='L';
  c:='C';
  d:='D';
  m:='M';
  for n:=1 to t do

 begin
  write(m)
 end;

 if s=9 then
        begin
        write(c,m)
        end

 else

  if s>=5 then
   begin  write(d);
    for n:=1 to s-5 do
    write(c);
   end
     else
   if s=4 then
   begin
   write(c,d)
   end
  else  for n:=1 to s do write(c);

if de=9 then
        begin
        write(x,c)
        end
else

  if de>=5 then
   begin   write(l);
    for n:=1 to de-5 do
    write(x);
   end
   else
   if de=4 then
   begin
   write(x,l)
   end
  else  for n:=1 to de do write(x);


if j=9 then
        begin
        write(i,x)
        end
else


  if (j>=5) and (j<=8) then
   begin   write(v);
    for n:=1 to j-5 do
    write(i);
   end
  else
  if j=4 then
  begin
  write(i,v)
  end
  else
  for n:=1 to j do write(i)
end

else writeln('Bledne dane ;p');                     {wyswietla napis}

readln(n);
end.                      {koniec programu}
 
0
program  { zaczynamy program }
ewerw1pi { tak się nazywa }
;        { koniec instrukcji }
 
{$APPTYPE GUI} { program będzie konsolowy }
 
var      { definiujemy zmienne }
n	 { zmienna n }
:        { typu }
longint  { właśnie takiego }
;        { koniec instrukcji }

t        { zmienna t }
,        { oraz }
s        { s }
,        { oraz }
de       { de }
,        { oraz }
j        { j }
:        { typu }
integer  { takiego }
;        { koniec instrukcji }
i        { zmienna i }
,        { oraz }
v        { v }
,        { oraz }
x        { x }
,        { oraz }
l        { l }
,        { oraz }
c        { c }
,        { oraz }
d        { d }
,        { oraz }
m        { m }
:        { typu }
string   { takiego }
;        { koniec instrukcji }
begin    { zaczynamy wlasciwa czesc programu }
write    { itd. }
0

to znaczy nie chodziło mi o opis kazdego znaku tylko co sie dzieje z programem

0

no, jedziesz palcem po kazdej linijce, patrzysz co to za polecenie i już wiesz :]

0

TAK WIEM NUDZIŁO MI SIĘ xD

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var                                     {definiujemy zmienne}
n:longint;
t,s,de,j : integer;
begin                                  {zaczynamy wlasciwa czesc programu}

write ('Podaj liczbe z zakresu od 0 do 4000:  ');     { Wyswietla napis w programie}

read (n);                        {program czeka na wprowadzenie zmiennych}

if (n<4000) and (n>0) then   // przedział liczby która zostanie skonwertowana
begin
  t:=n div 1000;       // liczy ile tysięcy  {wykonujemy dzielenie}
  s:=(n-(t*1000)) div 100;    // setki
  de:=(n-(t*1000)-(s*100)) div 10;   // dziesiątki
  j:=(n-(t*1000)-(s*100)-(de*10)) div 1;    // jednosci

{********** TYSIĄCE **********}
for n:=1 to t do write('M');  // wyświetla tyśiące

{********** SETKI **********}
if s=9 then write('CM')   // gdy jest 9 setek to 900 > CM
else   // w przeciwnym razie

  if s>=5 then    // gdy jest 5 setek lub więcej..
   begin
    write('D');   // ..to wstawiamy 500 > D I wyświetlamy
    for n:=1 to s-5 do  // potem dodajemy setki jeśli przekracza 500
    write('C');     // i jeśli będą to je też wyświetlamy
   end
     else   // w przeciwnym razie gdy nie ma od 500 do 900..
   if s=4 then write('CD') // ..a jest 400 to wyświetlamy 400 > CD

       else  for n:=1 to s do write('C'); // gdy mniej niż 400 to dodajemy tylko setki

{********** JEDNOSCI **********}  // Chyba profesor już się powinien domyśleć xD
if de=9 then
        begin
        write('XC');
        end
else

  if de>=5 then
   begin   write('L');
    for n:=1 to de-5 do
    write('X');
   end
   else
   if de=4 then
   begin
   write('XL')
   end
  else  for n:=1 to de do write('X');


if j=9 then
        begin
        write('IX')
        end
else


  if (j>=5) and (j<=8) then
   begin   write('V');
    for n:=1 to j-5 do
    write('I');
   end
  else
  if j=4 then
  begin
  write('IV')
  end
  else
  for n:=1 to j do write('I')
end

else writeln('Bledne dane ;p');                     {wyswietla napis}

readln(n);
end.           
0

Fajne by było, żebyś chociaż ten kod sam napisał...
http://peb.pl/programowanie/107542-pascal-konwerter-liczb-dziesietnych-na-rzymskie.html


A żebyś wiedział, że nudziłem się... ```delphi Program ewerw1pi; // Program Ewerw1pi {$APPTYPE CONSOLE} // Konsola // Pusta linia Var N : LongInt; // Zmienna N typu LongInt T, S, De, J : Integer; // Zmienne T, S, De, J typu LongInt I, V, X, L, C, D, M: String; // Zmienne I, V, X, L, C, D, M typu String Begin // Zaczynamy program // Pusta linia Write ('Podaj liczbe z zakresu (0;4000) = ');// Wyświetlenie napisu // Pusta linia Read(N); // Czekamy na wprowadzenie danych (liczby) // Pusta linia if (N < 4000) Then // IF: Jeżeli N (wprowadzona przed chwilą liczba) jest mniejsza, niż 4 000, to idziemy dalej. if (N > 0) Then // IF: Jeżeli N (wprowadzona przed chwilą liczba) jest większa od 1, to idziemy dalej. Begin // Instrukcja blokowa (tak to się chyba nazywało ?) T := N Div 1000; // Do zmiennej T przypisujemy wartość N podzieloną przez 1000 S := (N - (T*1000)) Div 100; // Działanie algebraiczne (???) De := (N - (T*1000)-(S*100)) Div 10; // Działanie algebraiczne (???) J := (N - (T*1000)-(S*100)-(De*10)) Div 1; // Działanie algebraiczne (???) I := 'I'; // Trochę bezsensownego kodu V := 'V'; // Trochę bezsensownego kodu X := 'X'; // Trochę bezsensownego kodu L := 'L'; // Trochę bezsensownego kodu C := 'C'; // Trochę bezsensownego kodu D := 'D'; // Trochę bezsensownego kodu M := 'M'; // Trochę bezsensownego kodu For N := 1 To T Do // Pętla od 1 do T Write(M); // Wypisywanie w pętli wartości M // Pusta linia if (S=9) Then // Jeżeli S jest równe 9, to wypisz 'C' oraz 'M' Write(C, M) Else // A jeżeli nie jest równe 9, to if (S >= 5) Then // Jeżeli S większe, bądź równe 5, to Begin // (instrukcja blokowa) Write(D); // Wypisz 'D' For N := 1 To S-5 do // Pętla od 1 do 'S-5' Write(C); // W tej pętli wypisz 'C' End // (koniec instrukcji blokowej) Else // A jeżeli S nie jest większe, bądź równe 5... if (S = 4) Then // Ale jezeli jest równe 4, to... Write(C, D) // Wypisz 'C' oraz 'D' Else // Ale jeżeli tego warunku też nie spełnia, to... For N := 1 To S Do // ...pętla od 1 do 'S' Write(C); // Wypisz w pętli wartość 'C' // Pusta linia if (De = 9) Then // Jeżeli 'De' jest równe 9, to Write(X, C) // Wypisz 'X' oraz 'C' Else // A jeżeli 'De' nie jest równe 9... if (De >= 5) Then // Ale jest równe, bądź większe, niż 5, to Begin // (instrukcja blokowa) Write(L); // Wypisz 'L' For N := 1 To De-5 Do // Pętla od 1 do 'De-5' Write(X); // Wypisz 'X' End Else // (koniec instrukcji blokowej) if (De = 4) Then // Jeżeli D nie jest równe, bądź większe, niż 5, lecz jest równe 4, to Write(X, L) // Wypisz 'X' oraz 'L' Else // A jeżeli 'D' nie jest równe, bądź większe, niż 5 oraz nie jest równe 4, to For N := 1 To De Do // Pętla od 1 do 'De' Write(X); // Wypisz 'X' // Pusta linia if (J = 9) Then // Jeżeli 'J' jest równe 9, to Write(I, X) // Wypisz 'I' oraz 'X' Else // A jeżeli nie jest równe 9, if (J >= 5) And (J <= 8) Then // Lecz jest równe, bądź większa, niż 5, oraz jest równe bądź mniejsze, niż 8, to Begin // (instrukcja blokowa) Write(V); // Wypisz 'V' For N := 1 To J-5 Do // Pętla od 1 do 'J-5' Write(I); // Wypisz 'I' End Else // (koniec instrukcji blokowej) ; jeżeli J nie jest równe 9, oraz nie jest równe, bądź większe, niż 5 oraz nie jest równe bądź mniejsze, niż 8, if (J = 4) Then // A jest równe 4, to Write(I, V) // Wypisz 'I' oraz 'V' Else // Jeżeli J nie jest równe 9, oraz nie jest równe, bądź większe, niż 5 oraz nie jest równe bądź mniejsze, niż 8, oraz nie jest równe 4, to For N := 1 To J Do // Pętla od 1 do 'J' Write(I); // Wypisz 'I' End Else // (koniec instrukcji blokowej) ; jeżeli podano liczbę większą od 4000, lub mniejszą, niż 0, to WriteLn('Bledne dane'); // Wyświetl napis // Pusta linia ReadLn(N); // Odczytaj 'N' End. // Koniec programu (* /-------------------------------------------------------\ *) (* | Skomentował Patryk27 (wspomnij coś o mnie profesorkowi)| *) (* | | *) (* | Copyright © 2011 By Patryk27 | *) (* | All rights reserved / Wszystkie prawa zastrzeżone | *) (* \-------------------------------------------------------/ *) ```

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