Keresés

Részletes keresés

ghoezeke mate Creative Commons License 2011.06.14 0 0 903

1. Készítesz egy kétmezős tömböt, egyik mező a te A, B, C... értékeidé lesz, szám vagy szöveg, ez nem derült ki. A másik mező egy double lesz.

2. Feltöltöd az értékmezőt billentyűről, fájlból, konstansokból, ahogy tetszik.

3. A double mezőt feltöltöd véletlenszámokkal, ezeket programmal rendeled oda.

4. Sorbarendezed a véletlenszám szerint a tömböt, így az értékeid véletlensorrendbe kerülnek, pl. X, C, G, A...

5. Sorban kettesével kiszeded az értékeket, míg el nem fogynak. Lesznek olyan párjaid, hogy XC, GA, ...

 

Lehet másként is megoldani, de ez egy egyszerű, biztonságos, paraméterezhető, átlátható mód.

Előzmény: Törölt nick (902)
Törölt nick Creative Commons License 2011.06.14 0 0 902

Sziasztok!

Az interneten keresgéltem de nem találtam sajnos meg. Ezért írok nektek. Én nem értek ehhez a programozáshoz. De nekem volt egy olyan kis programom ami evvel a TP-all készült. Most szeretném mekérdezni ki tud benne segíteni ?
Vagy meg csinálná ?
Egy sima sorsoló programot szeretnék.
Pl: A B C D  és azt sorsolja össze pl A-t a D-vel   B-t a C-vel  // AD és BC
PLs nagyonon fontos lenne!

johnnyfirpo007 Creative Commons License 2011.04.10 0 0 901

Amúgy köszönöm!! a segítséget

Előzmény: johnnyfirpo007 (900)
johnnyfirpo007 Creative Commons License 2011.04.10 0 0 900

Szia!

Egy privát üzenetet küldenél nekem, ajánlanék vmit.

Előzmény: ghoezeke mate (899)
ghoezeke mate Creative Commons License 2011.04.10 0 0 899

Mielőtt továbblépnél, érdemes a programodat átalakítanod valami rendezettebb formába, az ilyen mindentegybe stílus később bosszút áll rajtad.

Szóval kell négy procedura, ahová szétpakolod a három fő feladatot, nevezetesen és nagyjából így:

beolvas(mit, mibe, hányat),

rendez(mit, az milyen tipus, milyen sorrendbe),

kiir(mit, hová),

vezérlő, amelyben bekéred a paramétereket, létrehozod a tömböt, és hívod a fenti hármat.

 

Aztán mindent double-ben deklarálj, integerbe nem tudsz tizedest beolvasni.

Továbbá kell egy ötödik proc, a számformázáshoz, amelyben tetszőleges paraméter a szám tabulálási elképzelése (pl. minden kiírt számban azonos helyen lesz a tizedespont) és a tizedesek száma.

Csemege, ha a számot a bekérésnél ellenőrzöd, hogy egyáltalán szám-e és benne van-e a double tartományában.

Előzmény: johnnyfirpo007 (898)
johnnyfirpo007 Creative Commons License 2011.04.09 0 0 898

Üdv!

Elkészítettem a lenti  programot annyiban, hogy megadjuk a tetszőleges méretű tömb elemeinek számát és kiírja fordított sorrendben. Ez működik szépen.
Viszont annyiban kérném a segítségeteket, hogy a bekért integer típusú elemeket double-ra, vagy int-ben maradva úgy, hogy 4 tizedesjegyre alakítsa a számokat sorba rendezve.

 

FELADAT:

A bemenet elsõ sorában található egy egész szám, n.
Ezután következik tetszõlegesen sok, de maximum kétszáz darab, int vagy double típusú szám. Írjuk õket növekvõ nagyság szerint rendezve a kimenetre 3 tizedesjegy pontossággal.
pl.:


Bemenet:
4
10
10.5
6.8
11.2275

 

Kimenet:
4.0000
6.8000
10.0000
10.5000
11.2275

 

 

Program rendez;
Uses Crt;

const MaxElem=200;
Var a:array [1..200] of integer;
      i,j,kisebb:integer;
