Hirdetés
Új hozzászólás Aktív témák
-
@Jocó@
tag
-
@Jocó@
tag
Sziasztok!
Az alábbi feladatot nekem is átdobta MSN-en a felhasználó. Nagyon rég Pascaloztam, kb 5 éve, de nekiültem megcsinálni én is. (egy másik fórumról keresett meg).
Csinálom már két órája a feladatot (gondolhatjátok mennyit felejtettem ennyi idő alatt), már csak a legvége volt hátra, és elémvágja az illető a fentebb megírt programot.
Az ideg elkapott, hogy több helyen is próbálkozik, hogy megirassa péntekre a háziját. Mellesleg megjegyzem, egy pascal fordító nincs a gépén.
Szóval megvan a vélemény...
Jah, letöltöttem én is, de nekem az elején lévő unit miatt nem futott le. Régi Turbo Pascalom van, valamikor az idők folyamán csinálhattam vele valamit, mert runtime hiba nincs, de nincs sajna ilyen unitom se, így nem tudom fordítani
Amelyik suliba kell a program, sztem ott sincs ilyen unit. (hacsak nem szériatartozéka a turbo pascalnak, csak nálam törlődött az idők folyamán)
Mindenesetre sok sikert!
Én megírom a programot végig, és megkérnék mindenkit, aki itt dolgozott, hagyja a kolléga úrra, hagy szenvedje ki magából, vagy ha nem megy neki, akkor megkapja tőlem egy két sör fejében.
Bocsánat, ha kicsit undoknak tűnök, csak eléggé idegesítő, amikor két órája bújom a könyvet, hogy hogy is kell tömböt pascalban létrehozni, meg ecetera, és elémvágnak egy kész forráskódot. -
alitak
senior tag
Időközben megírtam a programot, de csak azért, mert soha nem jön rosszul a gyakorlás, pláne a holnapi infó miatt. Sokat nem vacakoltam a progival, de meg. A kiírtaáson kéne dolgozni, hogy két oszlopba írja, nekem nincs már rá hangulatom.
program asdf;
uses newdelay,crt;
var tomb:array[1..100,1..100] of integer;
b:array[1..100] of integer;
i,j,x,eredmeny,val:integer;
procedure menu;
begin
clrscr;
writeln('1: legkisebb elem');
writeln('2: sorok osszege');
writeln('3: oszlopok osszege');
writeln('4: elemek szama');
writeln('5: kilepes');
write('Valassz:');read(val);
end;
procedure kis;
begin
x:=tomb[1,1];
for i:=1 to 100 do
for j:=1 to 100 do if tomb[i,j]<x then x:=tomb[i,j];
clrscr;
write('A tomb legkisebb eleme: ',x);
readln;readln;
end;
procedure sor;
begin
clrscr;
for i:=1 to 100 do begin
eredmeny:=0;
for j:=1 to 100 do begin
eredmeny:=eredmeny+tomb[i,j];
end;
writeln(i,'. sor adatainak osszege ',eredmeny);
end;
readln;readln;
end;
procedure oszlop;
begin
clrscr;
for i:=1 to 100 do begin
eredmeny:=0;
for j:=1 to 100 do begin
eredmeny:=eredmeny+tomb[j,i];
end;
writeln(i,'. oszlop adatainak osszege ',eredmeny);
end;
readln;readln;
end;
procedure elemek;
begin
for i:=1 to 100 do
for j:=1 to 100 do
inc(b[tomb[i,j]-100]);
for i:=1 to 100 do writeln(i,' elemek szama ',b);
readln;readln;
end;
begin
clrscr;
for i:=1 to 100 do b:=0;
randomize;
for i:=1 to 100 do
for j:=1 to 100 do
tomb[i,j]:=random(101)+100;
repeat
menu;
case val of
1:kis;
2:sor;
3:oszlop;
4:elemek;
end;
until val=5
end.
mod: smile off
[Szerkesztve] -
cucka
addikt
így már jobb
csinálj egy külön tömböt (legyen a neve mondjuk szamol), amelynek 101 eleme van. ebben fogod nyilvántartani, hogy melyik szám hányszor volt. pl. szamol[10]-ben megtalálod, hogy a 109 hányszor szerepelt a táblázatban. (a tömböd 1..101-ig van indexelve, a számaid meg 100-tól 200ig vannak, tehát számból úgy csinálsz indexet, hogy kivonsz belőle 99-et).
amikor végigmész az eredeti tömbön, minden elemnél karbantartod ezt a fenti tömböt is, és kész is vagy. -
dref
csendes tag
Nah sikerült nagyából megcsinálnom , már csak a 4 esben szeretnék segítséget kérni .
-
cucka
addikt
vicces azért, hogy félév végén mennyire megszaporodnak az ilyen jellegű hozzászólások.
''lécci segítsetek, egy kész, megírt, kitesztelt programra lenne szükségem azonnal, plz omg léciléciléci''
a feladatleírásban pedig jellemzően valami teljesen primitív programot kérnek, ahol a legdurvább rész mondjuk egy tömb elemein történő iterálás, vagy esetleg szöveg bekérése billentyűzetről...
majd egyszer valaki az én beadandóimat is megírhatná itt, kap cserébe egy virtuális sört. naa léciléciléci, higyjétek el, nekem is nagyon fontos és sürgős lenne.. -
alitak
senior tag
Itt komplett progit nem valószinű, hogy kapsz. Itt van segítség:
feltöltéshez lesz ciklus a ciklusban, két számlált menetű ciklus, 1-től 100-ig.
A random(101)+100 függvény 100-200 közötti számot ad vissza majd.
Menüt nem tudom milyen komolyat kell, tehát kurzorbillentyűkkel-lépegetős, egérrel, vagy elég csak a menüpont előtti számot beírni.
Mindenképpen lesz egy repeat...until, egy billentyűbekérés.
1: a legkisebb elemre: ismét ciklus a ciklusban, berakod az [1,1] elemet egy változóba. megnézed az [1,2] elemet, ha ez kisebb, akkor berakja az előbbi változóba.
2: megintcsak ciklus a ciklusban, eredmény=eredmény+tömb[1,1]. Aztán eredmény=eredmény+tömb[1,2]... A végén kiírod az eredményt.
3: oszlop ugyanaz mint a sor.
4: létrehozol egy b tömbböt, ami 1-től lesz 100ig. Megnézed az kétdimenziós tömb első elemét. Ha pl 135, akkor növeli az értékét a b tömb 35-ik elemének. A végén kiíratod.
5:re pedig kilép a repeat-until ból. -
dref
csendes tag
Hy !
VAlaki aki ért a turbo pascal-hoz, segítsen...
Egy megírt programra lenne szükségem ami a következőket tudja :
2 dimenziós tömb, feltölteni véletlen számokkal melyek 100-200 között vannak, Menü legyen mely ezeket tartalmazza:
1:kiválasztja a tömb legkisebb elemét
2: soronként kiszámolja az összegeket és ki is irja
3: oszloponként kiszámolja az összegeket és ki is írja
4:megszámolja és kiirja hogy a 100 hánydszor a 101 hányszor... stb mennyiszer szerepel
5:kilépés
Nemtudom neketek ez mennyire nehézde ... Iszonyat fontos lenne !!!
PLZ HELP ! -
Cxgrav
aktív tag
válasz
várnarancs #1677 üzenetére
Hali!
Elküldtem a hatványozós prg-t a gmailos címedre. Elég favágó lett a prg, mert idő hiányában 10 perc alatt összedobtam, de remélem megfelel. -
Lortech
addikt
válasz
várnarancs #1677 üzenetére
Hatványozni mindössze ennyi:
eredmeny := alap;
for i := 1 to kitevo - 1 do eredmeny := eredmeny * alap;
Ha kifejezetten csak kétjegyűekre kell működjön, addig kérsz be, amíg 10 és 100 között nem lesz a szám ( pl repeat until), az eredmeny real kell legyen legalább, mert longintben a 74^5 már túlcsordul. Az eredményt writeln(eredmeny:0:0 formában lehet kiiratni). -
Lortech
addikt
Biztos jó, én így csináltam :
program szorzo;
uses crt,dos;
var
vsz,i,t1,t2,tipp, mini: byte;
h,h_, m,m_, s,s_, hund, hund_ : Word;
eltelt,min: longint;
begin
randomize;
writeln('Versenyzők száma: ');
readln(vsz);
min:=maxlongint;mini:=0;
for i:=1 to vsz do
begin
writeln(i,'. versenyző');
t1:=(random(10));
t2:=(random(10));
writeln('Mennyi ',t1,' * ',t2,'?');
GetTime(h,m,s,hund);
readln(tipp);
GetTime(h_,m_,s_,hund_);
eltelt:=(hund_+s_*100+m_*60*100+h_*60*60*100)-(hund+s*100+m*60*100+h*60*60*100);
writeln(eltelt);
if (tipp=t1*t2) and (min > eltelt) then
begin
min:=eltelt;
mini:=i;
end else if t1*t2 <> tipp then writeln('Nem annyi, kiestél!');
end;
if (mini <> 0) then writeln(mini,'. versenyző volt a leggyorsabb!')
else writeln('Senki sem válaszolt jól');
end.
Tehát ha nem jót írt be, kiesett, nincs versenyben. Ez már értelmezés kérdése, lehet addig ismételni neki a kérdést, amíg jó választ nem ad. Én így gondoltam.
Tieddel kapcs. megjegyzések: randomize procedúrát hívd meg, különben a random mindig ugyanazt fogja generálni. Az első gettime-ot a writeln-okkal cseréld meg, mert a kiiratás is időbe kerül ugyebár, és nem mindig ugyanannyiba, ezért logikailag utána kell álljon a pontosabb eredmény érdekében. Gyakorlatban persze csak extrém esetben lesz jelentősége, de egy ''olyanabb'' tanár simán beleköthet.
Most nézem, hogy már meg kellett védened vsz, akkor meg mindegy. -
várnarancs
addikt
Hy all!
Mivel én már régen Pascaloztam, és mindent elfelejtettem éppen ezért fordulok hozzátokA lényeg az lenne, hogy kellene egy olyan progi, amikor a kétjegyű számokat beírom neki, és ő meg kidobja a 2 jegyű számok 5. hatványát! Megcsinálná vki nekem?
Köszönettel: Várnarancs -
kem
addikt
csak egy részét csináltam meg,elég is lesz.
[link]
ez vanbenne:
---------------------------------------------------------------------------------------------------
begin
.......... a:=random(10)+1;
.......... b:=random(10)+1;
.......... gettime(o,p,mp,s);
.......... writeln(i,'. játékos feladata: ');
.......... writeln('Mennyi ',a, '* ',b,' ?');
.......... readln(valasz);
.......... gettime(o2,p2,mp2,s2);
.......... ido2:=((o2-o)*360)+ ((p2-p)*120)+((mp2-mp)*60)+(s2-s);
.......... if (valasz=a*b) and (ido>ido2) then
.................... begin
.................... ido:=ido2;
.................... jsz2:=i;
.................... end;
.......... end;
writeln('a legjobb eredményt a ',jsz2,'. játékos érte el');
---------------------------------------------------------------------------------------------------
szerintetek jó? -
kem
addikt
válasz
Lortech #1664 üzenetére
Szia.Sikerültígy megcsinálnom,de nem tudok stuktogrammot csinálni, mert a gettime meg ilyeneket nem tudom,hogy kell.
program szorzo;
uses crt,dos;
var jsz,jsz2,i,a,b,valasz,ido,ido2:integer;
var o,p,mp,s,o2,p2,mp2,s2:word;
begin
clrscr;
write('játékosok száma: ');
readln(jsz);
ido:=1000;
jsz2:=0;
for i:=1 to jsz do
..... begin
.......... a:=random(10)+1;
.......... b:=random(10)+1;
.......... gettime(o,p,mp,s);
.......... writeln(i,'. játékos feladata: ');
.......... writeln('Mennyi ',a, '* ',b,' ?');
.......... readln(valasz);
.......... gettime(o2,p2,mp2,s2);
.......... ido2:=((o2-o)*360)+ ((p2-p)*120)+((mp2-mp)*60)+(s2-s);
.......... if (valasz=a*b) and (ido>ido2) then
.................... begin
.................... ido:=ido2;
.................... jsz2:=i;
.................... end;
.......... end;
writeln('a legjobb eredményt a ',jsz2,'. játékos érte el');
readln;
end.
mindjárt meg kell védenem a programot, és ahoz kéne a stuktogramm.
ha sikerül belőle valami linkelem -
Style
csendes tag
Nagyon szépen köszönöm, hogy próbáltatok segíteni, de ez nem lesz egyszerű kör. Könyv elöttem, neten egy rakás oldal megnyítva és nem tudok megoldani egyes részeket.
Majd holnap nekiesek a tanárnak, azt elmagyarázom neki, mit próbálgattam, lehet ketté fog állni a füle, mert ilyenek szóba se kerültek még a programom konzultációján se....
Köszi még1X mindent -
alitak
senior tag
Hát ha nem ismered sem a tömböt (array), sem a record-ot, akkor úgy nehéz lesz.
Az a:array[1..100] of integer parancs 100 darab integer típusú változót hoz létre, amikre a[1], a[2], ..., a[100] címen hivatkozhatsz. A recordot szerintem ne erőltessük.
Próbáld így deklarálni:
nev:array[1..100] of string;
pont:array[1..100] of real;
És a nev[5] játékos pontja a pont[5] lesz. Remélem így érthető. -
Gyuri16
senior tag
player:array[1..100] of record
nev:string;
pont:real;
end;
ez egy tomb lesz, melynek elemeire igy tudsz hivatkozni :
player[1].nev <---- az elso jatekos neve
player[1].pont <---- az elso jatekos pontja
beolvasa valahogy igy lesz:
read(szam); - mennyi versenyzo lesz
for i:=1 to szam do
begin
readln(player[ i ].nev);
readln(player[ i ].pont);
end;
lefuttatva beolvassa a szamot, majd szam szor nevet+pontot. Ezek utan a player ben lesz az i edik jatekosnak a neve es pontja.
[Szerkesztve] -
alitak
senior tag
1) 6.9
Asszem csak így megy
2) Hát ha versenyzőnként van egy név+pont akkor így deklarálnám:
player:array[1..100] of record
_____________________nev:string;
_____________________pont:integer;
____________________end;
Aztán jön egy for ciklus, amiben beolvassa a player.nev változóba a nevet, majd a pontokat a player.pont változóba. -
Style
csendes tag
Sziasztok!
Lenne egy olyan feladatom, hogy torna versenyen kell bekérni a bíróktól a pontokat. Sajnos több helyen elakadtam és nem igazán lelem a megoldást.
Első, gondolom alapvető problémám, az, hogy 1 tizedesjegy pontosságig kell bekérnem az adatot, változónak real-t állítottam be és mégse fogaja el, mikor beírom neki, hogy 6,9. Error 106. Hogyan kéne ezt megoldani?
Másik kérdésem, hogy a program elején bekérem, hogy hány versenyző nevezett és utána ciklussal bekérem a neveket, de hogy tudom úgy bekérni, hogy mindegyik másik változóra legyen mentve és persze a pontozásnál is? Mert, ahogy most van, az így folyamatosan megváltoztatja a versenyzo változót.
Előre is köszi a segítséget -
Cxgrav
aktív tag
válasz
[HUN]Zolee #1666 üzenetére
Igen, köszönöm. Már leírták cask használni nem tudtam, de most így tiszta lett. Nagyon szépen köszi
-
[HUN]Zolee
őstag
nem olvastam végig hogy mi is a progid, de sztem így lenne helyes :
jo : boolean;
jo= true;
for i:=1 to 3 do
for j:=1 to 3 do
jo:= jo and (kevert [ i , j ]= nyert [ i , j ]);
if jo= true then nyertes;
tehát ha valamelyik tömbelem nem egyezik akkor hamis lesz a feltétel, és akkor még nem nyert, mert amit te írtál az azt csinálja hgoy ha az egyik elem a helyére kerül akkor már nyertesnek jelöli. -
Cxgrav
aktív tag
Hali!
Sajnos a fent említett booleanes ellenőrzés nem jött be nekem, lehet én voltam a láma. Próbálkoztam egy ilyennel:
for i:=1 to 3 do
for j:=1 to 3 do
begin
if kevert [ i , j ]= nyert [ i , j ] then
begni
nyertes;
end;
Kevert tömb a játék tömbje azt kell kirakosgatni sorrendben. a Nyert tömb sorrendben töltve van. A lényeg az ha a kevert tömb kivan rakva hozza be a nyertes procedurát. De ha így beírom forráskódba sajnos ha elkezdek játszani az első lépésnél beadja hogy Nyertem... 5let? -
Lortech
addikt
writeln, readln-t csak tanultál, más meg nem kell crt unitból. Nem kell töviről-hegyire ismerned hogy ezt a feladatot megcsináld.
Kell bele pl egy for cikus, gettime (dos unit), random, és readln - writeln, egyszerű változótípusok deklarálása, és némi logika.
szerk: minimum szenvedj be ide valami kezdeményt, hogy mire gondoltál, és hogy hol segítsünk, mert a teljes kód beírása ellenkezik az elveimmel.
[Szerkesztve] -
kem
addikt
Sziasztok!
Műszaki infóra járok, és az év elején be kellett adni, hogy mopst milyen programot adunk le a ZH után. De azt nem mondták, hogy semeddig se jutunk el Pascalman, szal nem tudom megírni a programot. Ebben kérném a segítségeteket!
szorzóverseny program
a program bekéri, hogy hány versenyző van, mindenki kap egy szorzást véletlenszerüen, és a végén kiírja, hogy ki válaszolt a leggyorsabban.
Nagyon hálás lennék ha ssegítenétek! -
Ancsiii
csendes tag
Nekem egy oan progi kéne : van egy szöveges állomány benne számok , aztán meg kell keresnem az első 10 osztható számot, ha at meg van akkor az utánalévőket kitörlöm , különben 100-at irok a végéree !!!!
Vagy van egy szöveged állomyánom benne számokkal , a páros számokat összadom, és hozzáirom a kövi program végéhez !! Naahhhh Vki????????? -
Cxgrav
aktív tag
válasz
VladimirR #1657 üzenetére
Köszönöm szépen, jól működik
Még egy apropó felépítésbeli kérdés:
tehát több procedurára bontom a programot:
kurzorkikapcs
feltöltés
keveres
rajz
info
menu
begin.
kurzor
repeat
menu
until.....
Kérédésem, hogy a nyertes procedurát hova építsem be, hogy biztosan lefusson ha teljesül a feltétel és ne zavarja össze a prg-t?
[Szerkesztve] -
VladimirR
nagyúr
a ciklusmagban ez legyen:
tomb[ i, j ] := ( i - 1 ) * 3 + j;
es ellenorzeshez is hasznalhatsz eg ugyanilyen ciklust
nyert := true;
for i := 1 to 3 do
for j := 1 to 3 do
nyert := nyert and tomb[ i, j ] = ( i - 1 ) * 3 + j;
a nyert boolean valtozo itt igazzal kezd, s amig a cellkban megfelelo ertek van, igaz is marad
ha egy cellenal nem egyezik a vizsgalt ertek azzal, amivel kell, akkor a nyert erteke hamis lesz es a tovabbiakban is az marad -
Cxgrav
aktív tag
Hali megint
Már zsírul lépkednek a számok a tömbben meg minden.
Most az lenne a kérdésem hogy az [1..3,1..3] tömböt rendezni kell (játék).
Ha kirakta a játékos a tömböt hogy adjam meg neki, hogy most rendezve van a tömb és adja be a nyertes procedurát?
Én egy olyanra gondoltam hogy létrehozok egy másik [1..3,1..3] tömböt csak azt rendezve és feltételnek megadom hogyha a 2 tömb egyenlő akkor nyert az illető. De biztos meglehet ezt oldalni másik tömb bevezetése nélkül is...
Amúgy meg próbálgattam feltölteni a másik tömböt sorrendbe de sehogy se sikerült.
gondolom azért valahogy így kéne:
for i:=1 to 3 do
for j:=1 to 3 do
begin
Sajnos kb mindig így töltötte fel: (2,3,4)(4,5,6)(6,7,8)
end;
Köszi
[Szerkesztve] -
Cxgrav
aktív tag
Oké, köszönöm skacok, majd ha elakadok akkor majd írok újra, csak nincs időm soha leülni kicsit gondolkodni... nagy a kapkodás
-
VladimirR
nagyúr
mint Sportman is irta, hasznalj egy 3x3-as tombot, amiben a tabla aktualis allasat tarolod
a 8-as elem jobbra mozditasahoz a fuggveny annyit kell tegyen, hogy atrakja a tomb[3][2] elemet a tomb[3][3] elembe, a tomb[3][2] elemet pedig uresnek jeloli (pl 0-t tesz bele)
azt, hogy epp melyik elemen vagy, a kurzor aktualis poziciojabol (wherex, wherey fuggvenyek), illetve abbol, hogy hova rajzoltad a tablatki tudod szamolni
persze minden mozgatas utan ujra kell rajzolnod a mozgatott elem kiindulo es erkezesi cellajat (vagy ha jobban tetszik, irhatsz egy eljarast, ami az egesz tablat ujrarajzolja a tomb ertekei alapjan)
ezen kivul figyelned kell meg egy billentyut, ami kapcsolokent mukodik - egy logikai valtozot billent at leutesre, amely valtozo erteketol fugg, hogy csak a kurzort mozgatod, vagy az alatta levo mezo tartalmat is -
VladimirR
nagyúr
válasz
MIFtIli #1645 üzenetére
eloszor is azert, mert megeshet, hogy kapasbol kepernyopn kivulre teszi
nem veszed figyelembe, hogy nem csak egy karaktert mozgatsz, hanem egy szoveget, aminek hossza van, igy a jobb oldali utkozes vizsgalatakor ne azt nezd, hogy az x koordinata egyenlo-e 80-nal, mert akkor egesz addig ''kimegy'' a kepbol, mig az elso karakter el nem eri a kep szelet
masodszor pedig a cikluson belul ne x+1 es y+1 legyen, illetve az y elojelet valtoztasd, ha elerted a kepernyo szelet - jo fel indultal, mert az x koordinata vizsgalatakor jot hasznaltal, az i valtozot, viszont az utana jovo 3 sort imho elnezted
harmadszor pedig, mielott az uj koordinatakra teszed a szoveget, a regi helyere irj a szoveg hosszaval azonos mennyisegu space-t, igy nem fog maga utan ''csikot'' huzni a felirat
negyedszer pedig ne writeln-t hasznalj, jo lesz a sime write is - semmi szukseged soremelesre -
Cxgrav
aktív tag
Hali!
Kezdő pascalozós vagyok, mindössze szeptember óta tanulnom.
Most megkaptam az első ''kemény'' házit.
Egy játékot kell írni. 3*3 cellás tábla van, 1-8ig feltöltve. A táblát csak kikell rajzolni nem ez a lényeg. Ugye így marad 1 üres cella. Amit tenni kell hogy a számokat sorrendbe kell helyezni iránygombokkal. Annyit már megtudtam csinálni hogy: kiiratok egy X-et és az mozog fel le. De ha kiiratom a 8 számot csak akkor nem tudom megmozdítani egyiket sem.
1 2 3
4 5 6
7 8
így nézne ki.
Hogy kéne megírni procedurában hogy a 8 mozogjon az üres rész cellába vagy a 6 lefele. Utána meg a prg regisztrálja hogy most melyik cella üres és tudja hogy újabb pozícionálásnál melyik számokat lehet mozgatni?
begin
clrscr;
x:=1;y:=1;
gotoxy(x,y);
write('x');
repeat
bill:=readkey;
if bill=#77 then
begin
x:=x+1;
gotoxy(x,y);
write('x');
end;
if bill=#80 then
begin
y:=y+1;
gotoxy(x,y);
write('x');
end;
if bill=#75 then
begin
x:=x-1;
gotoxy(x,y);
write('x');
end;
if bill=#72 then
begin
y:=y-1;
gotoxy(x,y);
write('x');
end;
until bill=#27;
end.
Elismerem elég favágó stílusUgye ilyenkor csak rajzolni lehet jópofán az X-el. De sajnos ennél jobban nem tudom megközelíteni a feladatot. Köszönöm
[Szerkesztve] -
MIFtIli
aktív tag
program keprnyovedo;
uses crt;
var i,j,x,y:word;
begin
clrscr;
textcolor (4);
randomize;
x:=random (80)+1;
y:=random (24)+1;
i:=1;
j:=1;
while not (keypressed) do
begin
if (x=1) or (x=80) then i:=i*-1;
if (y=1) or (y=24) then y:=y*-1;
x:=x+1;
y:=y+1;
GotoXY(x,y);
writeln ('Windows XP Home');
delay (1000);
end;
end.
össze vissza..
nemakar visszapattani és kettő darab szöveg megy..miért? -
N!tRo
tag
válasz
Retekegér #1640 üzenetére
van egy tömböd, tele számokkal, legyen ez a tomb ''ay'' és az index, amivel a számokra hivatkozunk ''idx'' és ''jdx''
Kell egy segédváltozó, illetve egy ''n'' szám, ami a tömbökben szereplő számok számával egyenlő.
és a csere:
for idx:=0 to n-1 do
for jdx:=i+1 to n do
if a[idx]>a[jdx] then
begin
s:=a[idx];
a[idx]:=a[jdx];
a[jdx]:=s;
end; -
cucka
addikt
válasz
Retekegér #1636 üzenetére
a lényeg, hogy végigiterálsz a tömbön, és összehasonlítasz 2 egymás melletti elemet. ha növekvő sorrend kell, és t[ i ]>t[ i+i ], akkor a két elemet kicseréled. a tömbön való végigiterálást addig ismétled, amíg nem történt csere.
pszeudokód
repeat
csere=false
for i=1 to n-1
if t[ i ]>t[ i+1 ] then
begin
kicserél(t[ i ],t[ i+1 ])
csere=true
end
until (csere=false)
[Szerkesztve] -
Retekegér
MODERÁTOR
Újabb segítséget kérnék egy megoldandó feladathoz. Buborékrendezést kellene csinálnom, ami azt jelenti, hogy a számoknak lentről felfelé kellene buborékszerű mozgást végezniük. Tudna valaki iránymutatást adni ehhez a feladathoz? Hála!
-
Lortech
addikt
válasz
MIFtIli #1633 üzenetére
Előszöris mivel T[j]-re hivatkozol, T-t tömbnek deklaráld, ne wordnek. ( t: array[1..20] of byte; )
Másodszor a ciklusod nem fut le, mivel a belépési feltétel csak akkor teljesül, ha negatív értéket adsz meg billentyűzetről. (az meg word deklarációval külön érdekes) (while x > 0 )
Az algoritmusból fakad, hogy a bináris számjegyek fordított sorrendben keletkeznek, tehát pl fordítva kell kiíratni a tömbből, esetleg már eleve fordítva kell letárolni a tömbben. (az elsőre pl. for i:=j downto 1 do write(t[ i ]);)
+ A j indexváltozót ne felejtsd el inkrementálni ( inc(j); ), mert így mindig csak az első elemet változtatod az aktuális bináris számjeggyel.
[Szerkesztve] -
MIFtIli
aktív tag
miiért nem akarja?
program atvaltas;
uses CRT;
var x,m,j,T: word;
begin
clrscr;
j:=1;
readln (x);
while x<0 do
begin
m:=x mod 2;
x:=x div 2;
T[j]:=m;
end;
end.
az lenne a lényeg h átváltja 2-es számrendszerbe aztán belerakja egy tömbe ami jó sorrendbe írja ki a számokat.
kössze
MIFtIli -
N!tRo
tag
válasz
Retekegér #1627 üzenetére
Program Cola;
var ar, bedobva, erme: integer;
begin
ar:=200;
bedobva:=0;
WriteLn('Cola ara', ar);
repeat
WriteLn('eddig bedobva: ', bedobva);
write('bedobott új érme: ');
ReadLn(erme);
bedobva:=bedobva+erme;
if bedobva<ar then writeln('dobjon még be érmét!');
until(bedobva>=ar);
WriteLn('Visszajaro:', bedobva-ar);
end.
a repeat until-al volt a baj, nem lehet azt egymás után írni, kell közé utasítás, mégpedig azok, amelyek addig újra lefutnak amig a feltétel igaz nem lesz -
Retekegér
MODERÁTOR
-
Retekegér
MODERÁTOR
válasz
Drótszamár #1624 üzenetére
Majdnem...
Kiírja, hogy: Cola ara: 200
ezután mondjuk beírok 50-et, kiírja, hogy: eddig bedobva: 50
még egyszer beírok 50-et és itt megáll, nem megy tovább, de a program nem fejezi be a futást... -
Retekegér
MODERÁTOR
válasz
Drótszamár #1622 üzenetére
Eljut odáig, hogy: 'eddig bedobva: összeg'
Haladás -
Lortech
addikt
válasz
Retekegér #1619 üzenetére
Pedig azt sugalltam a pszeudó kódban.
Miért nem jó?
A repeat egy negatív vezérlésű hátultesztelő ciklus.
Egyszer mindenképp végrehajtódik a ciklusmag.
Az untilban a kilépési feltételt adod meg, tehát ha nem teljesül a bedobva >=ar, azaz nincs még bedobva elegendő mennyiségű pénz, akkor bent marad a ciklusban, ha teljesül a kilépési feltétel, azaz bedobva >= ar, akkor pedig kilép a ciklusból. -
-
Retekegér
MODERÁTOR
válasz
Drótszamár #1614 üzenetére
És Unit directory-nak mit adjak meg?
-
Retekegér
MODERÁTOR
Miért kapok vajon ilyen hibaüzit?
[link]
Új hozzászólás Aktív témák
- Melyik tápegységet vegyem?
- Porszívók - akkus és klasszikus vezetékes
- Mibe tegyem a megtakarításaimat?
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Milyen okostelefont vegyek?
- EA Sports WRC '23
- 3D nyomtatás
- T Tablet 2 5G - megkopott magenta
- Greenwashing és zöld sivatag miatt támadják az Apple Watch-ot
- További aktív témák...
- Bomba ár! HP EliteBook 2560P - i5-2540M I 4GB I 250GB I DVDRW I 12,5" HD I W10 I Garancia!
- Bomba ár! Dell Latitude E6410 - i5 I 4GB I 160GB I DVDRW I 14,1" WXGA I Cam I W10 I Gari!
- Bomba ár! Dell Latitude 7480 - i5-6GEN I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- Bomba ár! Dell Latitude 7400 - i5-8GEN I 16GB I 256GB SSD I 14" FHD IPS I CAM I W10 I Garancia
- Keresek Samsung 870 QVO 8TB SATA SSD-t
- Új állapotú, csúcstechnológiás Roborock Saros Z70 robotporszívó (katt a szóviccért!)
- BESZÁMÍTÁS! Gigabyte Aorus B450 R7 5700X 16GB DDR4 512GB SSD RTX 3060Ti 8GB ZALMAN I3 NEO 650W
- ÚJ Lenovo ThinkPad X13 Gen 5 - 13.3" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
- BESZÁMÍTÁS! Asus H370 i5 9500 16GB DDR4 1TB SSD RTX 2060 Super 8GB AeroCool 800 DeepCool 500W
- BESZÁMÍTÁS! 860W Fractal Design ION+ Platinum tápegység garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest