Kezdőoldal » Számítástechnika » Programozás » Pascal üzemanyag számítós...

Pascal üzemanyag számítós programot hogy kell?

Figyelt kérdés
A program kérje be a megtett távot,és mondja meg,hogy ha 6,5 l/100 km a fogyasztása,akkor mennyi üzemanyag fog kelleni.

2017. ápr. 11. 20:34
 1/10 anonim ***** válasza:

Hol akadtál el?

Nem tudsz kiírni valamit a konzolra?

Nem tudsz bekérni egy számot egy változóba?

Nem tudod összeszorozni a változó értékét egy számmal?

Nem tudod kiíratni a változó értékét?

2017. ápr. 11. 20:55
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

Le kell ülni, be kell gépelni.

2 perc kb.

2017. ápr. 11. 21:01
Hasznos számodra ez a válasz?
 3/10 tabaki ***** válasza:

Bemutathatnád a kódodat, hogy lássuk, meddig jutottál.

[link]

2017. ápr. 11. 21:47
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:

Egyetértek Tabaki kollégával:

[link]

2017. ápr. 11. 22:32
Hasznos számodra ez a válasz?
 5/10 tabaki ***** válasza:

program fuel;

uses crt;


const

ScreenWidth = 80;

StripLength = 60;

StripX = (ScreenWidth - StripLength) div 2;

IOLength = StripLength - 10;

IOX = (ScreenWidth - IOLength) div 2;

CaptionText = 'FOGYASZTAS-KALKULATOR';

QuestionText = 'A megtett tavolsag kilometerben: ';

AskText = 'A szukseges uzemanyag: ';

ErrorText = 'Hibas adat!';

ContinueText = 'Ujabb szamolas? (I/N)';

ty = 8;


var

x, y : byte;

ErrorCode : integer;

km : double;

c : char;

ColorStrip : string[StripLength] = '';

CleanerStrip : string[IOLength] = '';

InputString : string;


procedure TotalClean;

var tcy : byte;

begin

      TextAttr := $1E; ClrScr;

      TextAttr := $4E;

      for tcy := ty to ty + 8 do

            begin

                  GotoXY(StripX, tcy);

                  Write(ColorStrip);

            end;

      GotoXY((ScreenWidth - Length(CaptionText)) div 2, ty + 1);

      Write(CaptionText);

end;


procedure IOClean;

begin

      x := IOX; y := ty + 3;

      TextAttr := $2A;

      GotoXY(x, y); Write(CleanerStrip);

      GotoXY(x, y + 2); Write(CleanerStrip);

end;


begin

CursorOff; TextMode(3);

for x := 1 to StripLength do ColorStrip := ColorStrip + ' ';

for x := 1 to IOLength do CleanerStrip := CleanerStrip + ' ';

TotalClean;

repeat

      IOClean;

      GotoXY(x + 1, y); Write(QuestionText);

      TextAttr := $2F;

      ReadLn(InputString);

      if Length(InputString) > 10 then

            ErrorCode := 1

      else

            Val(InputString, km, ErrorCode);

      GotoXY(x + 1, y + 2);

      if ErrorCode > 0 then

            begin

                  TotalClean; IOClean;

                  TextAttr := $2F;

                  GotoXY((ScreenWidth - Length(ErrorText)) div 2, y + 2); Write(ErrorText);

            end

      else

            begin

                  TextAttr := $2A; Write(AskText);

                  TextAttr := $2F; Write(0.065 * km:0:2);

                  TextAttr := $2A; Write(' liter');

            end;

      TextAttr := $4E;

      x := (ScreenWidth - Length(ContinueText)) div 2;

      GotoXY(x, y + 4); Write(ContinueText);

      repeat

            c := ReadKey;

            c := LowerCase(c);

      until (c = 'i') or (c = 'n');

      GotoXY(StripX, y + 4); Write(ColorStrip);

until c = 'n';

TextAttr := 7; ClrScr; CursorOn;

end.

2017. ápr. 12. 00:49
Hasznos számodra ez a válasz?
 6/10 tabaki ***** válasza:
Nem t'om, hol járt az eszem, az AskText természetesen AnswerText akart lenni.
2017. ápr. 12. 03:07
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

