Új hozzászólás Aktív témák
-
QuarK
senior tag
válasz Drótszamár #1000 üzenetére
Hmm... Inkább jelzőbitekkel kéne...
DONOTUSE = 1;
SHIP_1 = 2 or DONOTUSE;
SHIP_2 = 4 or DONOTUSE;
SHIP_3 = 8 or DONOTUSE;
SHIP_4 = 16 or DONOTUSE;
SHIP_5 = 32 or DONOTUSE;
Amikor ellenőrzöd, hogy lerakhatod-e a hajót, elég azt nézni, hogy az adott map[x,y] koordinátán 0-e vagy sem a tömb. Amikor pedig elhelyezed, akkor ahol a hajó van, map[x,y] = map[x,y] or SHIP_x, a környező helyeket pedig feltölteni map[x,y] = map[x,y] or DONOTOUSE... Nem?
nori: Lelkierőt veszek magamon, aztán összeheggesztem; csak rémálmaim rémálma másnak a kódját megérteni, és hozzáadni... Nem tudom, hogy fogok majd egyszer csapatban dolgozni
[Szerkesztve] -
QuarK
senior tag
Öhh, most meg én voltam, aki nem olvasott figyelmesen, voltaképp majdnem ugyanarról beszélünk Drótszamár-ral?!
[Szerkesztve]
nori: Feltétlenül szükséges az az sztomb? Nem lehetne, hogy csak a tomb értéket vizsgálva írnád ki a dolgokat; mint a fenti linkelt programomban?
[Szerkesztve] -
QuarK
senior tag
Nekem nagyon gyanús, hogy 10x10-es mezőre, 1, 2, 3, 4, 5 nagyságú hajókat elhelyezni úgy, hogy nem érhetnek egymáshoz; lehetetlen... Nagyobb mezőn a megírt algoritmus szépen lefut, de egy 10x10-esen az esetek 99%-ban az 5. hajót nem képes elhelyezni...
Ehh, talán, ha 5-től csökkenő sorrendben, visszafele próbálkoznék
[Szerkesztve]
OK; semmi...
[Szerkesztve] -
QuarK
senior tag
[link]
Itt van, kicsit itt-ott változtattam... Ami meg Rád vár: átírni az én eljárásaim nevét magyarosabbra; plusz a sztomb, szmatrix-nál is 10-et átírni maxn-re; ugyanígy kicserélni a Place eljárásban az ex > 10, ey > 10-nél... Meg ha úgy vesszük, a flag használata is felesleges, elég tabla[?][?] := flag-et lecserélni 2-re, ha nem akarod megkülönböztetni a hajókat. És persze a tablakirajzolas eljárásban is ott vannak a 10-esek. Meg még egyéb finomságok; de amire kértél minket, hogy a hajókat el tudd helyezni, az voltaképp kész
Remélem, így már boldogulsz.
Drótszamár: ''backtrack lesz a vége...'' Ne káromkodj
[Szerkesztve] -
zolika-
csendes tag
Hááát azt nem tudom a feladatot nem én találtam ki de a deltoidnál emlit vmit az oldalakrol meg a zátlokrol gondolom a trapézhoz is ez kell.
-
QuarK
senior tag
válasz zolika- #1008 üzenetére
Derékszögű trapéznál ugye az egyik oldal az maga a magasság... Ha a és b a trapéz alapjai; a c az egyik oldal, és egyben a magasság is; d pedig a negyedik oldal; akkor
k := a + b + c + d;
t := (( a + b) / 2) * c;
A deltoidnál pedig, ha a két oldala (a és b), és a közrezárt szög van megadva (u, nem radiánban, hanem fokokban megadva); akkor
k := 2 * ( a + b);
t := 3 * 4 * sin( u * pi / 180);.
Az adatokat pl. így kérheted be:
WriteLn( ''Kérem a deltoid A oldalát: '');
ReadLn( a);
Kiírni pedig pl. így:
WriteLn( ''A deltoid területe = '', t, '', kerülete = '', k);
Szerintem ennyiből már magad is össze tudod rakni, ha nagyon akarod. A deltoid területét pedig a két átló szorzatát leosztva kettővel is meg tudod kapni... De gondolom a feladat leírása csak specifikálja, milyen bemenő adatokon kell kérődznöd.
Ja, és vigyázz arra, hogy a PH! a '' macskakörömből két ' ' aposztrófot csinál.
[Szerkesztve] -
zolika-
csendes tag
Hy.Köszi szépen a segítséget a program már müködik.Lenne itt még vmi ha a programot ugy szeretném futtatni hogy lehessen választani hogy a trapéz vagy a deltoid adatait kérje be és számolja ki akkor azt hogy lehet megcsinálni.mondjuk egy választó gomb segitségével.
-
QuarK
senior tag
-
zolika-
csendes tag
vmi nem stimmel ebben a sorban until ch in [ '1', '2';nem szereti a vesszöt sajna
-
zolika-
csendes tag
bocsi én voltam a béna mert nem láttam hogy ez szögletes zárojel.köszi szépen még1szer.
-
_eskimo
csendes tag
válasz gabor907 #1010 üzenetére
Hát fejből nem tudom, nekem is meg kéne írni, még nem gondolkoztam ilyenen. Most nem nagyon van időm, de a későbbiekben lehet, hogy megírom majd.
Egyébként azzal fejlődik egy programozó, hogy saját maga írja a programot (itt nem arra gondoltam, hogy minden problémát egyedül kell megoldani, ha valami végképp nem megy, akkor itt vannak, akik segítenek), én pl egyébként sem látom át mások programjait. -
zolika-
csendes tag
Hy.Ismét itt vok és ismét van egy progi amiben a segitségeteket kérném .Ez volna a feladat:
Összegezzük a páratlan számok négyzeteit 1-től 'n'-ig ! Elöre is köszi! -
Rover623
félisten
válasz zolika- #1016 üzenetére
Durván fog hangzani, de ez van:
Ha minden heti feladatodat más oldja meg, hülye maradsz...
Minek tanulsz te egyáltalán programozást...
Szerintem először vmi ''alapművet'' kellene áttanulmányoznod...
P.S.:
Abban semmi kivetnivalót nem találok, ha vki megakad egy progival/feladattal/algoritmussal és azt mondja: nézzétek, ez a feladat, ezt meg ezt csináltam, nem jó...segítsetek...!
Vagy: erre meg arra gondoltam, szerintetek jó irány ez...?
De aki csak ide ''böfögi'' a feladatot és elvárja hogy mások oldják meg, az menjen inkább közgázra vagy legyen politikus...primus inter pares
-
zolika-
csendes tag
Hát köszi szépen.Gondoltam rá hogy megcsinálom de nem igazán sikerült.Arrol meg hogy miért tanulok programozást hááát nem én döntöttem igy de szeretném megtanulni.A tanár az iskolában nem mond el semmit.És nekem könnyebben érthető ha vki elmondja mit is kellene tenni a megoldás érdekében.Tudom azt is hogy vannak itt olyan emberek a forumon akik segítenek másoknak és ez szerintem nagyon jo.Hát kb ennyit tudok neked irni azért köszi a hozzászólásodat a kérdésre, és hogyha kérdezek akkor hülye maradok hát nekem nem ezt mondák eddig.A multokr se az egész progit mondák el és igy sikerült is megoldanom mert meg volt a kiindulás.
-
zolika-
csendes tag
Naaa.Erröl beszéltem hogy vki segit is és nem lehordja a kérdezötmint eggyesek.Azért persze értelek és nincs harag részemröl.Köszi szépen a helpet.
-
Jester01
veterán
-
Lortech
addikt
válasz Jester01 #1023 üzenetére
jajjmár ...
Igyekeztem nem túl bonyolult megoldást adni, és nem feltétlenül a leghatékonyabbat kerestem. Nem akartam módosítani a számlálós ciklus indexét, mert azt nem illik, while-lal meg már túl bonyolult lett volna.
Hát ennyi, ha szépet gyorsat hatékonyat akartam volna, tudtam volna, hidd el.
üdv: Lortech
[Szerkesztve]Thank you to god for making me an atheist
-
Lortech
addikt
válasz Jester01 #1025 üzenetére
Nahát.. talán nem azt kérdeztem, hogy mi a bajod vele, nem? .. Azért kérdeztem vissza, mert nem tudtam miért a ''''(tehát az-e a baj, hogy félig megoldottam neki, vagy pedig a megoldásom kritizálod, vagy valami más).
Persze azt gondolsz, amit akarsz.
Remélem ez már nagyjából megfelel:
i:=3;
szum:=1;
while (i<=n) do
begin
szum:=szum+i*i;
i:=i+2;
end;
[Szerkesztve]Thank you to god for making me an atheist
-
Lortech
addikt
válasz Rover623 #1027 üzenetére
Ha csak nagyjából, akkor jöhet egy jobb megoldás, hadd tanuljak. (komolyan)
Ha +1-et kellett volna hozzáadni (ez sok esetben gyorsabb, mint az add, bár nem minden esetben), akkor ok, de +2-nél biztos vagy benne, hogy gyorsabb és hatékonyabb a két inc? Emlékeimt szerint nem..Thank you to god for making me an atheist
-
RAM
őstag
TextBackground( LightGray);
TextColor( map[x,y]);
TextBackground( Black);
ClrScr;
ezekkel van gondja Delphiben, mit változtassak?
Application Console mod-ban próbáltam,
Crt Unit -nak nem tudom van-e megfelelője, így ebben a formában nem ismeri...
Mivel kellene helyettesíteni ezeket az Undeclared Identifiereket?Csak tisztán
-
RAM
őstag
-
Sátánné
csendes tag
Sziasztok!
Szeretnék egy kis segítséget kérni! Meg kellene írni egy programot, amire 5-öst lehet kapni, csak sajnos én nem nagyon tudok programot írni!
Ez lenne a feladat:
Készíts egy 10 elemű egész típusú tömböt. A felhasználó töltse fel a tömböt számokkal. A program elején a felhasználónak kell megadnia hogy az elemeket 1-el nagyobb indexű vagy 1-el kisebb indexű helyre helyezzük (le, fel). Mind a kettő változatot bele kell írni a programba, mivel nem tudjuk, hogy a felhasználó melyiket fogja választani.
A végén pedig ki kell íratni az új tömböt.
A tanár ezt adta segítségül:[link]
Előre is köszönöm a segítséget!''Ha világot akarsz látni vegyél, egy atlaszt!'':)
-
Lortech
addikt
Sátánné: Ez pont olyan dolog, amiben nem fog senki neked megoldást adni, mert nem túl korrekt dolog, hogy kapjál egy ötöst a semmire. Vagy szerinted megérdemelnéd az ötöst, hogyha most bepötyögném a programot neked, te meg lemásolnád és virítanál vele? Egyébként nagyon baromi egyszerű és elemi feladat, még gondolkozni sem kell hozzá. Ha van konkrét kérdés, ahol elakadtál, akkor persze kérdezz bátran.Thank you to god for making me an atheist
-
Tottu
senior tag
Egy szobában N (1≤N≤100) egymást követő napon megmérjük a relatív páratartalmat. A PARA.BE állomány tárolja az első sorában az N értékét, második sorában egy K (1K10) számot a többi N sorban az egy-egy napon mért páratartalom értéket.
Készítsünk olyan programot, amely egyenként beolvassa a páratartalom értékeit és megkeresi az addig beolvasott adatok közül a Kdb legkisebb értéket.
Ha K db-nál kevesebb értéket olvastunk még be, akkor ne történjen semmi.
Ha K vagy annál több adatot olvastunk már be, akkor minden újabb adat beolvasásakor kiírja a K db legkisebb páratartalom-értékű nap sorszámát a növekvő sorrendben.
Például:
A PARA.BE tartalma:
10
4
80
70
75
90
100
60
77
80
77
90
A képernyőre a következők kerülnek kiírásra:
Az N értéke: 10
A K értéke: 4
A 4 legkisebb páratartalmú nap sorszáma:
4 nap után: 1 2 3 4
5 nap után: 1 2 3 4
6 nap után: 1 2 3 6
7 nap után: 2 3 6 7
8 nap után: 2 3 6 7
9 nap után: 2 3 6 7 (vagy 2 3 6 9 is jó)
10 nap után: 2 3 6 7 (vagy 2 3 6 9 is jó)
Ebben a feladatban akadtam most el. A beolvasás az megy, a legkisebb érték megvan. Hogyan lehet azt megcsinálni hogy minden napnál csak a legkisebb értéket nézze (ez megvan még), azonban ha megvan ez az érték akkor ettől az egyel nagyobb érték indexszámát írja ki?"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Sátánné
csendes tag
válasz Lortech #1038 üzenetére
Elkezdtem a programot és akkor most szeretném a segítségeteket kérni.
program szamcsere;
uses crt;
var tomb:array[1..10] of integer;
s:integer;
i:byte;
irany:string;
begin
clrscr;
writeln ('Adjon meg tíz számot!');
for i:=1 to 10 do;
begin
writeln (i,'.szám: ');
readln (tomb );
end;
writeln ('Válasszon egy csereirányt!Le:l vagy fel:f');
readln (irany);
if irany:=l then
begin
s:=tomb ;
tomb :=tomb[length (tomb)+1-i];
tomb [length (tomb)+1-i]:=s;
end
else
begin
s:=tomb ;
tomb :=tomb [length (tomb)-1+i];
szamok [length (tomb)-1+i]:=s;
end;
writeln ('az új tömb: ',tomb);
readln;
end.
Tudom, hogy nem jó ezért kérem a segítségeteket, hogy mi benne a hiba!''Ha világot akarsz látni vegyél, egy atlaszt!'':)
-
bcs
aktív tag
válasz Sátánné #1040 üzenetére
szia,
elsőre ránézésre a következő hibákat találtam:
readln (tomb );
ha array-be akarsz írni, akkor meg kell adni, hogy melyik elemébe.
s:=tomb ;
tomb [length (tomb)+1-i]:=s;
ezek nem fognak semmit csinálni, mert s integer, tomb pedig array.
writeln ('az új tömb: ',tomb);
ez sem fog működni, mert a tömböt elemenként lehet csak kiíratni.
illetve nem igazán értem, hogy miután fel lett töltve a tömb, mit szeretnél csinálni.
[Szerkesztve] -
Diskcopy
tag
-
Lortech
addikt
válasz Sátánné #1040 üzenetére
Érdekes próbálkozás. Nekem valahogy úgy tűnik, hogy vagy nincs is egyáltalán Pascalod, vagy a nyelv alapszintaktikáját nem ismered, és/vagy nem nagyon érted, mit is alkottál.
Kezdjük az első for ciklustól:
readln (tomb ); nem helyes, mivel tomb egy integer típusú tömb, így az egyes elemekre a for ciklus i index változójával hivatkozhatsz így tomb[ i ] (a tömb i-edik eleme). A for ciklus fej részébe nem kell '';'', a do kulcsszó után egyből begin, vagy az egyetlen egy db utasítás vagy vezérlési szerkezet kell.
Tegyük fel, hogy ez megvan, feltöltötted a tömböt.
Ezután az a dolgod, hogy bekéred az irányt, az ''irany'' változót string típusúnak deklaráltad, az egyszerűség kedvéért maradjon így. Bekéred az ''irany''-t, majd if irany:=l then ... elágazással próbálkozol, mely hibás. Pascalban a '':='' jel a legyen egyenlő-t jelenti, melyet értékadásra használhatsz (pl x:= y). Ha összehasonlítasz valamit (itt iranyt az L-lel), ahhoz összehasonlító operátorra van szükséged, az egyenlőségvizsgálathoz ''='' jelet kell használnod '':='' helyett. Van még egy másik probléma is, mégpedig az, hogy a stringeket, karaktereket ' ' közé tesszük. Helyesen tehát ez a sor: if irany='l' then.
A s:=tomb ; sor is hibás, a fentebb említett okok miatt, mivel ''tomb'' az egy tömb, ezért ha egy elemére hivatkozol, meg kell adnod az indexet, hogy épp melyikre, mert anélkül értelmetlen. Innentől egyébként eléggé hiányos, és egyáltalán nem jó a kód.
Tehát eldőlt, hogy ''le'' vagy ''fel'', ezekután át akarod rakni a megfelelő tömbelemeket eggyel kisebb vagy nagyobb helyre, egy s segédváltozó segítségével (ami egyébként kiküszöbölhető kis gondolkodással). Viszont itt nem használtál ciklust, szóval maximum egy-egy elemet tudnál megcserélni, és azok sem a megfelelőek. Amúgy sem cserére van szükséged igazából.
A length függvény stringeken van értelmezve, azok hosszát adja meg, tömb elemszámának meghatározására nem használható, ezt mintha egy másik nyelvből vetted volna át
[Szerkesztve]Thank you to god for making me an atheist
-
Lortech
addikt
válasz Diskcopy #1042 üzenetére
#1035-ben leírta, hogy mit szeretne, de külön érdekes, hogy rendezésre gondoltál.
Sátánné: még valamit kifelejtettem: megvizsgálod, hogy l-et ütött-e le a felhasználó ( és ekkor csökkenő indexre rakja az elemeket), viszont ezen feltétel nem teljesülése nem jelenti azt, hogy az illető f-et nyomott, csak azt, hogy nem l-et, ez egy alapvető programozási hiba (a konkrét példánál inkább nézőpont kérdése, hogy tényleg annak tekinthető-e, mindenesetre van jobb megoldás is), hogy else ágra raktad a felfelé index növelést. Pl egy ''else if''-fel lehetett volna szebben megoldani, és feltételnek az f lenyomását megadni, aztán még esetleg azt is megoldani, hogyha egyikse volt a kettő közül, akkor bekérje újra, vagy kilépjen.
[Szerkesztve]Thank you to god for making me an atheist
-
Lortech
addikt
ment priv.
Sátánné: feladtad?
Csináltam egy vázlatot, hogy kb én hogyan gondoltam.
Többféleképpen lehet értelmezni, én úgy oldaottam meg, hogy bővítettem az 1-10-es intervallumot egy 0. és 11. elemmel, hogy ne lépjenek ki, ne vesszenek el az első illetve utolsó elemek.
változók:
tomb: egész[0-11]; (!)
i: egész;
program kezd
ciklus i=1-től 10
be: tomb[ i ];
ciklus vége;
ciklus amíg nem(irany=''f'' vagy irany=''l'')
be: irany;
ciklus vége;
Ha irany=''f''
elágazás kezdete
ciklus i=0-től 9-ig
tomb[ i ]=tomb[ i+1 ];
ciklus vége;
egyébként
ciklus i=11-től 1-ig
tomb[ i ]=tomb[ i-1 ];
ciklus vége;
elágazás vége.
program vége.
[Szerkesztve]Thank you to god for making me an atheist
-
Sátánné
csendes tag
válasz Lortech #1046 üzenetére
Eddig eljutottam!
Az else-el van valami baj és a tömb elemeinek a számát írja ki a végén nem azokat a számokat amiket az elemei tartalmaznak! Van valakinek valami ötlete, hogy miért? És légyszives a helyes megoldást írjátok már oda, mert én ennél többet nem tok kihozni belőle!
program csere;
var tomb:array[1..10] of integer;
i,s:integer;
irany:string;
begin
writeln ('Adjon meg 10 számot!');
for i:=1 to 10 do
Begin
Writeln(i,'.szám: ');
readln (tomb);
end;
writeln ('Adjon meg egy csereirányt!Fel:f vagy le:l!');
readln (irany);
if irany='f' then
for i:=1 to 10 do
s:=tomb;
tomb :=tomb [i+1];
tomb[i+1]:=s
else
for i:=10 to 1 do
s:=tomb;
tomb:=tomb[i-1];
tomb[i-1];
writeln ('Az új tömb számai: ',tomb);
readln;
end.''Ha világot akarsz látni vegyél, egy atlaszt!'':)
-
Lortech
addikt
válasz Sátánné #1047 üzenetére
Az a probléma, hogy a ph motor kiszedi az [ i ] -ket (most azért nem, mert szóközt raktam), mert idézetként tekinti őket. Úgyhogy az előzőekben feleslegesen koptattam a számat a tömbökről, meg az indexelésről, mert odaírtad te, csak mi nem láttuk.
Az else azért nem jó, mert előtte több utasítás van, ezért az IF igaz ágát begin .. end közé kell rakni. Fontos, hogy az end után nem kell pontosvessző, mivel else követi.
Ennek a sornak sincs túl sok értelme: ''tomb[i-1]'';
További probléma, hogy a for után sem rakod begin .. end közé az utasításokat, hogyha több van belőlük, akkor ezt meg kell tenned, különben másképp fog lefutni.
A tömböt 1-10-ig deklaráltad tanácsom ellenére, ami újabb problémához vezet, mivel amikor a i=10-hez érsz, 11. elemre hivatkozol, illetve irany='l' esetén i=1-nél 0. elemre, mely elemek nem léteznek, és ez futási hibát okoz. Ha a számlálós ciklust indexét csökkenteni akarod ''i:=10 to 1''-nél a to helyett downto-t kell használnod. Teljes programot pascalban tőlem biztos nem fogsz látni, sajnálom. Az a legelemibb dolog, hogy a nyelv szintaktikáját megtanulod, ez még nem programozás, de látszólag még ez sem megy. Az általános megoldást már leírtam, úgyhogy hajrá.Thank you to god for making me an atheist
-
Lortech
addikt
válasz Lortech #1048 üzenetére
Még kiegészítés:
for i:=1 to 10 do
s:=tomb[ i ];
tomb[ i ] :=tomb [i+1];
tomb[i+1]:=s
Ez gondolom egy cserét valósítana meg. De gondolj bele, neked nem az kell, hogy kicseréld az elemeket, hanem, hogy eggyel növeld vagy csökkentsd a sorszámukat.
Pl i=1, irany=''f''-nél tfh. tomb[1]=10, tomb[2]=20, ha kicseréled őket a te módszereddel, akkor igaz, hogy a 10-es eggyel nagyobb, illetve a 20-as eggyel kisebb indexszel fog rendelkezni (tomb[1]=20], tomb[2]=10), de ez neked nem együtt kell, hanem külön külön, az irány megválasztásának megfelelelően. És ha belegondolsz, i=2 esetben tomb[2]=10-et fogod kicserélni tomb[3]=30-ra, és így már kettőt lépett előre, és a végén azt éred el, hogy a tomb[1]=10 elment a legutolsó helyre. Ellenben ha megfigyeled az általam leírt módszert, és deklarálsz a tomb[1] elé egy tomb[0]-t, akkor ebbe beteszed a i=1 esetben a tomb[1]=10-et, tomb[1] ekkor a végső helyére került, az eredetinél eggyel alacsonyabb sorszámú helyre, így i=2 esetben a 10-es nyugodtan felülírható a következő értékkel ( 20).
irany=l esetén ugyanez, csak visszafelé. Ott az i=10-nél a 11-es indexű tömb lesz a pótlás, abba rakod a 10. elemet, ekkor ez helyére került, így felülírható a 10. elem a 9.-kel, és így tovább.
A kiírás pedig azért az utolsó tömbelemet írná csak ki, ha egyáltalán működne, mert nem foglaltad ciklusba a kiiratást, és csak egyszer fut le, így csak az i-ben utoljára megmaradt indexnek megfelelő tomb[ i ] elemet írja ki. Többet azt hiszem már tényleg nem tudok segíteni.
illetve de ( ): még annyit hozzá kell tenni, hogy ezzel a módszerrel a kiíratást is irany=f/l-nek megfelelően kell elvégezni, mivel ''f'' esetén 2-től 11-ig kell kiiratnod az elemeket (melléírva az indexét, mivel csak úgy tudod prezentálni, hogy tényleg azt csináltad amit kellett), ''l'' esetén pedig 0-9-ig ugyanígy. A kiiratást elvégezheted még a sorszámnövelő/csökkentő rész közben is, az if-en belül, felhasználva azt, vagy az egész után egy újabb if bevezetésével.
[Szerkesztve]Thank you to god for making me an atheist
Új hozzászólás Aktív témák
- TCL LCD és LED TV-k
- OLED TV topic
- Renault, Dacia topik
- ASUS routerek
- Gumi és felni topik
- Politika
- Számtech boltosok memoárjai, azaz amikor kiborulunk...
- Azonnali alaplapos kérdések órája
- A fociról könnyedén, egy baráti társaságban
- Autós topik látogatók beszélgetős, offolós topikja
- További aktív témák...