Kezdőoldal » Számítástechnika » Programozás » Hogy kell ezt megírni pascalba...

Hogy kell ezt megírni pascalban (tömbök)? Többi lenn.

Figyelt kérdés
Olvassunk be tömbök segítségével, hogy mennyi pénzt költött Gábor és Márti 2011-2015 között ruhára, majd tegyük lehetővé annak megkérdezését, hogy egy adott évben mennyit költött ruhára Gábor, Márti vagy a kettő összesen. A lekérdezés addig folytatódjon, amíg 0-t nem ütünk be egy adott évben. Hogy kell ezt megírni Pascalban?

2015. febr. 17. 15:55
1 2
 1/11 anonim ***** válasza:
Mi az, ami nem megy az órán tanultak alapján sem?
2015. febr. 17. 16:09
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

Elkezdtem próbálgatni a tömbös részeket, és eljutottam idáig:

program tomb;

uses crt;

const

max=2015;

var marti: array[1..max] of integer;

gabor: array[1..max] of byte;

i:integer;

szam:integer;

osszeg:integer;

Begin clrscr;

szam:=2010;

osszeg:=0;

for i:=1 to 5 do begin

szam:=szam+1;

write('ruhara koltott penz osszege ',szam,'-es evben '); readln(marti[i]);

osszeg:=osszeg+marti[i];

end;

write('penz ',osszeg);

readln;

end.


Ez kiegészítve jó kellene legyen?

2015. febr. 17. 16:22
 3/11 A kérdező kommentje:
az a byte ott hülyeség, azt majd átírom. :)
2015. febr. 17. 16:23
 4/11 SimkoL ***** válasza:

Hát még vérzik egy pár sebből, de kezdetnek.....

A Pascalnak meg van az az előnye, hogy a tömb indexeket beállíthatod magadnak deklaráláskor tehát array[2011..2015]..., ciklusba is mehet i := 2011 to 2015 do... szam:=szam+1; helyett i,

Kapásból ennyi.

2015. febr. 17. 17:54
Hasznos számodra ez a válasz?
 5/11 SimkoL ***** válasza:

Ha már kiküzdötted magad és netalántán :) nem jött volna össze:


program Tomb;


uses Crt;


const max_koltes = 100000;


var

gabor, marti : array[2011..2015] of integer;

i : integer;

lekerdezes : char;

begin

// A hibakezeléseket kihagyom , bár a szíem vérzik

ClrScr;

Randomize;

// Feltöltés, nincs kedvem 10 adatot mindig begépelni

// jöhet helyette a Write... ReadLn(Gabor[i]);....

for i := 2011 to 2015 do

begin

gabor[i] := Random(max_koltes);

WriteLn('Gabor: ', i, ' evben ', gabor[i]:6, ' forintot koltott');

marti[i] := Random(max_koltes);

WriteLn('Marti: ', i, ' evben ', marti[i]:6, ' forintot koltott');

end;

ReadLn;

ClrScr;

// Lekérdezés

repeat

Writeln('"G"abor: G');

Writeln('"M"arti: M');

Writeln('Mind"k"etto: K');

Write('Valassz: ');

lekerdezes := ReadKey;

case UpCase(lekerdezes) of

'G': WriteLn('Gabor koltese');

'M': WriteLn('Marti koltese');

'K': WriteLn('Kettojuk koltese');

end;

Write('Melyik ev - 0 - ra kilep: ');

ReadLn(i);

case UpCase(lekerdezes) of

'G': WriteLn('Gabor koltese ', i, ' evben: ', gabor[i], ' forint');

'M': WriteLn('Marti koltese ', i, ' evben: ', marti[i], ' forint');

'K': WriteLn('Kettojuk koltese ', i, ' evben: ', marti[i] + gabor[i], ' forint');

end;

until i = 0;

end.

2015. febr. 17. 19:55
Hasznos számodra ez a válasz?
 6/11 SimkoL ***** válasza:
...de legalább elkezdted :(
2015. febr. 17. 21:53
Hasznos számodra ez a válasz?
 7/11 tabaki ***** válasza:

Furcsákat írsz, Kérdező, de legalább 4 dolog a javadra írható:

1. Legalább próbálkoztál, és nem adtad fel harc nélkül.

2. Értelmes változóneveket használsz, nem ötletszerű betűjeleket.

3. A változókészletből sejthető, hogy valami dereng arról, mit igényelne a feladat.

4. A programod olyan lett, amilyen, de lefordul, és le is fut, üdítő ellentétben másokéval, akik csak értelmetlenül odahánynak a kedvünkért néhány pascal-kifejezést, ami az agyukban megragadt, aztán annyi a műsor. Akár folytathattad volna némi átgondolás után...


@SimkoL:

Nálam, vélhetőleg az integerek túlcsordulása miatt, mínusz számok is keletkeznek, javaslom a longintet. Módosítottam a programodat kétdimenziós tömbre, hátha Kérdezőnek ez is érdekes, a hibakezelést én is hanyagoltam:

[link]

Ez ugyanaz, csak még a színekkel is bohóckodtam, ha már CRT-ben vagyunk:

[link]

2015. febr. 18. 05:27
Hasznos számodra ez a válasz?
 8/11 SimkoL ***** válasza:

Nem tudom Linux alatt mik az alap beállítások a Free Pascal, Lazarusnak, nekem Win alatt nem SmallInt-nek 'ismerte fel'. Delphi-ben nincs ilyen gond. Mondjuk már egy párszor tapasztaltam, hogy nem mindegy ha Lazarus konzolos alkalmazást csinálsz vagy simán a Free Pascal-ban írogatsz. Lazarus konzolban alapból bármilyen méretű lehet egy string, alapból érvényes az {$H+}, még ha külön benne is van az elején - mondjuk ez érdekes, hogy miért -, Free Pascal-ban be kell kapcsolni.

Közben megnéztem Turbo Pascal-ban is, ott is SmallInt-nek veszi. Hát legközelebb fel kell idézi a múltat.

2015. febr. 18. 12:19
Hasznos számodra ez a válasz?
 9/11 tabaki ***** válasza:
Hát igen, lehet, hogy valami turbós hagyomány miatt őrizgeti a smallintet. Én az alapbeállításokkal nem foglalkoztam, hagytam, hogy a Geany hívja fordítót, ahogy a Jóisten megadta, aztán ez lett.
2015. febr. 18. 14:06
Hasznos számodra ez a válasz?
 10/11 SimkoL ***** válasza:
Valószínű a 'memória szegényes' időkre vezethető vissza. 2 byte / darab :)
2015. febr. 18. 16:42
Hasznos számodra ez a válasz?
1 2

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!