unit = 6,5 / 100

unit * distanceFromKm


Ez a lényeg.

2017. ápr. 12. 17:04
Hasznos számodra ez a válasz?
 8/10 tabaki ***** válasza:

program uzemanyag;

uses crt, sysutils;


const

felkepernyo = 40;

ures = ' ';

L_per_KM = 0.065;

cim = 'UZEMANYAG-SZAMITO';

kerdes = 'Tavolsag kilometerben: ';

valasz = 'Uzemanyag: ';

hibauzenet = 'Hibas adat!';

tovabb = 'Ujabb szamolas? (I/N)';

y = 10;


var

km : double;

i, j, h, hiba : integer;

c :char;

beszoveg, kiszoveg : string;

begin

CursorOff; TextMode(3);

repeat

      TextAttr := $1B; ClrScr;

      GotoXY(31, y - 3); Write(cim);

      TextAttr := $A;

      GotoXY(1, y); Write(ures, ures);

      GotoXY(1, y); Write(kerdes); ReadLn(beszoveg);

      for i := 1 to Length(beszoveg) do

            if beszoveg[i] = ',' then beszoveg[i] := '.';

      if Length(beszoveg) > 10 then

            hiba := 1

      else

            Val(beszoveg, km, hiba);

      beszoveg := kerdes + beszoveg;

      h := Length(beszoveg);

      beszoveg := ures + beszoveg;

      if hiba = 0 then

            begin

            str(L_per_KM * km:0:2, kiszoveg);

            kiszoveg := ures + valasz + kiszoveg + ' liter';

            end

      else

            kiszoveg := ures + hibauzenet;

      for i := h to 40 do

            begin

            GotoXY(1, y); Write(RightStr(beszoveg, i));

            Delay(50);

            end;

      i := Length(beszoveg);     

      for j := 1 to 40 do

            begin

            Dec(i);

            TextAttr := $A;

            GotoXY(1, y); Write(RightStr(LeftStr(beszoveg, i), 40));

            TextAttr := $E;

            GotoXY(41, y); Write(RightStr(kiszoveg, j));

            Delay(50);

            end;

      TextAttr := $1B;

      GotoXY(29, y + 3); Write(tovabb);

      repeat

            c := ReadKey;

            c := LowerCase(c);

      until (c = 'i') or (c = 'n');

until c = 'n';

TextAttr := 7; ClrScr; CursorOn;

end.

2017. ápr. 12. 23:42
Hasznos számodra ez a válasz?
 9/10 tabaki ***** válasza:

Míg be nem fut a kódod, itt egy újabb kísérlet:


program uzemanyag;

uses crt, sysutils;


const

felkepernyo = 40;

ures = ' ';

L_per_KM = 0.065;

cim = 'UZEMANYAG-SZAMITO';

kerdes = 'Tavolsag, kilometerben:';

valasz = 'Uzemanyag, literben:';

hibauzenet = 'Hibas adat!';

tovabb = 'Ujabb szamolas? (I/N)';


var

szamok: array[0..10, 1..7]of string = (

(' MMM','MM MM','MM MM','MM MM','MM MM','MM MM',' MMM'),

(' MM',' MM','MMMM',' MM',' MM',' MM','MMMMM'),

(' MMM','MM MM','MM MM',' MM',' MMM','MM ','MMMMM'),

('MMMMM',' MM',' MM',' MMM',' MM','MM MM',' MMM'),

(' MM',' MMM','MMMM','M MM','MMMMM',' MM','MMMMM'),

('MMMMM','MM ','MM ','MMMM',' MM','MM MM',' MMM'),

(' MMM','MM MM','MM ','MMMMM','MM MM','MM MM',' MMM'),

('MMMMM','M MM',' MM',' MM',' MM ',' MM ',' MM '),

(' MMM','MM MM','MM MM',' MMM','MM MM','MM MM',' MMM'),

(' MMM','MM MM','MM MM','MMMMM',' MM','MM MM',' MMM'),

(' ',' ',' ',' ',' MM',' MM',' MM')

);


lehet : set of byte = [8, 13, 46, 48..57];

km : double;

i, j, hiba : integer;

szam : byte;

betu :char;

beSzoveg, kiSzoveg : string;

szamvege : boolean;


function szamjegyBe : byte;

begin

      repeat

            betu := ReadKey; if betu = ',' then betu := '.';

            szam := Ord(betu);

      until szam in lehet;

      case szam of

      8: szamjegyBe := 11;

      13: szamjegyBe := 100;

      else

            begin

            beSzoveg := beSzoveg + betu;

            if szam = 46 then szamjegyBe := 10 else szamjegyBe := szam - 48;

            end;

      end;

end;


procedure szamjegyKi(szjX, Yeltolas, hanyadik : byte);

var szjY : byte;

begin

      szjX := szjX * 8 + 3;

      for szjY := 1 to 7 do

            begin

            GotoXY(szjX, szjY + Yeltolas); Write(szamok[hanyadik, szjY]);

            end;

end;


procedure szamjegyTorles(szjX, Yeltolas : byte);

var szjY : byte;

begin

      szjX := szjX * 8 + 3;

      for szjY := 1 to 7 do

            begin

            GotoXY(szjX, szjY + Yeltolas); Write(' ');

            beSzoveg := LeftStr(beSzoveg, Length(beSzoveg) - 1);

            end;

end;


begin

CursorOff; TextMode(3);

repeat

      TextAttr := $1B; ClrScr;

      GotoXY(31, 1); Write(cim);

      GotoXY(3, 3); Write(kerdes);

      TextAttr := $1A;

      szamvege := false; beSzoveg := ''; i := 0;

      repeat

            j := szamjegyBe;

            case j of

            0..10:      begin

                        szamjegyKi(i, 4, j);

                        Inc(i);

                        if i > 5 then szamvege := true;

                        end;

            11:      if i > 0 then

                        begin

                        Dec(i);

                        szamjegyTorles(i, 4);

                        end;

            else szamvege := true;

            end;

      until szamvege;

      Val(beSzoveg, km, hiba);

      if hiba = 0 then

            begin

            TextAttr := $1B; GotoXY(3, 13); Write(valasz);

            Str(L_per_KM * km:0:2, kiSzoveg);

            kiSzoveg := kiSzoveg;

            TextAttr := $1E;

            i := 0;

            for j := 1 to Length(kiSzoveg) do

                  begin

                  szam := Ord(kiSzoveg[j]);

                  if szam = 46 then szam := 10 else szam := szam - 48;

                  szamjegyKi(i, 14, szam);

                  Inc(i);

                  end

            end

      else

            begin

            TextAttr := $1F; GotoXY(35, 15); Write(hibauzenet);

            end;

      TextAttr := $1B; GotoXY(30, 23); Write(tovabb);

      repeat

            betu := ReadKey;

            betu := LowerCase(betu);

      until (betu = 'i') or (betu = 'n');

until betu = 'n';

TextAttr := 7; ClrScr; CursorOn;

end.

2017. ápr. 16. 22:49
Hasznos számodra ez a válasz?
 10/10 tabaki ***** válasza:

Húha, ez a tömb nem fog működni a lenyelt szóközök miatt! Azt hiszem, ez már talán jobb lesz:


szamok: array[0..10, 1..7]of string = (

(' MMM','MM MM','MM MM','MM MM','MM MM','MM MM',' MMM'),

('   MM','   MM','MMMM','   MM','   MM','   MM','MMMMM'),

(' MMM','MM MM','MM MM','   MM',' MMM','MM   ','MMMMM'),

('MMMMM','   MM','   MM',' MMM','   MM','MM MM',' MMM'),

('   MM',' MMM','MMMM','M MM','MMMMM','   MM','MMMMM'),

('MMMMM','MM   ','MM   ','MMMM','   MM','MM MM',' MMM'),

(' MMM','MM MM','MM   ','MMMMM','MM MM','MM MM',' MMM'),

('MMMMM','M   MM','   MM','   MM',' MM   ',' MM   ',' MM   '),

(' MMM','MM MM','MM MM',' MMM','MM MM','MM MM',' MMM'),

(' MMM','MM MM','MM MM','MMMMM','   MM','MM MM',' MMM'),

('','','','','   MM','   MM','   MM')

);

2017. ápr. 16. 22:56
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!