1. |
Re:ASIC v. Isszak (mind) |
8 sor |
(cikkei) |
2. |
Hanoi tornyok! Rekurziv megoldas! (mind) |
33 sor |
(cikkei) |
3. |
Hanoi tornyok! Rekurziv megoldas! - Jo valtozat (mind) |
33 sor |
(cikkei) |
4. |
void main() es egyeb allatfajtak (mind) |
37 sor |
(cikkei) |
5. |
Re: Hanoi tornyai (mind) |
88 sor |
(cikkei) |
6. |
Re: C cim, + C programozas UNIX alatt (mind) |
13 sor |
(cikkei) |
7. |
Kerdes: C++ project (mind) |
37 sor |
(cikkei) |
|
+ - | Re:ASIC v. Isszak (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok!
>ASIC kerdesem lenne a Coderekhez.
>Mi az ASIC?
>Esic vagy isszak?
Az asic az egy shareware Basic fordito. Sajat IDE-je van. Nem tul nagy
proggi es szerintem felejtheto is!
Na kukucs!
|
+ - | Hanoi tornyok! Rekurziv megoldas! (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Emberek... azert egy ilyen algoritmus nem kene problemat okozzon
senkinek. Nem tudom hogy ki mennyire tapasztalt az informatikaban de
azert Romaniaba IX- osztalyos diak is megoldja ezt a feladatot. Lehet
nem rekurziv modon, de megoldja.
Ime a rekurziv megoldas.
#include <stdio.h>
void hanoi(int n, int a, int b, int c){
if (n>0) {
hanoi(--n,a,c,b);
printf("%i --> %i\n",a,c);
hanoi(--n,b,a,c);
}
}
main(){
int n;
scanf("%i",&n);
hanoi(n,1,2,3);
return(0);
}
Eleg logikus, nem?
Van nekem egy erdekes feladatom amire meg nem kaptam megoldast. Ime:
Irjunk programot amely buvos matrixot keszit csak prim szamokat
hasznalva es az elso 7*7-es matrixot 5s alatt kapja meg egy 100MHz
orajelu gepen.
Na kerem, ez a feladat mar cselesebb.
Bye
AlexK
|
+ - | Hanoi tornyok! Rekurziv megoldas! - Jo valtozat (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Emberek... azert egy ilyen algoritmus nem kene problemat okozzon
senkinek. Nem tudom hogy ki mennyire tapasztalt az informatikaban de
azert Romaniaba IX- osztalyos diak is megoldja ezt a feladatot. Lehet
nem rekurziv modon, de megoldja.
Ime a rekurziv megoldas.
#include <stdio.h>
void hanoi(int n, int a, int b, int c){
if (n>0) {
hanoi(n-1,a,c,b);
printf("%i --> %i\n",a,c);
hanoi(n-1,b,a,c);
}
}
main(){
int n;
scanf("%i",&n);
hanoi(n,1,2,3);
return(0);
}
Eleg logikus, nem?
Van nekem egy erdekes feladatom amire meg nem kaptam megoldast. Ime:
Irjunk programot amely buvos matrixot keszit csak prim szamokat
hasznalva es az elso 7*7-es matrixot 5s alatt kapja meg egy 100MHz
orajelu gepen.
Na kerem, ez a feladat mar cselesebb.
Bye
AlexK
|
+ - | void main() es egyeb allatfajtak (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello,
A Coder ftp-siteon nezelodve lattam, hogy vannak C progik
amelyek a void main()-t deklaralnak.
Az ANSI-C a main()- t integernek ismeri csupan el, hogy megis
oly sokszor void-nak van deklaralva altalaban az az oka, hogy
egy-egy program szerzoje tul akkuratus akar lenni, es mivel
ugy gondolja, hogy ezt a visszateresi erteket ugysem hasznalja
hat akkor ne is legyen egyatalan.
Bunbak is van, ha kell, egyesek szerint Herbert Schild ("the most
published C author" a boritok szerint) millios peldanyszamban
nyomtatott es elkelt konyvei honositottak meg ezt es mas tevedeseket.
(Schild papanak a stilusa ugyan jo de C-ul nem tud az bizonyos),
az o hibai azok (ugyancsak a rossznyelvek szerint) amelyek
hatarokat es nyelveket nem ismerve atgyuruznek a fold minden
orszagaba.
En szerintem a Benko-ek fele Programozzunk C nyelven cimu
(megdobbentoen alacsony szinvonalu konyv) is boven meritett
Herbert-tol, igy jokat derulhetunk a
char c;
c = getchar();
tipusu konstrukciokon, bar lehet hogy inkabb sirni kellene. (Ha nem
erted hogy ez miert teheti korrupta a memoriat ideje mar, hogy egy
"igazi" C konyvet is elolvass...).
Visszaterve, ne irjunk void main()-t, vagy fflush(stdin)-t stb.
Ezek, a C tortenelmeben az Egyeb Szamarsagok cimu fejezetben
szerepelnek.
csak jot,
szindbad.
|
+ - | Re: Hanoi tornyai (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 11 Aug 98 at 3:17, wrote:
> Sziasztok !
>
> Senkit nem akarok elkeseriteni, de a megoldas vegtelenul egyszeru.
> Eloszor is nincsenek semmifele segedrudak, akarmennyi korongot at lehet
> pakolni harom oszloppal. Az egesznek ket szabalya van :
Bocs, szerintem nem figyeltel az eredeti levelre. Amit itt leirtal,
az az, amit mindenki tud (legalabbis a level eredeti iroja ezt
feltetelezte :-). A kerdes az volt, hogy ha 3-nal tobb oszlopod van,
akkor hogyan lehet 2^n-1 lepesnel gyorsabban megcsinalni ugyanezt, es
mennyi az a lepes.
> Persze van rekurziv megoldas is, az is elegans, de arra mar nem
> emlekszem.
Az az igazan elegans. Mivel a rekurzio a programozasban ugyanaz, mint
a teljes indukcio a matekban, ugy mondom el: alapfelallas az, hogy 1
korongot at tudsz pakolni ugy, hogy teljesuljenek a feltetelek (tehat
egy korongra sem raksz nala nagyobbat), trivialis, hogy hogyan. Ezek
utan feltesszuk, hogy n darabot is at tudunk rakni, es akkor mar n+1
darabot ugy rakunk at, hogy a felso n darabot attesszuk a segedrudra,
aztan a legalsot a vegleges helyere, es a segedrudrol az n darabot
atrakjuk megint csak a vegleges helyere.
Meg a feltetelek teljesuleset kell igazolnunk: mivel az n darab
pakolgatasakor a masik ket rudon nincs semmi, vagy a legnagyobb
korong van, ezert tovabbra is igaz, hogy nem fogunk kisebb korongra
nagyobbat tenni.
Ez volt a bizonyitasa annak, hogy meg lehet csinalni, egyben ez mar a
programot is mutatja:
hanoi(rud *honnan, int magassag, rud *hova, rud *segedrud)
{
if (magassag == 1) movetop(honnan, hova);
else {
hanoi(honnan, magassag-1, segedrud, hova);
movetop(honnan, hova);
hanoi(segedrud, magassag-1, hova, honnan);
}
}
Ennyi az egesz. Ez a C-szeru metanyelvi program a 'honnan' rudon levo
kupac tetejerol 'magassag' magas kupacot pakol a 'hova' rudon levo
kupac tetejere, kozben hasznalhatja a 'segedrud' rudat.
No, ha mar igy belejottem, es masok is bekuldhetnek teljes
programot, :) akkor a tobbi reszet is ideirom a programnak: A 'rud'
nevu struktura mondjuk ilyen lehet:
typedef struct {
int mostanimagassag; /* a tomb aktualis merete */
int korong[MAX_MAGASSAG]; /* az egyes korongok szelessege */
} rud;
A movetop primitiva pedig, ami egy kupac legfelso korongjat atrakja
egy masik kupac tetejere:
movetop(rud *honnan, rud *hova)
{
int topkorong = honnan->korong[(honnan->mostanimagassag)--];
hova->korong[++(hova->mostanimagassag)] = topkorong;
/* itt lehet meg rajzolni is valamit, hogy lassa is a user */
}
A rutin hivasa pedig:
main()
{
rud kezdo, cel, harmadik;
for (i=1; i<=MAX_MAGASSAG; i++) {
kezdo.korong[i] = MAX_MAGASSAG - (i-1);
}
/* a tomb 0-as elemet nem hasznaljuk, nem baj :)) */
kezdo.mostanimagassag = MAX_MAGASSAG;
cel.mostanimagassag = 0;
harmadik.mostanimagassag = 0;
hanoi(&kezdo, kezdo.mostanimagassag, &cel, &harmadik);
}
Nem probaltam ki, lehetnek benne bug-ok :)))
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | Re: C cim, + C programozas UNIX alatt (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 11 Aug 98 at 2:08, Nagy Gabor > wrote:
> progit, ami PC-n, Borland C++ alatt gyonyoruen lefordul, de UNIX es Linux
> alatt en fordultam le a szekrol, annyi hibat irt ki.
Idom nincs, hogy kijavitsam az egeszet, de elso ranezesre az lehet a
gond, hogy sok C++ bovitest hasznaltatok a programban, amit .c
kiterjesztesu progiknal a gcc nem enged meg. Nevezd at .cpp-re, vagy
ha ez sem eleg, g++-szal forditsd le.
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | Kerdes: C++ project (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Szioka!
Lehet, hogy bena vagyok meg minden, de az istennek nem ertem, hogy miert
utal engem a c++ ha project-et akarok letrehozni :)
Nos a kovetkezot csinalom: akarok egy project-et, amiben hasznalok egy
object allomanyt, amit eredetileg assembly-ben irtam meg le is forditottam,
megcsinaltam az include file-jat es irtam egy c++ programot, ami az
objectben levo fuggvenyeket leteszteli: vagyis meghivja oket! Minden
tokeletesenn mukodik, egesz addig amig csak egy object file-om van es egy
c++ programom ...
Gondolok egyet es szeretnem kulon tenni azokat az eljarasokat, amiket
c++-ban irtam meg, igy atlathatobba teve a programomat. Magyarul van egy
C++ resz, amiben csak a main van deklaralva es minden mas eljaras egy masik
c++ file-ban van.
Megirom az eljarasokat, megcsinalom az include file-t, letesztelem kulon es
lass csodat ez is mukodik ...
Ezutan fogom es szeretnem egybetenni mind a harom reszt: egy C++-os
foprogramot, egy C++-os eljarasgyujtemenyt es egy object file-t. ERRE A C++
azt mondja Nekem, hogy hol az objectben levo dolgok nincsenek sehol
(nincsenek definialva), hol meg a c++-os eljarasok vannak ketszer
deklaralva ... persze olyan is van, amikor mind a kettovel gondja van. De
amint valamelyik reszt kiveszem, minden szepen megy ...
Nem tudod veletlenul hol rontom el? (ott, hogy kulon akarom tenni a
foprogramot az eljarasoktol :))) Egyszer sikerult megvalositanom, de sajnos
mar nem emlekszem ra, hogy akkor mit csinaltam ... de akkor is rament egy
egesz delelottom ...
Ha tudsz segiteni legyszives irj!
Koszonom szepen.
JohnnY
mailto:
|
|