adat,t:INTEGER;
max:longint;

        Begin
         ClrScr;
         begin
         repeat

           writeln('Add meg a tömb elemeinek a számát! (2<n<200)');
            readln(t);
             writeln;
              if ((t>200) or (t<2)) then
                begin
                   writeln('A megadott ertek nem megfelelo.');
                      writeln('A folytatashoz nyomjon Enter-t.');
                      readln;
                       end;
                       until ((t<201) and (t>2));
                         end;

 Writeln('TOMB');
 For i:=1 to t do
  Begin
   Writeln('Kerem a tomb ',i,'. elemet: ');
   Readln(a[i]);
  End;
 WRITELN;
 Writeln('A TOMB ELEMEI A KOVETKEZOK: ');
 For i:=1 to t do
  Begin
   Writeln(a[i]);
  End;
 WRITELN;
 Writeln('A TOMB ELEMEI -CSOKKENOBEN- RENDEZVE A KOVETKEZOK: ');
 For i:=1 to t do
  For j:=1 to t do
   If a[i]>a[j] then
    Begin
     kisebb:=a[i];
     a[i]:=a[j];
     a[j]:=kisebb;
    End;
 For i:=1 to t do
  Begin
   Writeln(a[i]:6);
  End;
 Readln;
END.

johnnyfirpo007 Creative Commons License 2011.04.03 0 0 897

ok. utánajárok.

köszi

Előzmény: Strasszer (896)
Strasszer Creative Commons License 2011.04.03 0 0 896

Remélem nem programozó leszel.

File beolvasás kiirás: ilyeneknek nézz utána: AssignFile, Reset, Rewrite, Readln, Writeln, CloseFile.

De sztem, ha a gugliba beirod, hogy pascal file, csodákat látsz. :)

Előzmény: johnnyfirpo007 (895)
johnnyfirpo007 Creative Commons License 2011.04.03 0 0 895

program rendez;

... itt :)

 

Node nem egészen,csak a programozás távol áll még tőlem az egyszerűek mennek..

Szerintem elég, ha ez megoldható és könnyebbség,hogy billentyűzetről olvassuk be nempedig fájlból.

Előzmény: Strasszer (894)
Strasszer Creative Commons License 2011.04.03 0 0 894

Akkor, hogz segitsek is:

3 eljárás kell. Az első beolvassa a file-ból egy tömbbe. A 2. lerendezi, a 3. pedig kiirja egy file-ba.

Melyikkel akadtál el? Csak azt ne mond, hogy a legelején...

Előzmény: johnnyfirpo007 (893)
johnnyfirpo007 Creative Commons License 2011.04.03 0 0 893

Igen, ez iskolai feladat..

Hát nem sajnos.

A szám az pedig csak elírás volt, 10.500 akart lenni.

Előzmény: Strasszer (892)
Strasszer Creative Commons License 2011.04.03 0 0 892

Gondolom ez egy házi feladat...

És még nem találtál a guglival egy rendező algoritmust pascalban?

Amúgy hogy lesz a 10.5-ből 10.005?

Előzmény: johnnyfirpo007 (891)
johnnyfirpo007 Creative Commons License 2011.04.03 0 0 891

Üdv mindenkinek!
A következő program megírásában kérném a segítségeteket.
Pascal-ban.
Esetleg nincs meg valakinek, szívesen venném!!!! (honorálnám is!)
Köszi előre is!

A bemenet első sorában található egy egész szám, n.
Ezután következik tetszőlegesen sok, de maximum kétszáz darab, int vagy double típusú szám. Írjuk őket növekvő nagyság szerint rendezve a kimenetre n tizedesjegy pontossággal.

pl.:
Bemenet:
4
10
10.5
6.8
11.2275

Kimenet:
4.000
6.008
10.000
10.005
11.227

naox Creative Commons License 2011.03.10 0 0 890

ha csak a 10! permutációt nézed végig, az valóban 1-2 másodperc átlagos gépnek. De ha mind a 1E10 esetet megnézed az vagy 2700-szor több idő, azaz inkább órás nagyságrend.

Igazából meglepően hatékony  véletlenszámos módszer, nekem átlag 10-15 másodperc alatt megtalált egyet a nyolc megoldásból, azaz csak 10-szer lassabb, mint a "tisztességes" program.

Előzmény: szjozsi79 (888)
szjozsi79 Creative Commons License 2011.03.10 0 0 889

Szövegként vidd be és ellenőrizd, hogy ha '1'-'5' között van, akkor jó, minden más esetben újra kérje be!

1-5-ig megverünk, ha 6-ost dobsz, akkor újra dobhatsz :-)

Előzmény: czizso (877)
szjozsi79 Creative Commons License 2011.03.10 0 0 888

GREA + TYOU = DIDIT

 

