218
Lécci, Lécci tanícsatok meg programozni
-
#138 Cső!
Én szeretnék egy egyszerű visszaszámlálót csinálni. Lehetőleg egy flash kellene.
Köszi. -
blackgamer #137 var lottosz : file of comb; ezt nem ismerem,
de én ha típusos file-ba raknám az öt számot rekeszenként, akkor record-ot használnék, mivel emlékem szerint tömböt nem lehet file-ba menteni ilyen módon (lehet tévedek?) -
Darkboy #136 akkor elkezdek pascal-t tanulni :) -
#135 Hello!
Segítséget szeretnék kérni egy Pascal programmal kapcsolatban. A mostani emelt-szintű érettségi programozási feladatát akarom megcsinálni. A lényeg, hogy van egy lottosz.dat nevű fájl, amiben a 2003-as év 51 hetének lottoszámait tartalmazza, minden sorban 5 szám szóközökkel elválasztva. A lényeg, hogy ebből kell adatokat kiolvasni többféle célra. Van, amikor csak a megadott számú sort ki kell iratni a képernyőre, van amikor az adatokkal számolni kell (statisztikai céllal).
Én úgy gondoltam, hogy a fájlt típusos fájlként deklarálom, a típus pedig 5 integerből álló tömb.
Ebben az esetben a fájl minden sora egy-egy elemnek számítana, mert a szóközökkel elválasztott 5 szám egy-egy tömböt alkot. Vagy ez így nem működhet? Mert én így próbáltam egy ilyen tömbbe beolvasni a fájl n. elemét, de a tömbbe nem a megfelelő számok kerültek, hanem 4- és 5-jegyű számok, amik, nem tudom honnan kerültek oda. Hogy értsétek a dolgot, berakom a forrást:
program lotto;
uses crt;
type comb=array [1..5] of integer;
var lottosz : file of comb;
szamok,temp : comb;
cs,i,n : integer;
sz : string;
begin
clrscr;
(*Az 52. hét nyeroszámainak bekérése*)
for i:=1 to 5 do begin
write('Irja be az 52. hét ',i,'. nyeroszámát!');
readln(szamok[i]);
end;
(*A számok sorbarendezése és kiírása*)
for i:=1 to 4 do begin
for n:=1 to 4 do begin
if szamok[n]>szamok[n+1] then begin
cs:=szamok[n];
szamok[n]:=szamok[n+1];
szamok[n+1]:=cs;
end;
end;
end;
write('Az 52. hét felh. által megadott nyeroszámai: ');
for i:=1 to 5 do
write(szamok[i],' ');
(*1-51 közötti szám bekérése, a számnak megfelelo sorszámú hét
nyeroszámainak kiírása*)
writeln;
write('Irjon be egy számot 1-tol 51-ig'); readln(n);
assign(lottosz, 'lottosz.dat');
reset(lottosz);
seek(lottosz,n);
read(lottosz,temp);
write('A(z) ',n,'. hét lottoszámai: ');
for i:=1 to 5 do
write(temp[i],' ');
end.
Nah. Az első két rész nem számít, az az első részfeladathoz kell, de azok sikerültek is. A harmadik rész lenne a lényeg, létszi nézze meg nekem valaki, hogy miért nem működi. Az általam létrehozott comb típus nem megfelelő a fájlhoz? Vagy ezt szöveges fájlként kellen kezelni?
Ja és itt van a lottosz.dat egy részlete:
37 42 44 61 62
18 42 54 83 89
5 12 31 53 60
1 28 47 56 70
Na így néz ki a fájl, csak 51 soron keresztül.
Előre is köszi. -
#134 vedd meg ezt a két könyvet: Angster Erzsébet: Objektumorientált Tervezés és Programozás 1-2 -
#133 LOL
maci007 hozzászólása Schönchen (10:04) részére előzmény | privát | 2005.05.25. 19:04 | válasz
hogy kell amőbát írni turbo pascalban?
Valaki írja le lécci lépésről lépésre.
Elég ha egy játékos van a másik meg gép.
Nagyon köszönöm.
Arra sem veszi a fáradtságot, hogy megnézze mit írtak a többiek.
Vagy hülye vagy, vagy egyáltalán nem értesz a programozáshoz. Ami egyébként nem baj, de akkor ne amőbát kezdj el programozni. -
blackgamer #132 link -
#131 pascal -> c -> c++ -> objektumorientáltság -> java -
blackgamer #130 vegyél könyvet + olvasd el (nincs jobb gyógyír) -
#129 c++ t mennyire vágod? van hozzá egy kis "köze" -
kisgyerek20 #128 Valaki segítsen,hogy hogyan kezdjem el a JAVA programozást tanulni.
Teljesen kezdő vagyok.
-
maci007 #127 de mondjuk aki megcsinálta vagy tudja.
-
#126 Ne várd el, hogy valaki megoldja a házifeladatod.... Segítséget kérhetsz, valószínűleg kapni is fogsz, de azért ekkora programmal senki nem fog neked szenvedni. -
maci007 #125 turbo pascalban hogy kell amóbát írni?
lécci írjátok le.
-
#124 Olvassunk be csillag végjelig neveket egy nevek mátrixba,
majd minden névhez olvassunk be 5 db lottószámot, melyet
egy tippek mátrixba fogunk elhelyezni. Minden sor
egy tippsorozatot jelent!
Kérjük be a billentyűzetről a lottoszámokat egy hasonló
nevű tömbbe.
Mondjuk meg név szerint, kinek hány találata van.
Adjuk meg a nyeremény összegét is:
2 találat: 870Ft
3 találat: 8,500Ft
4 találat: 1,500,000Ft
5 találat: 32,000,000Ft
Idáig jutottam:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void main(void)
{
const w=10,v=30,x=5;
int i,k,j,a;
char nevek[w][v];
int tippek[w][x],loto[x];
clrscr();
randomize();
//fet”lt‚s
i=0;
do
{
printf("\nAdd meg a nevet (max 10 n‚v), azt n enter, ha meguntad ss *-ot!");
gets(nevek[i]);
i++;
}
while(nevek[i-1][0]!='*'&&i<w);
for(j=0;j<=(i-2);j++)
{
printf("\nA %s n‚vhez tartoz¢ sz mok k”vetkeznek!",nevek[j]);
for(k=0;k<=(x-1);k++)
{
printf("\nAdd meg a k”vetkez‹ lott¢sz mot, azt n enter!");
scanf("%d",&tippek[i][k]);
}
}
for(j=0;j<5;j++)
{
loto[j]=random(90)+1;
printf("\n%3d",loto[j]);
}
for(j=0;j<(i-1);j++)
{
printf("\n %s ",nevek[j]);
for(k=0;k<x;k++)
{
printf(" %2d ",tippek[j][k]);
}
}
getch();
}
-
DirtyPio #123 Egy nxn -es matrixon el egy virusnemzetseg, amely a kovetkezokeppen fejlodik:
-a maganys virusok meghalnak, ha kevesebb mint 2 szomszedjuk van, es megfulladnak, ha tobb mint 3 szomszedjuk van
-szabad helyeken megjelenik egy uj virus, ha 2 vagy 3 szomszedja van
-megfelelo kornyezetben egy virus 3 generaciot el
megj: a virusnak max 4 szomszeja lehet. Szerintem a progim jo kene legyen, debiztos hogy van valami bibi, azert nem megy, ja es a 'matrix.txt' megvan. -
DirtyPio #122 hello, volna egy kerdesem, irtam egy progit, alabb leirom a feladat szoveget is, es mindig azt a hibauzenetet kaom, hog ysyntax error, ; expected, but until found. Nem ertem hogy hova kell neki ';'.
na itt a progi:
program F30_42;
uses crt;
type matrix=array [1..50,1..50] of integer;
var i,j,n,r,fel,al,bal,job,vir:integer;
c:char;
f:text;
x:matrix;
begin
assign(f,'matrix.txt');
reset(f);
i:=0;
j:=0;
while not eof(f) do
begin
inc(i);
j:=0;
while not eoln(f) do
begin
inc(j);
read(f,x[i,j]);
end;
end;
n:=i;
repeat
for i:=1 to n do
for j:=1 to n do
begin
case x[i,j] of
0:begin
vir:=0;
fel:=0;
if i=1 then fel:=1;
if x[i-1+fel,j]<>0 then inc(vir);
al:=0;
if i=n then al:=1;
if x[i+1-al,j]<>0 then inc(vir);
bal:=0;
if j=1 then bal:=1;
if x[i,j-1+bal]<>0 then inc(vir);
job:=0;
if j=n then job:=1;
if x[i,j+1-job]<>0 then inc(vir);
if (vir>=2) and (vir<=3) then x[i,j]:=1;
end;
1:inc(x[i,j]);
2:inc(x[i,j]);
3:inc(x[i,j]);
4:x[i,j]:=0;
end;
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(x[i,j]:2);
end;
c:=readkey;
until c<>#27;
close(f);
end.
A feladat szovege a kovetkezo:
-
#121 Pl.: http://peter.verhas.com/perlh/oo.html -
#120 a prog.hu-n nézz körül ezügyben, az objektumorientált meg olyan mint az elemes bútor vagy a puzzle. -
#119 Hello!
Elég kezdő vagyok, pascallal foglalkozok. Tudtok valahol az interneten fellelhető programozási gyakorlófeladatokat? Nem túl nehezekre gondoltam, az emelt szintű érettségire akarok felkészülni, mert a tanárom egyáltalán nem tanít programozást.
A másik kérdésem meg: Valaki össze tudná foglalni, hogy kb. mit jelent az, hogy egy programozási nyelv, vagy a programozás objektum-orientált?
Előre is köszi!
Márk -
#118 htx. Most már jó :) -
Zsoldos #117 Random szamgeneratort keresek C++ -hoz, tud valaki? Tudomanyos celra kene, szoval valami hasznalhatot, nem olyan kezdetleges vackot, mint a beepitett rand, annak tul keves a koze a veletlenhez.. -
#116 Nem, a begin-ek száma jó (ami duplázottnak tűnik, az a belső for-hoz tartozik).
Az első pirosnak az a baja, hogy nincs ilyen változó, de nem is lehet, mivel ez belső függvény neve (min() függvény). Ez a köv. sorban is igaz lesz.
A másodiknak meg az, hogy az előtte lévő sornak nincs lezáró pontosvesszője.
-
blackgamer #115 szintaktikai hiba?! két begin, és nincs pontosvessző -
#114 Feladat: Töltsünk fel egy n elemű tömböt véletlenszerűen számokkal, és rendezzük sorba őket.
const n=10;
type tomb=array[1..n] of integer;
var t:tomb;
procedure feltoltes(var t1:tomb);
var i:integer;
begin
for i:=1 to n do
t1[i ]:=random(100);
end;
procedure kiiratas(t2:tomb);
var i:integer;
begin
for i:=1 to n do
write(t2[i ]:4);
writeln;
end;
procedure rendezes(var t3:tomb);
var i,j,seged:integer;
begin
randomize;
for i:=1 to n-1 do
for j:=i+1 to n do
begin
min:=1;
if t3[i ]<t3[j] then min:=1;
seged:=t3[i ];
t3[i ]:=t3[j];
t3[j]:=seged
end;
end;
begin
feltoltes(t);
kiiratas(t);
rendezes(t);
kiiratas(t)
readln;
end.
amit pirossal írtam, azzal problémázik. :S Mit rontottam el? -
#113 Van egy külön Delphi topik, majd oda várjuk. :)
-
#112 köszi, gondoltam, hogy van rá 1xűbb megoldás! majd megmutatom azt, amit én csináltam... csak most nincs nálam a forrás. ezt meg megtekintem. köszi mégegyszer. -
#111 Csak kiegészítés: természetesen a függvény "párja", a TextHeight() is létezik, ugyanígy.
-
#110 Van erre egy TCanvas függvény, aminek az a neve, hogy TextWidth. Pl. Form1.Canvas.TextWidth('teszt szöveg yól :) '); -> a Canvas.Font-ban megadott font alapján, a Canvas.Pen (meg a többi) formázással a szöveg szélessége pixelben.
-
Zsoldos #109 A karakterek hogyhogy nem fix meretuek? Van koztuk unicode vegyesen? -
#108 adott egy stringgrid, két oszloppal. írjunk programot arra, hogy a stringgridbe külső állományból töltött szöveg leghosszabb sorához alkalmazkodjon a stringgrid adott oszlopa. (azaz a cellaszélesség akkora legyen, hogy a leghosszabb sor is teljes hosszában látszódjon).
ez egy saját kedvemre írt szótárprogram írása során merült fel és emléxem, hogy sokáig agyaltam, mire megfejtettem (lévén, hogy nem fix méretűek a karakterek), de ti biztos tudtok rá egysoros megoldást is, én kapálva oldottam meg brut force módszerrel. (delphiben) -
#107 THX!!!! -
Admiral #106 Ahol be akarsz olvastatni egy entert, oda ezt beilleszted:
char ch2;
do
{
ch2 = getch();
if (ch2 == 0)
getch();
} while (ch2 != 13);
-
#105 .....Enter (leütésével) végjelig! Ez áll egyik feladat végén, azt hogy kell? Tudom, hogy a kódja 13. Próbáltam getche(13), de így sem fogadja el. Köszi!! Ja, C++ -
Admiral #104 "Olvassunk be 5 db pozitív egyjegyű számot a billentyűzetről! Ellenőrizzük,
hogy csak pozitív egyjegyű számot fogadjunk el! Ha hibás számot ad meg, kérjük be újra!"
Erre a megoldás:
#include <conio.h>
#include <stdio.h>
int main( void)
{
int i;
char ch;
for (i = 0; i < 5; i++)
{
do
{
ch = getch();
if (ch == 0)
getch();
}
while ( ! ( ( (int)ch >= (int)'0') && ( (int)ch <= (int)'9') ));
printf( "%d \n", (int)ch - (int)'0');
}
return 0;
}
-
blackgamer #103 nem vagyok nagy bűvész C-ben, de létezik olyan, hogy formázott adatbevitel és -kivitel
szerintem a tanárod erre akart rávezetni, nézz utána könyvben
pl. a következő sor egy 1 jegyű pozitív egész számot olvas be (persze user könnyen hülyítheti meg pl. karaktet ír, de biztos van rá valami egyszerű trükk)
int a;
scanf("%1d",&a);
és így egy határozott menetszámú (for) ciklusba is teheted -
#102 "Olvassunk be 5 db pozitív egyjegyű számot a billentyűzetről! Ellenőrizzük,
hogy csak pozitív egyjegyű számot fogadjunk el! Ha hibás számot ad meg, kérjük be újra! A program végén, írjuk ki hány számot olvastunk be összesen!"
Ciklussal bekérem a számokat, de hogyan ellenőrizzem a ciklusan belül milyen az adott szám? if-el? if(szam>9&&szam<=0) és utána a újrakérés jön? Az meg hogy kell? Még egy ciklussal? De akkor minek az if? Mi az a végén a feladatban, hogy írjuk ki hány számot olvastunk be? Hát nem 5db-ot? HELP+THX
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
void main (void)
{
clrscr();
int db=0,szam
printf("\n5db egyjegyu pozitiv számot kérek!");
do
{
printf("\nKérem a számot: ");
scanf("%d",&szam);
db++;
if(szam<=0&&szam>9)
{
}
}
while(db!=5);
printf("\n%ddb olvastunk",db);
getch();
} -
DirtyPio #101 kosz. -
blackgamer #100 int valami;
scanf("%d",&valami);
vagy
getch();
bill. leütésre vár, persze ez Dos-os, lehet máshol másmilyen -
DirtyPio #99 nem tudom, hogy hogy mukodik a c, de nincs neki valami olyasmije, mint a pascalnak a readln, hogy meg tudjam nezni, hogy mit ir ki? Mert lefut a prog, asszem, de az a helyzet, hogy olyan mintha pascalba nem tennek readln-t.