Minek kell itt véletlenszámot generálni?

10 ciklust egymásba ágyazni

G,T,D,A,U mehet 1-9-ig

R,E,Y,O,I mehet 0-9-ig

olyan módon, hogy a lehetőségek közül kiveszed a már felhasználtakat

behelyettesíted, ha helyes, akkor a megoldást elmented valahová

 

Gyors gép esetén pár másodperc a megoldás.

Ha közben meg is jeleníted, akkor percekbe is telhet.

capt.nemo Creative Commons License 2011.03.10 0 0 887

No és az A ás U sem lehet nulla. De a maximális 10! permutáció is gyorsan végig számolható.

Előzmény: kisspetya (882)
naox Creative Commons License 2011.03.10 0 0 886

ja, és persze a számjegyekre: x:=random(10) így lesz az értékük 0-9 között, és így az i-nek is jut érték...

Előzmény: naox (885)
naox Creative Commons License 2011.03.10 0 0 885

azért erre kár programot írni, 10 perc alatt kitalálható (jó, persze, akkor hol van a programozás öröme?):

3247+6859, és az összes olyan permutáció, ahol R-Y, E-O valamint A-U csere van.

(egyébként szerintem a randomize-t kéne kihagyni a programodból, ugyanis minden ciklusban ugyanonnan indul a véletlenszám generátor, így folyton ugyanazt a kombinációt fogja adni. Eleve ez a véletlenszám-dolog a pascalban valahogy nagyon el van tolva...)

Előzmény: GLaDOS (880)
NevemTeve Creative Commons License 2011.03.10 0 0 884

Rávezető gyakorlatok.

 

1. Helyezzünk el egy sakktáblán nyolc bástyát úgy, hogy semelyik kettő se üsse egymást.

 

2. Egy bizonyos ilyen állásból állítsuk elő a következőt.

 

3. Az előző módszer használatával állítsuk elő az összes megfelelő állást.

srf Creative Commons License 2011.03.09 0 0 883

Ez a feledat, - ha erőből megy neki az ember, - backtrack. Mivel Pascal nyelvű, jellemzően rekurzív megoldással.

Előzmény: kisspetya (882)
kisspetya Creative Commons License 2011.03.09 0 0 882

A feladat szerintem már hibás, mivel 10 féle betűt látok, ezért a számjegyek: 0-tól 9-ig lehetnek. Nem csoda, ha végtelen ciklust írtál valahol. De ebből le lehet vonni némi következtetést. (pl. G, T, D nem lehet 0) És célszerűbb lenne egy 10 elemű tömbbel dolgozni, amiben folyamatosan cserélgeted a számjegyeket és nem pedig véletlenszerűen sorsolgatsz.

Előzmény: GLaDOS (880)
NevemTeve Creative Commons License 2011.03.09 0 0 881

Szerintem a program fut, csak te nem éred meg, hogy elkészüljön. Próbálj debuggolni (gyk: az F8-at nyomkodni)

Előzmény: GLaDOS (880)
GLaDOS Creative Commons License 2011.03.09 0 0 880

Üdv mindenkinek!

 

1-2 hónapja tanulok pascalt, és egy matematika feladat megoldásához szerettem volna felhasználni. A feladat a következő:

 

Mi a betűk értéke, ha GREA + TYOU = DIDIT?(Az egyforma betűk egyforma számokat jelölnek, különböző betűk nem jelölheti ugynazt a számot, minden betű 1-9-ig egy egészet jelöl)

 

Az általam írt program:

 

program rankk;

uses crt;

var

G:integer;

R:integer;

E:integer;

A:integer;

T:integer;
Y:integer;

O:integer;

U:integer;
D:integer;

I:integer;

 

begin

clrscr;

 

Repeat

Randomize;

 

G:= Random(9)+1;

 

r:= Random(9)+1;

while(r=G) do

begin

r:=Random(9)+1;

end;

 

e:= Random(9)+1;

while(e=G) or (e=r) do

begin

e:=Random(9)+1;

end;

 

a:= Random(9)+1;

while(a=G) or (a=r) or (a=e) do

begin

a:=Random(9)+1;

end;

 

t:= Random(9)+1;

while(t=G) or (t=r) or (t=e) or (t=a) do

begin

t:=Random(9)+1;

end;

 

Y:= Random(9)+1;

while(y=G) or (y=r) or (y=e) or (y=a) or (y=t) do

begin

y:=Random(9)+1;

end;


O:= Random(9)+1;

while(o=G) or (o=r) or (o=e) or (o=a) or (o=y) or (o=t) do

begin

o:=Random(9)+1;

end;


U:= Random(9)+1;

while(U=G) or (U=r) or (U=e) or (U=a) or  (u=t) or (u=y) or (u=o) do

begin

U:=Random(9)+1;

end;

 

D:= Random(9)+1;

while(d=G) or (d=r) or (d=e) or (d=a)  or (d=t) or (d=y) or (d=o) or (d=u) do

begin

d:=Random(9)+1;

end;

 

I:= Random(9)+1;

while(I=G) or (I=r) or (I=e) or (I=a)  or (I=t) or (I=y) or (I=o) or (I=u) or (I=d) do

begin

I:=Random(9)+1;

end;

 

writeln('keresés...');

 

until(1000*G+100*R+10*E+T+1000*T+100*Y+10*O+U = 10000*D+1000*I+100*D+10*I+T);

 

writeln(G);writeln(R);writeln(E);writeln(A);writeln(T);writeln(Y);writeln(O);writeln(U);writeln(D);writeln(I);
end.

 

 

 

A program tehát minden betűnek sorsol egy értéket 1-től 9-ig, ha az nem egyenlő egy már meglévő betűvel, egészen addig amíg az összeg igaz nem lesz. Ekkor kiírja a betűk értékét. 

 

A program indításakor azonban semmi nem történik, hibát a fordító nem jelzett.

Valakinek van ötlete hol rontottam el?

 

Előre is Köszönöm!

Sánta Kutya (SK) Creative Commons License 2010.10.20 0 0 879
Ha hibát ad, akkor valószínűleg 0-255 közötti, de ezt a ctrl F1 megmondja, vagy kipróbálhatod, hogy 200-ra ad-e hibát.
Mivel akárhányszor adhatnak hibás számot, nyilván egy ciklusra lesz szükséged, nem egy egyszeri elágazásra. Célszerűen egy repeat..until hátultesztelő ciklusra, ami legalább egyszer lefut. De olyat is szoktak csinálni, hogy kiemelik az első adatbevitelt, hogy más lehessen a szöveg, és akkor utána elöltesztelő while ciklus.
Előzmény: czizso (877)
digicat Creative Commons License 2010.10.20 0 0 878
Szerintem a byte unsigned, azaz 0-255 lehet az értéke. Megnézted helpben?
Előzmény: czizso (877)
czizso Creative Commons License 2010.10.20 0 0 877
köszi, így működik (bár negatív szám beírásakor kiakad egy hibaüzivel), már csak azt kell megoldonom, hogy a hibás érdemjegy helyetti másik jegy beolvasásakor ismételten vizsgálja meg a progi, hogy a javított érdemjegy is megfelel-e a feltételnek
Előzmény: Sánta Kutya (SK) (876)
Sánta Kutya (SK) Creative Commons License 2010.10.20 0 0 876
És úgy is emlékszem, hogy a byte negatív is lehet, de ezt megmondja neked, ha a byte szó közepére állva ctrl F1-et nyomsz. És akkor if (i<=0) or... lesz.
Persze ezzel a típussal sose olvasol be egy négyötödös jegyet. :-)
Előzmény: czizso (874)
Sánta Kutya (SK) Creative Commons License 2010.10.20 0 0 875
Tedd be zárójelbe a feltételeket, ha jól emlékszem, az OR magasabb precedenciájú. És a kiírásokban kell egy szóköz a kettőspont után. :-)
Előzmény: czizso (874)
czizso Creative Commons License 2010.10.20 0 0 874
Sziasztok!

Most ismerkedem a pascal nyelvvel, s elakadtam az egyik feladatnál. Egy érdemjegy bekérésénél azt kell megvizsgálnom, hogy a beírt érdemjegy 1 és 5 közé esik-e. Ha nem akkor kérje be mégegyszer a jegyet. Én ezt így akartam megoldani:

program jegy;
var i:byte;

begin
write('Add meg az érdemjegyet:');
readln(i);
if i=0 or i>=6 then begin
write('Hibás érdemjegy, add meg újra:');
readln(i);
end;
readln;
end.

De erre a megoldásra minig hibaüzenetet kapok, miszerint az if i=0 kifejezés inkompatibilis a byte típussal, csak azt nem értem, hogy miért, hisz a byte típusú változó értéke 0-255 terjed, így akár 0 is lehet. Rosszul tudom??

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!