HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

"Hey, Mikey, he likes it! Ready for more?" (3) *

2011.03.23. 18:41 nb

Íme a harmadik hullám, de élvezd az elsőt és a másodikat is, ahol még számos fraktálos, genomos, fehérjés és mindenféle 1-7, 1-9 trófeás vad les itt is, a korábbi első, illetve a második hullámban Rád! (Ha mást nem mondunk, akkor a szokásos "hegylakó szabály" van: csak egy maradhat, azaz az első vadászé a trófea.)

Ha mást nem mondunk, akkor a jelen hullám feladatainak megoldását C, C++, Qt C++-ban várjuk. De már fodrozódnak itt más nyelveket preferáló feladatok is, ezeknél a nyelveket a feladatnevekben is feltüntetjük (ugyanazon feladat más nyelvű megvalósítása nem számít hasonló feladatnak, így elszámolhatósága esélyes :)

Itt a tavasz, itt az új szerelem

Ha belelkesedsz egy billentyűzet láttán, akkor ismerd fel, az új szerelem: a programozás. Ha nem érzed, miről beszélek, akkor subliminal messages. De tréfa nélkül: emlékezz az első előadás mottóira, például

"Aminek van értelme: (a) kódot olvasni és (b) kódot írni.”

Eric Steven Raymond: How To Become A Hacker
Hogyan lesz az emberből Hacker: http://esr.fsf.hu/hacker-howto.html

Ennek megfelelően még mindig nem késő, hogy elkezdj programozni! Itt a tavaszi szünet, használd fel ezt a kis szusszanásnyi időt élvezettel: csatlakozz a vadászokhoz! (Persze a harmadik hullám feladatai nem könnyűek; vagy apró (1-2 trófeás) vadakkal kezd, vagy lapozd fel a korábbi hullámokat.)

20 kisbajnokságos feladatok

  • (ÉLES) Sorsjáték: készíts saját sorsjáték ütemezőt a MINIX kernelhez. (help a szobában futó 3.1.3 Minix, ahol megy a kernelben a random szám generálás :)

19 kisbajnokságos feladatok

  • (ÉLES) Foci 5: írj progit "igazi" (pl. YouTube-os) videón egy játékos követésére!

16 kisbajnokságos feladatok

  • (ÉLES) Foci 4: írj progit "FerSML videón" egy játékos követésére!

13 kisbajnokságos feladatok

  • (KÉSZ) Foci 3: írj progit "igazi" (pl. YouTube-os) videón a labda követésére!

12 kisbajnokságos feladatok

  • (ÉLES) TCP 7: írj egy TCP-s webszerver statisztika számolót: parancssor argumentumban kap egy gépnevet vagy IP-t, megnézi milyen szervert futtat, illetve a HTTP válaszbeli további gépeken folytatja a kutatást, miközben számolgatja a statisztikát, amit végül (elfogynak a gépek, vagy elér számuk egy limitet) kiír. (help: 9. ea.)

11 kisbajnokságos feladatok

  • (ÉLES) TCP 8: írj egy TCP-s webpókot: parancssor argumentumban kap egy URL-t, letölti és előre megadott szavak előfordulását figyeli, ha talál feljegyzi, a lap linkjein lépked tovább (help: 9. ea.)
  • (ÉLES) Foci 1: írj progit a "FerSML videón" a labda követésére!
  • (KÉSZ) Foci 2: írj progit a "házi videón" a labda követésére (pl. itt és itt)!

10 kisbajnokságos feladatok

  • (ÉLES) Obi-Wan Kenobi: készíts egy olyan programot, ami az előadás videóira képes az előadó kezébe a mester kék fénykardját rajzolni:
  • (ÉLES)

9 kisbajnokságos feladatok

  • (ÉLES) Szorgos hódok remix: készíts rekombináló programot: http://arxiv.org/abs/0908.4013! (BB-s gépek utasításait véletlenszerűen rakosgatod össze, így lottózol :)

8 kisbajnokságos feladatok

  • (KÉSZ) Proxy 1: írj egy proxy szervert!
  • (ÉLES) Kém 1: folyamatosan figyel egy URL-t, hogy változik-e, ha igen, dob egy mailt.
  • (ÉLES) Kém 3: 1x1 pixeles transzparens png-t küldő TCP szerver, ami logolja a kliens adatait (honnan, mikor töltötték le, lapokba img src="gép:port" formában hívódik a szerver), mailt dob, ha valaki megnézi azt a lapot, ami (a képen keresztül) hivatkozza a szervert.
  • (KÉSZ) Kép CPP 1: saját "képfeldolgozásos" osztályodban terheld túl a + operátort, hogy képeket lehessen "összeadni"!

7 kisbajnokságos feladatok

  • (ÉLES
  • (ÉLES) Hangyás 1: írj egy hangya szimulációs Qt progit, valahogy így mutasson (itt az "elmélet")!
  •  (ÉLES, Python) Könyves Kálmán: készíts csevegő robotot, aki a beszélgetések közben építi az LZW fát a szavakat véve egy "betűnek". Így fessen pl. (help: 11. ea. és www.inf.unideb.hu/~nbatfai/kk/)

6 kisbajnokságos feladatok

  • (ÉLES) Hangyás 2: írj egy hangya szimulációs Qt progit, valahogy így mutasson!
  • (KÉSZ) Qtrajzoló 1: írj egy Qt rajzolóprogit, az egérrel lehessen rajzolni, a képet S billenytűvel lehessen menteni!
  • (KÉSZ) Ikersárkány: írj egy olyan Qt progit, ami ábrázolja az i-1 alapú számrendszer nulla egészrészű halmazát (help: papíron)
  • (ÉLES) TCP 1: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt, lement, illetve ha html lapról van szó, akkor a (href) hivatkozott URL-eket is letölti!
  • (KÉSZ, Python) PyLZW fa: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, s nem is a T, C, A, G betűkre, hanem tetszőleges szavakra menjen a fa építése.
  • (ÉLES, C, Qt C++(KÉSZ), Java(KÉSZ)) Kocka 1: parancssor argumentumként kapott képet pixelesít.
  • (ÉLES C, Qt C++, Java) Mandel szerver: böngésző címsorából hivatkozva küldjön egy Mandelbrot halmazt!
  • (ÉLES) Kém 2: 1x1 pixeles transzparens png-t küldő TCP szerver, ami logolja a kliens adatait (honnan, mikor töltötték le, lapokba img src="gép:port" formában hívódik a szerver).
  • (KÉSZ) P-szálak ismétlő: írj olyan C programot (a 4. ea. mintájára, illetve PP 67) amiben 100 szál cserélgeti 2 globális változó értékét. Mutasd meg, hogy mutex nélkül elromlik, mutexxel nem.
  • (ÉLES) Counter 1: saját számláló osztályban terheld túl a -- operátor pre- és postfix változatát! (help: 24 könyv 247. o. (***))

5 kisbajnokságos feladatok

  • (KÉSZ) Qtrajzoló 1: írj egy Qt rajtzolóprogit, az egérrel lehessen rajzolni!
  • (ÉLES) TCP 2: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt és lement!
  • (KÉSZ) IPC 1: írj (természetesen jól működő) szimulációs progit az ebédelő filoszok problámára! (help: 4. ea. kódjai)
  • (KÉSZ) IPC 2: írj (természetesen jól működő) szimulációs progit az írók-olvasók problémára! (help: 4. ea. kódjai)
  • (KÉSZ) IPC 3: írj (természetesen jól működő) szimulációs progit az alvó borbély problémára! (help: 4. ea. kódjai)
  • (ÉLES, Python) PyTCAG: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, hanem a T, C, A, G betűkre megy és megoldja ezt a feladatot.
  • (ÉLES, Java) JTCAG: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, hanem a T, C, A, G betűkre megy és megoldja ezt a feladatot.
  • (KÉSZ) LZWCPP 5: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa mélységét, ághosszainak átlagát, szórását!
  • (KÉSZ) LZWCPP 6: a második átiratban a fától meg lehessen kérdezni a fa mélységét, ághosszainak átlagát, szórását!

4 kisbajnokságos feladatok

  • (KÉSZ) PPplayer: írj egy videó lejátszó programot! (gstreamer, help: 8. ea.)
  • (ÉLES) TCP 3: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt!
  • (KÉSZ) TCP 4: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott, képre mutató URL-t letölt és elment fájlba!
  • (ÉLES) LZWCPP 1: a naiv első átiratban legyen külön headerben az osztálydefiníció!
  • (KÉSZ) LZWCPP 2: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa méylségét!
  • (KÉSZ) LZWCPP 3: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa ághosszainak átlagát!
  • (ÉLES) LZWCPP 4: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa ághosszainak szórását!
  • (ÉLES) LZWCPP 7: a második átiratban a fától meg lehessen kérdezni a fa mélységét!
  • (KÉSZ) LZWCPP 8: a második átiratban a fától meg lehessen kérdezni a fat, ághosszainak átlagát!
  • (ÉLES) LZWCPP 9: a második átiratban a fától meg lehessen kérdezni a fa ághosszainak szórását!

3 kisbajnokságos feladatok

  • (KÉSZ) Világszépe fraktál nagyító szépségverseny 1: saját Mandelbrot nagyító progiddal készíts nagyítási sorozatokat, tedd fel valahová, ahol lehet lájkolni, akiét legtöbben lájkolják április 1 de. 10-og, azé a trófea.
  • (ÉLES) Nyers socketek: írj saját pinget! (PP 158)
  • (ÉLES, C, Qt C++-kész, Java-kész) Kocka 2: parancssor argumentumként kapott képre ráírja az ugyancsak így kapott szöveget.

2 kisbajnokságos feladatok

  • (KÉSZ) Világszépe fraktál nagyító szépségverseny 2: saját Mandelbrot nagyító progiddal készíts képeket, tedd fel valahová, ahol lehet lájkolni, akiét legtöbben lájkolják április 1 de. 10-og, azé a trófea.
  • (KÉSZ) B&L(**) feladat: a 326. oldali feladat (Participiant osztályos).
  • (KÉSZ) Idő 1: meddig tart 1000 processzt, illetve 1000 P-szálat létrehozni? Hasonlítsd össze! (help: PP 65)
  • (KÉSZ) Idő 2: valamely programodban mérj valamit, hogy meddig tart (használd a tms struktúrát)! (help: PP 66)
  • (KÉSZ) Mutex: demonstráld, hogy védelem nélküli globálist elrontanak a P-szálak (védelem hiányában)! (help: PP 67)

1 kisbajnokságos feladatok

  • (ÉLES) Pi fstream: a pi-napi elosztott számítás eredménye részszámításonként egy-egy állomány a szerveren, írj olyan programot (C fgets/fputc, read/write már kilőve a 2. hullámban, így C++ std::fstream jöhet), ami ezeket a megfelelő sorrendben (ami a fájlnévből derül ki) összefésüli egyetlen állománnyá!
  • (KÉSZ) TCP 5: írj egy TCP-s daytime szervert (a PP-ben csak ilyen van :)
  • (KÉSZ) TCP 6: írj egy TCP-s echo szervert!
  • (ÉLES) STD 1: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a dinamikus tömböt (std::vector, help: 6, 7. ea.)
  • (ÉLES) STD 2: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a vermet (std::stack, help: 6. ea.)
  • (ÉLES) STD 3: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a láncolt listát (std::list, help: 6, 7. ea.)
  • (ÉLES) STD 4: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át az asszociatív tömböt (std::map, help: 6, 7. ea.)
  • (ÉLES) STD 3: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a halmazt (std::set, help: 6, 7. ea.)
  • (KÉSZ) PP példa alapján produkáld az ebédelő filoszos holtpontot!
  • (KÉSZ) Készíts saját int verem osztályt, mélymásolással másolódjon! (help: 6. ea.)
  • (ÉLES) Készíts saját int dinamikus tömb osztályt, mélymásolással másolódjon! (help: 6. ea.)
  • (KÉSZ, Java) A polár generátort írd át és nézz pár sebességtesztet a C++ változattal hasonlítva! (help: 6. ea. és (kb. a lap közepén a PolárGenerátor osztály))
  • (ÉLES) Világszépe fraktál nagyító szépségverseny 3: S billentyűre mentse a fraktál nagyítást mindig új néven, pl. sorszámozza! (help: itt)
  • (KÉSZ) RGB 1: írj olyan programot, ami a paraméterben kapott kép pixeleinek elveszi az R részeit (help:
    for (int i = 0; i < kep.get_height (); ++i) {
            for (int j = 0; j < kep.get_width (); ++j) {
    
                png::rgb_pixel eredetirgb = kep.get_pixel(j, i);
                png::rgb_pixel ujrgb ( 0, eredetirgb.green, 
    				  eredetirgb.blue);
    
                kep.set_pixel (j, i, ujrgb);
    
            }
            std::cout << "." << std::flush;
        }
    
    részletek itt)
  • (KÉSZ)  RGB 2: milyen képet produkál, ha az előző csipetben ilyen a színezés:
    png::rgb_pixel eredetirgb = kep.get_pixel(j, i);
                png::rgb_pixel ujrgb ((eredetirgb.red+eredetirgb.green)%255, (eredetirgb.green+eredetirgb.red)%255, eredetirgb.blu
  • (KÉSZ)  RGB 3: milyen képet produkál, ha az előző csipetben ilyen a színezés:
    png::rgb_pixel eredetirgb = kep.get_pixel(j, i);
                png::rgb_pixel ujrgb (2*eredetirgb.blue-eredetirgb.red, 2*eredetirgb.blue-eredetirgb.red, 0);

                kep.set_pixel (j, i, ujrgb);
  • (ÉLES) RGB 4: módosítsd a színezést, hogy ezt produkálja:
  • (KÉSZ) Mennyi "sizeof('0') * 8" C-ben és mennyi C++-ban?
  • (ÉLES) LZWCPP 10: a második átiratban mutasd meg (kiíratás a konstruktorokban), hogy a tagok konstruktorainak lefutása megelőzi a tartalmazó konstruktorának lefutását, pl.:
           Csomopont (char b = '/'):betu (b), balNulla (0), jobbEgy (0) {
               std::cout << "Csomopont" << this->betu << std::endl << std::flush;
           }
  • (ÉLES) LZWCPP 11: a naiv első átiratotl módosítsd úgy, hogy ne a példányokhoz, hanem az osztályhoz tartozzon a mélység!
  • (ÉLES) LZWCPP 12: a második átiratban módosítsd úgy a lekérdező módszereket (pl. Csomopont *balra();) hogy jelezzék, nem változtatják az osztályt!
     

Figyelem: élő közösségként, a vadászattal együtt élve tudjátok, hogy melyik feladat ÉLES, melyik kész, mert nem mindig tudom időben frissíteni!

Ha megtetszik egy feladat, de nem tudsz belekezdeni, vagy elakadtál, bátran kommenteld!

*: www.imsdb.com/scripts/Matrix,-The.html

**: Benedek Zoltán, Levendovszky Tihamér: Szoftverfejlesztés C++ nyelven, Budapest, 2007, Szak K.

***:Jesse Liberty, Horvath, David B. Büki András: Tanuljuk meg a C++ programozási nyelvet 24 óra alatt.

218 komment

Címkék: vadászat

A bejegyzés trackback címe:

https://progpater.blog.hu/api/trackback/id/tr812765743

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Rankerz 2011.04.03. 14:10:06

@nb: az alosztály konsrtuktora után hívódik meg a főosztály kontruktora utána ismát az aláosztály konstruktorai. a hierarchia legalján lvéő osztály hívódik meg először.

nb · http://fersml.blog.hu 2011.04.03. 14:20:16

@Rankerz: ez így nagyon pontatlan, a választ eleve beleszőttük a feladat szövegébe:

"a tagok konstruktorainak lefutása megelőzi a tartalmazó konstruktorának lefutását"

ugye van egy Csomópont tagként az LZWBinFa-ban, a gyökér.

Rankerz 2011.04.03. 14:22:29

@nb: ilyesmi kéne

Csomopont lefutott
Csomopont lefutott
Csomopont lefutott
LZW Binfa lefutott

akkor a kimenetem rossz .. (

Rankerz 2011.04.03. 14:26:41

A B&L könyv
**Constructing*

BaseClass
MiddleClass
MiddleClass2
Class

os példa alapján próbáltam értelmezni a hierarchiás dolgot
csak ott az egyes kontruktorok egyszer futnak le és könnyebb volt értelmezni

nb · http://fersml.blog.hu 2011.04.03. 15:02:06

@Rankerz: miért lenne ez rossz? Hiszen "csinálunk egy" LZWBinFa objektumot, de annak a konstruktora már használná a gyökér csomópont címét:

public:
LZWBinFa (): fa(&gyoker) {}

de éppen a kimeneted mutatta, hogy a LZWBinFa-ba tagként tartalmazott Csomópont konstruktora már lefutott, azaz már megvan a gyökér csomópont, szakszerűen:

a tag (Csomopont, a gyoker) konstruktorának lefutása megelőzi a tartalmazó (LZWBinFa) konstruktorának lefutását

mi a véleményed?

Rankerz 2011.04.03. 15:13:16

@nb: korrekt,bennem is tisztázódott. ez esetben a kimenet helyes. sajnálom az értetlenkedést)

nb · http://fersml.blog.hu 2011.04.03. 15:16:29

@Rankerz: ne sajnáld, a lényeg, hogy tiszta a dolog. Pontot már rég megadtam :)

interfeca 2011.04.03. 16:18:00

(ÉLES) LZWCPP 9: a második átiratban a fától meg lehessen kérdezni a fa ághosszainak szórását!

noob.hu/2011/04/03/szoras.png

hulala1 2011.04.03. 16:22:16

(ÉLES) LZWCPP 4: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa ághosszainak szórását!
noob.hu/2011/04/03/lzw.png

hulala1 2011.04.03. 16:25:21

lzw.cpp
// z.cpp
//
// LZW fa építő C++ átizata a C valtozatbol
// Programozó Páternoszter
//
// Copyright (C) 2011, Bátfai Norbert, nbatfai@inf.unideb.hu, nbatfai@gmail.com
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <www.gnu.org/licenses/&gt;.
//
// Ez a program szabad szoftver; terjeszthetõ illetve módosítható a
// Free Software Foundation által kiadott GNU General Public License
// dokumentumában leírtak; akár a licenc 3-as, akár (tetszõleges) késõbbi
// változata szerint.
//
// Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz,
// de minden egyéb GARANCIA NÉLKÜL, az ELADHATÓSÁGRA vagy VALAMELY CÉLRA
// VALÓ ALKALMAZHATÓSÁGRA való származtatott garanciát is beleértve.
// További részleteket a GNU General Public License tartalmaz.
//
// A felhasználónak a programmal együtt meg kell kapnia a GNU General
// Public License egy példányát; ha mégsem kapta meg, akkor
// tekintse meg a <www.gnu.org/licenses/&gt; oldalon.
//
//
// Version history:
//
// 0.0.1, progpater.blog.hu/2011/02/19/gyonyor_a_tomor
// 0.0.2, csomópontok mutatóinak NULLázása (nem fejtette meg senki :)
// 0.0.3, progpater.blog.hu/2011/03/05/labormeres_otthon_avagy_hogyan_dolgozok_fel_egy_pedat
// 0.0.4, a C verzióból svn: bevezetes/C/ziv/z.c átírjuk C++-ra
// progpater.blog.hu/2011/03/31/imadni_fogjatok_a_c_t_egy_emberkent_tiszta_szivbol
//

#include <iostream>
#include <cmath>

class LZWBinFa
{
public:
LZWBinFa (char b = '/'):betu (b), balNulla (NULL), jobbEgy (NULL) {};
~LZWBinFa () {};
LZWBinFa *nullasGyermek () {
return balNulla;
}
LZWBinFa *egyesGyermek ()
{
return jobbEgy;
}
void ujNullasGyermek (LZWBinFa * gy)
{
balNulla = gy;
}
void ujEgyesGyermek (LZWBinFa * gy)
{
jobbEgy = gy;
}
void kiir (void)
{
melyseg = 0;

kiir (this);

}
void szabadit (void)
{
szabadit (jobbEgy);
szabadit (balNulla);
}

void rszoras (void)
{
atlag=0.0,atlagosszeg =0.0, melyseg=0.0 , atlagdb=0.0;
ratlag(this);
atlag=((double)atlagosszeg)/ atlagdb;
szorasosszeg = 0.0,melyseg = 0,atlagdb=0.0,szoras = 0.0;
rszoras(this);

if (atlagdb - 1 > 0)
szoras = sqrt((szorasosszeg) / (atlagdb - 1));
else
szoras = sqrt (szorasosszeg);

std::cout << "Szórás: "<<szoras<<std::endl;
}
private:
char betu;
LZWBinFa *balNulla;
LZWBinFa *jobbEgy;

LZWBinFa (const LZWBinFa &);
LZWBinFa & operator=(const LZWBinFa &);
int atlagosszeg,atlagdb;
int melyseg;

double atlag;
double szorasosszeg;
double szoras;

void kiir (LZWBinFa * elem)
{
if (elem != NULL)
{
++melyseg;

kiir (elem->jobbEgy);
// ez a postorder bejáráshoz képest
// 1-el nagyobb mélység, ezért -1
for (int i = 0; i < melyseg; ++i)
std::cout << "---";
std::cout << elem->betu << "(" << melyseg - 1 << ")" << std::endl;
kiir (elem->balNulla);
--melyseg;
}

}
void szabadit (LZWBinFa * elem)
{
if (elem != NULL)
{
szabadit (elem->jobbEgy);
szabadit (elem->balNulla);
delete elem;
}
}

void ratlag (LZWBinFa * elem)

{
if (elem != NULL)
{
++melyseg;
ratlag (elem->jobbEgy);
ratlag (elem->balNulla);
--melyseg;

if (elem->jobbEgy == NULL && elem->balNulla == NULL)
{

++atlagdb;
atlagosszeg += melyseg;

}

}

}
void rszoras (LZWBinFa * elem)
{

if (elem != NULL)
{
++melyseg;

rszoras (elem->jobbEgy);
rszoras (elem->balNulla);
--melyseg;

if (elem->jobbEgy == NULL && elem->balNulla == NULL)
{

++atlagdb;
szorasosszeg += ((melyseg - atlag) * (melyseg - atlag));

}

}

}

};

int
main ()
{
char b;
int atlagdb=0.0,atlagosszeg=0.0;
LZWBinFa gyoker, *fa = &gyoker;

while (std::cin >> b)
{

{
if (b == '0')
{
// van '0'-s gyermeke az aktuális csomópontnak?
if (!fa->nullasGyermek ()) // ha nincs, csinálunk
{
LZWBinFa *uj = new LZWBinFa ('0');
fa->ujNullasGyermek (uj);
fa = &gyoker;
}
else // ha van, arra lépünk
{
fa = fa->nullasGyermek ();
}
}
else
{
if (!fa->egyesGyermek ())
{
LZWBinFa *uj = new LZWBinFa ('1');
fa->ujEgyesGyermek (uj);
fa = &gyoker;
}
else
{
fa = fa->egyesGyermek ();
}
}
}

}
gyoker.kiir ();
gyoker.szabadit ();
gyoker.rszoras();

return 0;
}

teszt2.txt
01111001001001000111

hulala1 2011.04.04. 14:01:24

STD 2: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a vermet (std::stack, help: 6. ea.)

noob.hu/2011/04/04/verem.png

hulala1 2011.04.04. 14:02:21

#include <iostream>
#include <stack>
int
main (int argc, char *argv[])
{
std::stack < char >v;
v.push ('0');
v.push ('1');
std::stack < char >u =v;
u.pop ();
std::cout << v.size () << std::endl;
std::cout << u.size () << std::endl;
return 0;
}

nb · http://fersml.blog.hu 2011.04.04. 17:42:06

@hulala1: de hol itt az érték szerint átadott verem?

nb · http://fersml.blog.hu 2011.04.04. 17:44:05

@hulala1: végét gondold át pls, mert van benne egy durva hiba.

interfeca 2011.04.04. 18:05:11

Elnézést a reklamációért, de mintha zavar lenne az erőben tanárúr. A mai órán adott tanárúr 9 kisbajnokságot és volt még 3 a vadászok dobozban, összegezve mégis csak 10 van a vadászoknál...

Afelől érdeklődnék, hogy elírás történt vagy én maradtam le valamiről?

Előre is köszönöm a választ.

darki11 2011.04.04. 18:47:54

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package kisbaj4;

import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URLConnection;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;

/**
*
* @author hallgato
*/
public class Main {

public static void main(String[] args) throws MalformedURIException, IOException {
URL url = new URL (args[0]);
URLConnection yc = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
StringBuilder sb = new StringBuilder();
String s ="";
while ((inputLine = in.readLine()) != null) {
if (inputLine.contains("href"));
System.out.println(inputLine);
s+=inputLine;
}
in.close();
File f = new File("Proba.html");
FileWriter fw = new FileWriter(f);
fw.append(s);
fw.close();
f.createNewFile();
}
}

darki11 2011.04.04. 18:49:01

@darki11: TCP 2: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt és lement!

nb · http://fersml.blog.hu 2011.04.04. 18:53:10

@interfeca: igazad van, ezért is próbáltam igazságos lenni, most ment róla egy részletesebb mail a Neptunban árasztva mindenkinek.

nb · http://fersml.blog.hu 2011.04.04. 18:54:21

@darki11: kialakult jó szokásunk már egy screenshot (és pár szó a kódról, hogy a leendő vadászok is élvezhessék :)

Pato1111 2011.04.04. 19:00:30

(ÉLES) P-szálak ismétlő: írj olyan C programot (a 4. ea. mintájára, illetve PP 67) amiben 100 szál cserélgeti 2 globális változó értékét. Mutasd meg, hogy mutex nélkül elromlik, mutexxel nem.

Alap helyzetben a=42, b=55.

Mutex nélkül:
Szal: 20, a értéke: 55, b értéke: 42
Szal: 20, a értéke: 42, b értéke: 55
Szal: 76, a értéke: 42, b értéke: 55
Szal: 76, a értéke: 42, b értéke: 55
Szal: 76, a értéke: 55, b értéke: 42
Szal: 76, a értéke: 42, b értéke: 55
Szal: 76, a értéke: 55, b értéke: 42
A szamlalo vegul: -1

Mutexxel:
Szal: 94, a értéke:55 b értéke:42
Szal: 94, a értéke:42 b értéke:55
Szal: 94, a értéke:55 b értéke:42
Szal: 94, a értéke:42 b értéke:55
Szal: 94, a értéke:55 b értéke:42
Szal: 94, a értéke:42 b értéke:55
Szal: 34, a értéke:42 b értéke:55
A szamlalo vegul: 0

nb · http://fersml.blog.hu 2011.04.04. 19:17:30

@Pato1111: nem olyasminek kéne látszódni védelem nélkül, hogy mindkettő 55 vagy mindkettő 42?

valami ilyesmi miatt

a=42 b=55

egyik szál:
local temp = a (42)
a = b (55) - itt most elkezdi a * másik szálat
** b = local temp (42) folyt ***

* másik szál:
local temp = a (55)
a = b (55) folytatja **-nál
*** b = local temp (55)

mindkettő 55

darki11 2011.04.04. 19:24:31

@nb:
www.kephost.com/view3.php?filename=aznwmru2gz1awn8iie2u.png

URL url = new URL(args[0])
/ezzel a sorral kérjuk be parancssorbol az URL-t/

URLConnection yc = url.openConnection();
/ezzel a sorral csatlakozunk a megadott URL-re/

File f = new File("Proba.html");
FileWriter fw = new FileWriter(f);
fw.append(s);
fw.close();
f.createNewFile();
/Először html-be létrehozom a fájt,majd mentem/

szimih 2011.04.04. 20:12:01

(ÉLES, C, Qt C++(KÉSZ), Java) Kocka 1: parancssor argumentumként kapott képet pixelesít.

Java:

img836.imageshack.us/img836/4938/javam.png

Kódot szerdán előadás után vagy jövő hét hétfőn bemutatom.

hulala1 2011.04.04. 21:11:36

@nb: Jó estét Tanár Úr!
Rendben! Átgondolom a vermeset!
Szeretnék érdeklődni, hogy az lzw fás feladatommal mi lesz?

Painkiller19910110 2011.04.04. 21:43:57

Lenne egy kérdésem Tanár Úrhoz!
Adott a prímkeresős feladatom, melyben mérem az időt két prím megtalálása között. Az lenne a kérdésem hogy adott processzorsebesség mellett, tudván azt hogy milyen időközönként bukkanunk prímekre és mekkora a valószínűség annak a számnak amit a következő prím bukkanására számolt időben vizsgálunk megfelelő lehetne egy olyan hipotézist felállítani hogy a bizonyos időközönként található szám ami lehet prím is meg nem is elég lenne annak a bizonyos környezetét megvizsgálni ami még a megengedett időeltérésintervallumon belűl esik, ekkor lehetséges lenne meghatározni a vizsgált számokról hogy prímek-e? Lehet hogy kicsit komplikáltan fogalmaztam, de a lényege az lenne hogy elég nagy számok esetén tegyük fel hogy 'X' másodpercenként bukkanunk vizsgáljuk az adott számot és annak kis környezetét, és mivel elvileg az eltelt idő megfelelő akkkor bizonyos kis környezetében a számnak 1 valószínűséggel kell lenni legalább 1 prímnek.
De persze ezt komplikálttá teszi azt hogy gépenként és konfigurációnként és a processzor terheltségének függvényében változik az időköz aminként prímet találhatunk.

Véleményt szeretnék kérni. :)

kecske20 2011.04.04. 23:17:40

Nekem is kérdésem lenne :)

(ÉLES) Idő 1: meddig tart 1000 processzt, illetve 1000 P-szálat létrehozni? Hasonlítsd össze! (help: PP 65)

A processz simán ment, azonban a p-szálak (PP alapján) progi már nem működött. Valamiért 380 szál készítés fölött már csak ritkán tudja lefuttatni a programot, 400 fölött pedig el se kezdi, csak "Hiba" hibaüzenettel leáll. Saját progival is próbálkoztam, ugyan az a hiba.

Rankerz 2011.04.05. 00:23:26

* (ÉLES) Counter 1: saját számláló osztályban terheld túl a -- operátor pre- és postfix változatát! (help: 24 könyv 247. o. (***))

noob.hu/2011/04/05/prepost.png

Pato1111 2011.04.05. 15:31:14

@nb: Újra gondoltam a dolgot kicsit javítgattam és most valóban úgy jött ki ahogy Tanár úr írja.

Mutex zárak nélkül:
Indításkor egy darabig még cserélgeti a 2 változót:
Szal: 1, A: 55, B: 42
Szal: 0, A: 42, B: 55
Szal: 1, A: 42, B: 55
Szal: 4, A: 55, B: 42
Szal: 9, A: 55, B: 42
Szal: 6, A: 42, B: 55

Aztán körülbelül a futás felénél megtörténik a hiba és a kimenet a következő:
Szal: 81, A: 55, B: 55
Szal: 81, A: 55, B: 55
Szal: 81, A: 55, B: 55
Szal: 81, A: 55, B: 55
Szal: 81, A: 55, B: 55
Szal: 81, A: 55, B: 55
A értéke: 55 B értéke: 55

Mutex zárakkal:
Program futásának kezdete:
Szal: 1, A: 42, B: 55
Szal: 2, A: 55, B: 42
Szal: 3, A: 42, B: 55
Szal: 4, A: 55, B: 42

Program futásának vége:
Szal: 91, A: 55, B: 42
Szal: 91, A: 42, B: 55
Szal: 91, A: 55, B: 42
Szal: 91, A: 42, B: 55
A értéke: 42 B értéke: 55

Hibátlanul cserélgette végig a 2 változó értékét zárak segítségével.

kecske20 2011.04.05. 17:18:43

(ÉLES) Idő 1: meddig tart 1000 processzt, illetve 1000 P-szálat létrehozni? Hasonlítsd össze! (help: PP 65)

1000 szál készítése:

...
990. szál kész
991. szál kész
992. szál kész
993. szál kész
994. szál kész
995. szál kész
996. szál kész
997. szál kész
998. szál kész
999. szál kész

real 0m0.090s
user 0m0.006s
sys 0m0.070s

1000 processz készítése:

...
990. processz kész.
991. processz kész.
992. processz kész.
993. processz kész.
994. processz kész.
995. processz kész.
996. processz kész.
997. processz kész.
998. processz kész.
999. processz kész.

real 0m0.331s
user 0m0.017s
sys 0m0.153s

hulala1 2011.04.05. 17:46:39

(ÉLES) STD 2: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a vermet (std::stack, help: 6. ea.)

#include <iostream>
class Verem
{
public:
Verem (int m=1024):meret (m), verem (new char[m])
{
sp=-1;
}
Verem (Verem& v):meret (v.meret), verem (new char[v.meret])
{
sp=v.sp;
for (int i=0; i<v.meret; ++i)
verem[i]=v.verem[i];
}
~Verem ()
{
delete[]verem;
}
char pop ()
{
return verem[sp--];
}
void push (char c)
{
verem[++sp]=c;
}
int getMeret ()
{
return meret;
}
int getDarab ()
{
return sp+1;
}
private:
char *verem;
int meret;
int sp;
};
void
ertekSzerint (Verem verem)
{
verem.push ('2');
verem.push ('3');
while(verem.getDarab ())
std::cout << verem.pop () << std::endl;
}
int
main (int argc, char *argv[])
{
Verem v (512);
v.push ('0');
v.push ('1');
ertekSzerint (v);
while(v.getDarab ())
std::cout << v.pop () << std::endl;
return 0;
}

kecske20 2011.04.05. 20:55:54

RGB 4: módosítsd a színezést, hogy ezt produkálja:

imagerz.com/QFdDXAgHBF4

Rankerz 2011.04.06. 22:57:06

(ÉLES) LZWCPP 1: a naiv első átiratban legyen külön headerben az osztálydefiníció!

screen: noob.hu/2011/04/06/main.png

//header.h

#define header_h
#include <iostream>
#include <cmath>

class LZWBinFa
{
public:
LZWBinFa (char b = '/'):betu (b), balNulla (NULL), jobbEgy (NULL)
{
};
~LZWBinFa ()
{
};
LZWBinFa *nullasGyermek ()
{
return balNulla;
}
LZWBinFa *egyesGyermek ()
{
return jobbEgy;
}
void ujNullasGyermek (LZWBinFa * gy)
{
balNulla = gy;
}
void ujEgyesGyermek (LZWBinFa * gy)
{
jobbEgy = gy;
}
void kiir (void)
{
melyseg = 0;
max_melyseg = 0;
kiir (this);
std::cout << "Mélység: " << max_melyseg - 1 << std::endl;
}
void szabadit (void)
{
szabadit (jobbEgy);
szabadit (balNulla);
}
void ratlag (void)
{
atlag = 0.0, atlagosszeg = 0.0, mely = 0.0, atlagdb = 0.0;
ratlag (this);
atlag = ((double) atlagosszeg) / atlagdb;
std::cout << "Átlag: " << atlag << std::endl;

}
void rszoras (void)
{
atlag = 0.0, atlagosszeg = 0.0, mely = 0.0, atlagdb = 0.0;
ratlag (this);
atlag = ((double) atlagosszeg) / atlagdb;
szorasosszeg = 0.0, melyseg = 0, atlagdb = 0.0, szoras = 0.0;
rszoras (this);
if (atlagdb - 1 > 0)
szoras = sqrt ((szorasosszeg) / (atlagdb - 1));
else
szoras = sqrt (szorasosszeg);
std::cout << "Szórás: " << szoras << std::endl;
}
private:
char betu;
LZWBinFa *balNulla;
LZWBinFa *jobbEgy;

LZWBinFa (const LZWBinFa &);
LZWBinFa & operator= (const LZWBinFa &);
int atlagosszeg, mely, atlagdb, melyseg, max_melyseg;

double atlag, szorasosszeg, szoras;

void kiir (LZWBinFa * elem)
{
if (elem != NULL)
{
++melyseg;
if (melyseg > max_melyseg)
max_melyseg = melyseg;

kiir (elem->jobbEgy);
// ez a postorder bejáráshoz képest
// 1-el nagyobb mélység, ezért -1
for (int i = 0; i < melyseg; ++i)
std::cout << "---";
std::cout << elem->betu << "(" << melyseg - 1 << ")" << std::endl;
kiir (elem->balNulla);
--melyseg;
}

}
void szabadit (LZWBinFa * elem)
{
if (elem != NULL)
{
szabadit (elem->jobbEgy);
szabadit (elem->balNulla);
delete elem;
}
}

void ratlag (LZWBinFa * elem)
{
if (elem != NULL)
{
++mely;
ratlag (elem->jobbEgy);
ratlag (elem->balNulla);
--mely;

if (elem->jobbEgy == NULL && elem->balNulla == NULL)
{

++atlagdb;
atlagosszeg += mely;

}

}

}
void rszoras (LZWBinFa * elem)
{

if (elem != NULL)
{
++melyseg;

rszoras (elem->jobbEgy);
rszoras (elem->balNulla);
--melyseg;

if (elem->jobbEgy == NULL && elem->balNulla == NULL)
{

++atlagdb;
szorasosszeg += ((melyseg - atlag) * (melyseg - atlag));

}

}

}

};

//main.cpp
#include <iostream>
#include "header.h"

int
main ()
{
char b;
int atlagdb=0.0,atlagosszeg=0.0;
LZWBinFa gyoker, *fa = &gyoker;
while (std::cin >> b)
{
{
if (b == '0')
{
if (!fa->nullasGyermek ())
{
LZWBinFa *uj = new LZWBinFa ('0');
fa->ujNullasGyermek (uj);
fa = &gyoker;
}
else
{
fa = fa->nullasGyermek ();
}
}
else
{
if (!fa->egyesGyermek ())
{
LZWBinFa *uj = new LZWBinFa ('1');
fa->ujEgyesGyermek (uj);
fa = &gyoker;
}
else
{
fa = fa->egyesGyermek ();
}
}
}
}
gyoker.kiir ();
gyoker.ratlag();
gyoker.rszoras();
gyoker.szabadit ();
return 0;
}

Veyron007 2011.04.07. 08:45:00

(ÉLES) Nyers socketek: írj saját pinget! (PP 158)

noob.hu/2011/04/07/ping.jpg

nb · http://fersml.blog.hu 2011.04.07. 11:37:12

@hulala1: bocsi, de hol tartottunk ezzel az lzw-ssel? kicsit elárasztott az 50 üzenet...

nb · http://fersml.blog.hu 2011.04.07. 11:41:15

@Painkiller19910110: nekem tetszik a tervezett programod, de párhuzamosan a rabin-miller tesztet megvalósító csomagokat is meg kéne nézned, Javában pl a Bouncy Castle-n belül, de sima Javában is az download.oracle.com/javase/1.4.2/docs/api/java/math/BigInteger.html#probablePrime%28int,%20java.util.Random%29

nb · http://fersml.blog.hu 2011.04.07. 11:42:41

@kecske20: ahogy ismerem magam, a "Hiba" egy perror-ból jön, melyikből?

nb · http://fersml.blog.hu 2011.04.07. 11:43:45

@Rankerz: ha máshogy nem, magánban kérek egy forrást is, hogy lássam a "trükköt"

eiborn 2011.04.07. 11:45:48

(ÉLES) Készíts saját int verem osztályt, mélymásolással másolódjon! (help: 6. ea.)

imagerz.com/QFdDXAgCAAA

nb · http://fersml.blog.hu 2011.04.07. 11:56:07

@hulala1: Ok, akkor már csak a válasz hiányzik :)

nb · http://fersml.blog.hu 2011.04.07. 12:23:17

@Rankerz: így kéne festenie: pl. 6 ea. 31. slide

Veyron007 2011.04.07. 12:28:37

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip_icmp.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>

unsigned short in_cksum(unsigned short *addr, int len)
{
register int sum = 0;
u_short answer = 0;
register u_short *w = addr;
register int nleft = len;

while (nleft > 1)
{
sum += *w++;
nleft -= 2;
}

if (nleft == 1)
{
*(u_char *) (&answer) = *(u_char *) w;
sum += answer;
}

sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */
sum += (sum >> 16); /* add carry */
answer = ~sum; /* truncate to 16 bits */
return (answer);
}

int main ()
{
int kapu_figyelo;
struct icmp icmp_echo;
struct icmp *icmp_echoreply;
struct ip *ip;
int icmp_seqc = 1;
int pid = getpid ();
char buffer[2048];
int v, len, gyermekem_pid;
struct sockaddr_in szerver, kliens;
memset ((void *) &szerver, 0, sizeof (szerver));
icmp_echo.icmp_type = ICMP_ECHO;
icmp_echo.icmp_code = 0;
icmp_echo.icmp_cksum = 0;
icmp_echo.icmp_id = pid;
icmp_echo.icmp_seq = htons(icmp_seqc++);
icmp_echo.icmp_cksum = in_cksum((unsigned short *)&icmp_echo, sizeof(struct icmp));

if ((kapu_figyelo = socket (PF_INET, SOCK_RAW, IPPROTO_ICMP)) == -1)
{
perror ("socket");
exit (-1);
}
if ((gyermekem_pid = fork ()) == 0)
{
for (;;)
{
if ((v = sendto (kapu_figyelo, (void *) &icmp_echo,
sizeof (icmp_echo), 0,
(struct sockaddr *) &szerver,
sizeof (szerver))) == -1)
{
perror ("sendto");
exit (-1);
}
sleep (1);
icmp_echo.icmp_seq = htons(icmp_seqc++);
icmp_echo.icmp_cksum = 0;
icmp_echo.icmp_cksum = in_cksum((unsigned short *)&icmp_echo, sizeof(struct icmp));
}
}
else if (gyermekem_pid > 0)
{
for (;;)
{
if ((v = recvfrom (kapu_figyelo, (void *) buffer,
sizeof (buffer), 0,
(struct sockaddr *)&kliens,
(socklen_t *) & len)) == -1)
{
perror ("recvfrom");
exit (-1);
}
ip = (struct ip *) buffer;
icmp_echoreply = (struct icmp *)
(buffer + (ip->ip_hl << 2));
if (icmp_echoreply->icmp_type == ICMP_ECHOREPLY
&& icmp_echoreply->icmp_id == pid)
{
printf ("%d bajt ICMP_ECHOREPLY a %s-rol seq: %d ttl: %d\n",
v - (ip->ip_hl << 2),
inet_ntoa (kliens.sin_addr),
ntohs(icmp_echoreply->icmp_seq), ip->ip_ttl);
}
}
}
else
{
perror ("fork");
exit (-1);
}
}

kecske20 2011.04.07. 12:44:36

@nb:

szálak készítése forrás:

#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>
#define MAX_SZALAK 1000
int i;
void szal(void) {
}
int main(int argc, char *argv[]) {
int hiba = 0;
pthread_t szaltomb[MAX_SZALAK];
hiba = pthread_create(&szaltomb[i], NULL, (void *) szal, &i);
for (i = 0; i < MAX_SZALAK && hiba == 0; i++) {
hiba = pthread_create(&szaltomb[i], NULL, (void *) szal, &i);
printf("%d. szál kész \n", i);
if (hiba != 0)
printf("Hiba kód: %d \n A %d. szál készítése közben.\n",hiba, i + 1);
}
exit(-1);
}

Az 1000 processz forrása, pedig a PP 64. oldal, lap alján lévő program szerint.

A szálak készítését root-ba csináltam, majd találtam egy 'ulimit -s 100' parancsot. Így már bármennyi szálat tudunk csinálni.

Rankerz 2011.04.07. 14:20:54

@nb: "magánban kérek egy forrást is" ,mihelyt hazaérek elküdlöm.

Rankerz 2011.04.07. 16:26:34

@nb: LZWCPP 1 /header/ javítva

screen: noob.hu/2011/04/07/header.png

//fa.h

#ifndef FA_H
#define FA_H

#include <iostream>

class LZWBinFa
{
public:
LZWBinFa (char b = '/'):betu (b), balNulla (NULL), jobbEgy (NULL) {};
~LZWBinFa () {};
LZWBinFa *nullasGyermek () {return balNulla;}
LZWBinFa *egyesGyermek (){return jobbEgy;}
void ujNullasGyermek (LZWBinFa * gy){balNulla = gy;}
void ujEgyesGyermek (LZWBinFa * gy){jobbEgy = gy;}
void kiir (void);
void szabadit (void);
private:
char betu;
int melyseg;
LZWBinFa *balNulla;
LZWBinFa *jobbEgy;
LZWBinFa (const LZWBinFa &);
LZWBinFa & operator=(const LZWBinFa &);
void kiir (LZWBinFa * elem);
void szabadit (LZWBinFa * elem);
};
#endif// FA_H

//naiv.cpp

#include <iostream>
#include "fa.h"

void LZWBinFa::kiir (void)
{
melyseg = 0;
kiir (this);
}
void LZWBinFa::szabadit (void)
{
szabadit (jobbEgy);
szabadit (balNulla);
}
void LZWBinFa::kiir (LZWBinFa * elem)
{
if (elem != NULL)
{
++melyseg;
kiir (elem->jobbEgy);
// ez a postorder bejáráshoz képest
// 1-el nagyobb mélység, ezért -1
for (int i = 0; i < melyseg; ++i)
std::cout << "---";
std::cout << elem->betu << "(" << melyseg - 1<<")" << std::endl;
kiir (elem->balNulla);
--melyseg;
}
}
void LZWBinFa::szabadit (LZWBinFa * elem)
{
if (elem != NULL)
{
szabadit (elem->jobbEgy);
szabadit (elem->balNulla);
delete elem;
}
}
int
main ()
{
char b;
LZWBinFa gyoker, *fa = &gyoker;

while (std::cin >> b)
{
if (b == '0')
{
// van '0'-s gyermeke az aktuális csomópontnak?
if (!fa->nullasGyermek ()) // ha nincs, csinálunk
{
LZWBinFa *uj = new LZWBinFa ('0');
fa->ujNullasGyermek (uj);
fa = &gyoker;
}
else // ha van, arra lépünk
{
fa = fa->nullasGyermek ();
}
}
else
{
if (!fa->egyesGyermek ())
{
LZWBinFa *uj = new LZWBinFa ('1');
fa->ujEgyesGyermek (uj);
fa = &gyoker;
}
else
{
fa = fa->egyesGyermek ();
}
}
}

gyoker.kiir ();
gyoker.szabadit ();

return 0;
}

hulala1 2011.04.07. 16:29:12

@nb: Még nem kaptam meg a trófeákat az lzw fásra!

eiborn 2011.04.07. 17:07:41

(ÉLES) TCP 3: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt!

imagerz.com/QFdDXAgCUVY

(libcurl-t használtam a program megíráshoz)

darki11 2011.04.07. 17:24:06

@nb: Az az s véletlenül benne maradt mert alapból nem ezt a feladatot akartam megcsinálni,de mivel azt nem tudtam megoldani,így átírtam erre...
Nem néztem át rendesen...

Rankerz 2011.04.07. 18:08:22

(ÉLES) Ikersárkány: írj egy olyan Qt progit, ami ábrázolja az i-1 alapú számrendszer nulla egészrészű halmazát (help: papíron)

noob.hu/2011/04/07/iker1.png
noob.hu/2011/04/07/iker2.png
noob.hu/2011/04/07/iker3.png
noob.hu/2011/04/07/iker4.png
noob.hu/2011/04/07/iker5.png

Painkiller19910110 2011.04.08. 09:32:34

Köszönöm a választ Tanár Úr érdekesek voltak a prímszámosak,
illetve lenne még egy kérdésem, írtam egy programot mely tekinthető stopperóráának :)
Méri az eltelt hete, napot órát percet másodpercet, de egy baj can csak vele hogy irdatlanul sok processzorteljesítményt emészt fel, erre kérnék egy tanácsot.

Kép: imagerz.com/QFdDXAgMAgU

idomero.c

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void wait ( int seconds )
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while (clock() < endwait) {}
}

int main ()
{
int mp=0,p=0,o=0,n=0,het=0;
for (mp;; mp++)
{
system("clear");
if(mp==60)
{
mp=0;
p++;
}
if(p==60)
{
p=0;
o++;
}
if(o==24)
{
o=0;
n++;
}
if(n==7)
{
n=0;
het++;
}
printf ("Hét: %d Nap: %d Óra: %d Perc: %d Másodperc: %d\n",het,n,o,p,mp);
wait (1);

}
printf ("FIRE!!!\n");
return 0;
}

eiborn 2011.04.09. 10:19:00

(ÉLES) TCP 4: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott, képre mutató URL-t letölt és elment fájlba!

imagerz.com/QFdDXAhVBwU

( itt is libcurl-t használtam a program megíráshoz)

Rankerz 2011.04.09. 15:15:37

@Bandee90: ezt már beadtam régebben

Rankerz 2011.04.10. 21:30:41

(ÉLES, C, Qt C++, Java-kész) Kocka 2: parancssor argumentumként kapott képre ráírja az ugyancsak így kapott szöveget.

noob.hu/2011/04/10/kepiro.png

kecske20 2011.04.13. 23:02:33

(ÉLES) Kép CPP 1: saját "képfeldolgozásos" osztályodban terheld túl a + operátort, hogy képeket lehessen "összeadni"!

Itt van a 2 kép egymáson:

imagerz.com/QEFHCktvAwMEA11NGAVQ

kecske20 2011.04.14. 22:34:12

(ÉLES) PPplayer: írj egy videó lejátszó programot! (gstreamer, help: 8. ea.)

Három napig szenvedtem a csomag telepítésével, de végülis sikerült :)

imagerz.com/QFdDXAkMB1E

nb · http://fersml.blog.hu 2011.04.15. 13:59:10

@Painkiller19910110: gondolj az első laborra, a for(;;); és a for(;;)sleep(); közti különbségre! most Neked az usleep (lásd man) javaslom.

nb · http://fersml.blog.hu 2011.04.15. 14:25:26

@Rankerz: OK., de ne nyomjuk rootként!

eiborn 2011.04.15. 15:15:42

@nb:

//
// kep.cpp
//
// fordítás:g++ kep.cpp -lcurl -o kep
//

#include <iostream>
#include <curl/curl.h>
#include <stdio.h>
using namespace std;

int main(int argc, char *argv[])
{
if (argc != 3)
{
std::cout << "Használat: ./kep <kep URl címe> <kimeneti fájl neve>\n";
return -1;
}

CURL *kep;
CURLcode imgresult;
FILE *fajl;

kep = curl_easy_init();
if(kep)
{
fajl = fopen(argv[2], "w");
curl_easy_setopt(kep, CURLOPT_WRITEFUNCTION, NULL);
curl_easy_setopt(kep, CURLOPT_WRITEDATA, fajl);
curl_easy_setopt(kep, CURLOPT_URL, argv[1]);
imgresult = curl_easy_perform(kep);
if(imgresult)
{
std::cout<< "A kép nem tölthető le!\n";
}
}
curl_easy_cleanup(kep);
fclose(fajl);
return 0;
}

nb · http://fersml.blog.hu 2011.04.15. 15:26:39

@eiborn: alapvetően egy socketről gondoltam olvasgatni pufferelten, közben ugyancsak pufferelve nyomni ki fájlba..., de ok.

hulala1 2011.04.15. 16:16:00

Jó napot Tanár úr!

Nekem jóvá írja Tanár úr az lzw és a veremes feladatra a trófeákat? Mert még nem történt meg.

vlacka 2011.04.15. 18:22:00

(ÉLES) Hangyás 2: írj egy hangya szimulációs Qt progit, valahogy így mutasson!

Képek:
kepfeltoltes.hu/110415/n_vtelen1_www.kepfeltoltes.hu_.jpg
kepfeltoltes.hu/110415/n_vtelen2_www.kepfeltoltes.hu_.jpg
kepfeltoltes.hu/110415/n_vtelen3_www.kepfeltoltes.hu_.jpg

Nem egészen úgy viselkednek, mint a példában. Lehet hogy a paramétereket rosszul állítottam be.

nb · http://fersml.blog.hu 2011.04.15. 20:03:37

@vlacka: a 6 pontos blokkban szerintem az enyém sem volt tökéletes, mert a szimulációk olyan "négyzetes" utakat alakítottak ki; tipikusan, mint az angolszász katonai iskolákban a diákok, úgy masíroznak benne a hangyák...

de a lényeget látni: ahogy halványul az illatanyag, a modell pontos beállításaival élmény a játék, hiszen a megjelenítőd már kész.

Adnék még +1 pontot, ha van a progidnak valamilyen OO struktúrája (Qt esetén biztos vagyok benne, hogy van) és ezt egy UML osztálydiagramon bemutatod (ez mindenkire vonatkozik, aki OO forrásokat készít, de fejenként 2 trófeában limitáljuk, tehát 2x1 trófea max. összesen)

Forrásból Java esetén az ArgoUML-t javaslom, C++-ra a uml.sourceforge.net/

Ha a forrásod közkinccsé teszed, hátha mások is szívesen tesztelgetnék, gondolom én :)

eiborn 2011.04.15. 20:31:32

Meg szeretném kérdezni, hogy a TCP3 és a TCP4 feladat üti-e egymást, mert mindkettőt beküldtem, és a TCP4-re megkaptam a pontokat,de a TCP3-ra nem
(A TCP3-t is hasonlóképpen csináltam meg, mint a TCP4-t)

nb · http://fersml.blog.hu 2011.04.15. 20:36:54

@eiborn: TCP 3-ra is adok 4-et, ha úgy készíted el, hogy nem használod a curl-t.

szimih 2011.04.16. 18:16:12

Még nagyon béta verzió de már látszik némi eredmény:)
www.youtube.com/watch?v=5KoB9sWl9w8

( videót csak linkkel lehet megnézni majd törlöm, nem akarom megsérteni a személyiségi jogokat )

(Youtubról letöltött videón nem tudtam a színkövetést belevenni talán egy jobb minőségűvel sikerülne + nem kéne egérrel megadni mi kövessen)

nb · http://fersml.blog.hu 2011.04.16. 19:54:41

@szimih: remek! A pontot már simán megadom rá. A videó részemről rendben, nyugodtan használhatod.

Veyron007 2011.04.17. 00:28:55

# (ÉLES) STD 2: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a vermet (std::stack, help: 6. ea.)

postimage.org/image/m995mm9w/

Sekely:
#include <iostream>
#include <stack>

using namespace std;

class Verem
{
public: Verem (int m=1024):meret (m), verem (new char[m])
{
sp=-1;
}

Verem(Verem& v):meret (v.meret), verem (new char[v.meret])
{
sp = v.sp;
for (int i=0; i<v.meret; ++i)
verem[i]=v.verem[i];
}

~Verem()
{
delete []verem;
}

char pop()
{
return verem[sp--];
}

void push (char c)
{
verem[++sp]=c;
}

int getMeret()
{
return meret;
}

int getDarab()
{
return sp+1;
}

private:
char *verem;
int meret;
int sp;
};

void ertekSzerint (Verem verem)
{
verem.push('0');
verem.push('1');

cout << verem.pop() << endl;
cout << verem.pop() << endl;
cout << verem.getMeret() << endl;
}

int main(int argc, char *argv[])
{
Verem v(512);

ertekSzerint(v);

v.push('0');
v.push('1');

cout << v.pop() << endl;
cout << v.pop() << endl;
cout << v.getMeret() << endl;

return 0;
}
Mely:
#include <iostream>
#include <stack>

using namespace std;

class Verem
{
public: Verem (int m=1024):meret (m), verem (new char[m])
{
sp=-1;
}

Verem(Verem& v):meret (v.meret), verem (new char[v.meret])
{
sp = v.sp;
for (int i=0; i<v.meret; ++i)
verem[i]=v.verem[i];
}

~Verem()
{
delete []verem;
}

char pop()
{
return verem[sp--];
}

void push (char c)
{
verem[++sp]=c;
}

int getMeret()
{
return meret;
}

int getDarab()
{
return sp+1;
}

private:
char *verem;
int meret;
int sp;
};

void ertekSzerint (Verem verem)
{
verem.push('0');
verem.push('1');

cout << verem.pop() << endl;
cout << verem.pop() << endl;
cout << verem.getMeret() << endl;
}

int main(int argc, char *argv[])
{
Verem v(512);

v.push('0');
v.push('1');

ertekSzerint(v);

while (v.getDarab() )
cout << v.pop() << endl;

return 0;
}

Veyron007 2011.04.17. 00:43:50

(ÉLES) Világszépe fraktál nagyító szépségverseny 3: S billentyűre mentse a fraktál nagyítást mindig új néven, pl. sorszámozza! (help: itt)

postimage.org/image/1eq8sj7ac/
postimage.org/image/1eqdr58ro/

Veyron007 2011.04.17. 00:53:03

@Veyron007: Melymasolas javitva:

g++ mely_masolas_stack.cpp -o mm
veyron007@shrek:~/sec/IDG/Sekely_es_mely_masolas$ ./mm
3
2
1
0
1
0

Forrás: (csak a változtatott rész)
void ertekSzerint (Verem verem)
{
verem.push('2');
verem.push('3');
while (verem.getDarab() )
cout << verem.pop() << endl;
}
int main(int argc, char *argv[])
{
Verem v(512);
v.push('0');
v.push('1');
ertekSzerint(v);
while (v.getDarab() )
cout << v.pop() << endl;
return 0;
}

nb · http://fersml.blog.hu 2011.04.20. 18:22:57

@Veyron007: miért van itt 2x a Verem class?

nb · http://fersml.blog.hu 2011.04.20. 18:36:22

@hulala1: megadom rá a pontot, de remélem már régen kijavítottad, hogy a szabadítás csak a szórás számolás után van!

:)

A vermesre is azért nincs még pont, mert ahogy láttam, ott is visszakérdeztem...

hulala1 2011.04.20. 21:43:20

@nb: Köszönöm a pontokat, a vermes akkor ez nem jó?
#include <iostream>
class Verem
{
public:
Verem (int m=1024):meret (m), verem (new char[m])
{
sp=-1;
}
Verem (Verem& v):meret (v.meret), verem (new char[v.meret])
{
sp=v.sp;
for (int i=0; i<v.meret; ++i)
verem[i]=v.verem[i];
}
~Verem ()
{
delete[]verem;
}
char pop ()
{
return verem[sp--];
}
void push (char c)
{
verem[++sp]=c;
}
int getMeret ()
{
return meret;
}
int getDarab ()
{
return sp+1;
}
private:
char *verem;
int meret;
int sp;
};
void
ertekSzerint (Verem verem)
{
verem.push ('2');
verem.push ('3');
while(verem.getDarab ())
std::cout << verem.pop () << std::endl;
}
int
main (int argc, char *argv[])
{
Verem v (512);
v.push ('0');
v.push ('1');
ertekSzerint (v);
while(v.getDarab ())
std::cout << v.pop () << std::endl;
return 0;
}

phloriaN 2011.04.21. 22:49:35

(ÉLES) Qtrajzoló 1: írj egy Qt rajzolóprogit, az egérrel lehessen rajzolni, a képet S billenytűvel lehessen menteni!

noob.hu/2011/04/21/Screenshot-1.png

noob.hu/2011/04/21/Screenshot-2.png

kecske20 2011.04.22. 02:55:51

(ÉLES) Obi-Wan Kenobi: készíts egy olyan programot, ami az előadás videóira képes az előadó kezébe a mester kék fénykardját rajzolni:

Valami ilyesmire gondolt Tanár úr?

www.youtube.com/watch?v=0iKWhYO3on4

Elmosódott konvertálás közben. Istanbul nevű progit használtam.

kecske20 2011.04.22. 09:29:54

+ szeretném feltenni a FerSML-es pakkot, de valahogy nagyon nem megy, kis segítséget kérnék hozzá. Köszönöm.

Veyron007 2011.04.22. 10:51:06

# (ÉLES) TCP 1: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt, lement, illetve ha html lapról van szó, akkor a (href) hivatkozott URL-eket is letölti!

-----------------------------

uploadpic.org/storage/2011/uI98AqKbwH8DYXsuIMxtuhLSp.png

nb · http://fersml.blog.hu 2011.04.24. 19:09:31

@kecske20: egyelőre 8 pontot adtam, mert a lényeg kész, a +2-t ha a fénykardnak lesz "fény udvara" is (pár gauss szűrő például elmossa a kard széleit és ilyen hatást tud kelteni)

nb · http://fersml.blog.hu 2011.04.24. 19:11:07

@kecske20: Linux alatt (és Win alatt is, ha fel van téva a Maven3) annyi kell, hogy

1. kicsomagol
2. mvn package
3. előző elkészíti a jart már csak futtatni kell

hol tartasz ezek közül?

nb · http://fersml.blog.hu 2011.04.24. 19:12:24

@Veyron007: html letöltése itt nem látszik... (s hogy a hivatkozásokat is lenyomja)

vlacka 2011.04.27. 15:51:58

(ÉLES) LZWCPP 1: a naiv első átiratban legyen külön headerben az osztálydefiníció!

Képek a kódról:
kepfeltoltes.hu/110427/10631418401_www.kepfeltoltes.hu_.jpg
kepfeltoltes.hu/110427/1241240972_www.kepfeltoltes.hu_.jpg

vlacka 2011.04.27. 17:48:44

(ÉLES) LZWCPP 7: a második átiratban a fától meg lehessen kérdezni a fa mélységét!

Képek:
kepfeltoltes.hu/110427/11270700211_www.kepfeltoltes.hu_.jpg
kepfeltoltes.hu/110427/3378333192_www.kepfeltoltes.hu_.jpg

A bemenet "10001010111101110001" volt.

basecamp 2011.04.30. 12:12:46

(ÉLES, Python) PyLZW fa: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, s nem is a T, C, A, G betűkre, hanem tetszőleges szavakra menjen a fa építése.

imagerz.com/QFdDXV0EC14

basecamp 2011.04.30. 13:07:49

(ÉLES, Python) Könyves Kálmán: készíts csevegő robotot, aki a beszélgetések közben építi az LZW fát a szavakat véve egy "betűnek".

imagerz.com/QFdDXV0EUgU

basecamp 2011.04.30. 13:44:26

(ÉLES, Python) PyTCAG: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, hanem a T, C, A, G betűkre megy

imagerz.com/QFdDXV0EUAU

eiborn 2011.04.30. 15:42:22

(ÉLES) RGB 3: milyen képet produkál, ha az előző csipetben ilyen a színezés:

imagerz.com/QFdDXV0FAF8

szimih 2011.05.01. 21:07:06

Mivel a beadandót C-ben csináltam meg úgy gondoltam beadok valamit C++-ban. Keresgéltem neten kicsit socket kezelése C++-ban, voltak is leírások példák, ezt hoztam most össze.

(ÉLES) Proxy 1: írj egy proxy szervert!

/*
Fordítás: c++ -pedantic -ansi -O3 -o tcpproxy_server tcpproxy_server.cpp -L/usr/lib -lstdc++ -lpthread -lboost_thread -lboost_system
Hasznalat: ./tcpproxy_server helyi_ip helyi_port tavoli_ip tavoli_port
*/
#include <cstdlib>
#include <cstddef>
#include <iostream>
#include <string>

#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/asio.hpp>

namespace tcp_proxy
{
namespace ip = boost::asio::ip;

class tcp_bridge : public boost::enable_shared_from_this<tcp_bridge>
{
private:

typedef boost::function <void (const boost::system::error_code&, const size_t& )> handler_type;
typedef ip::tcp::socket socket_tipus;

public:

typedef tcp_bridge type;
typedef boost::shared_ptr<type> ptr_type;

tcp_bridge(boost::asio::io_service& ios)
: kliens_socket_(ios),tavoli_socket_(ios)
{}

socket_tipus& socket()
{
return kliens_socket_;
}

void start(const std::string& tavoli_host, unsigned short tavoli_port)
{
tavoli_socket_.async_connect(ip::tcp::endpoint(boost::asio::ip::address::from_string(tavoli_host),tavoli_port),
boost::bind(&type::handle_remote_connect,shared_from_this(),boost::asio::placeholders::error));
}

void handle_remote_connect(const boost::system::error_code& error)
{
if (!error)
{
tavoli_write_ = boost::bind(&type::handle_remote_write,shared_from_this(),boost::asio::placeholders::error);

kliens_write_ = boost::bind(&type::handle_client_write,shared_from_this(),boost::asio::placeholders::error);

tavoli_read_ = boost::bind(&type::handle_remote_read,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred);

kliens_read_ = boost::bind(&type::handle_client_read,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred);

tavoli_socket_.async_read_some(boost::asio::buffer(tavoli_adat_, max_adat_hossz),tavoli_read_);

kliens_socket_.async_read_some(boost::asio::buffer(kliens_adat_, max_adat_hossz),kliens_read_);
}
else
close();
}

private:

void handle_client_write(const boost::system::error_code& error)
{
if (!error)
{
tavoli_socket_.async_read_some(boost::asio::buffer(tavoli_adat_, max_adat_hossz),tavoli_read_);
}
else
close();
}

void handle_client_read(const boost::system::error_code& error,const size_t& bytes_transferred)
{
if (!error)
{
async_write(tavoli_socket_,boost::asio::buffer(kliens_adat_,bytes_transferred),tavoli_write_);
}
else
close();
}

void handle_remote_write(const boost::system::error_code& error)
{
if (!error)
{
kliens_socket_.async_read_some(boost::asio::buffer(kliens_adat_, max_adat_hossz),kliens_read_);
}
else
close();
}

void handle_remote_read(const boost::system::error_code& error,
const size_t& bytes_transferred)
{
if (!error)
{
async_write(kliens_socket_,boost::asio::buffer(tavoli_adat_, bytes_transferred),kliens_write_);
}
else
close();
}

void close()
{
if (kliens_socket_.is_open()) kliens_socket_.close();
if (tavoli_socket_.is_open()) tavoli_socket_.close();
}

socket_tipus kliens_socket_;
socket_tipus tavoli_socket_;

enum { max_adat_hossz = 4096 };
char kliens_adat_[max_adat_hossz];
char tavoli_adat_[max_adat_hossz];

handler_type kliens_write_;
handler_type tavoli_write_;
handler_type kliens_read_;
handler_type tavoli_read_;

public:

static inline ptr_type create(boost::asio::io_service& ios)
{
return ptr_type(new type(ios));
}

class acceptor
{
private:
typedef boost::function<void (const boost::system::error_code&)> handler_type;

public:

acceptor(boost::asio::io_service& ios,
unsigned short helyi_port,
unsigned short tavoli_port,
const std::string& helyi_host,
const std::string& tavoli_host)
: io_service_(ios),
helyi_cim(boost::asio::ip::address_v4::from_string(helyi_host)),
acceptor_(ios,ip::tcp::endpoint(helyi_cim,helyi_port)),
tavoli_port_(tavoli_port),
tavoli_host_(tavoli_host)
{}

bool kapcsolat_elfogadasa()
{
try
{
session_ = type::create(io_service_);
acceptor_.async_accept(session_->socket(),
boost::bind(&acceptor::handle_accept,this,
boost::asio::placeholders::error));
}
catch(std::exception& e)
{
std::cerr << "Kapcsolat elfogagadasa kivetel: " << e.what() << std::endl;
return false;
}
return true;
}

private:

void handle_accept(const boost::system::error_code& error)
{
if (!error)
{
session_->start(tavoli_host_,tavoli_port_);
if (!kapcsolat_elfogadasa())
{
std::cerr << "Visszautasitotta." << std::endl;
}
}
else
{
std::cerr << error.message() << std::endl;
}
}

boost::asio::io_service& io_service_;
ip::address_v4 helyi_cim;
ip::tcp::acceptor acceptor_;
ptr_type session_;
handler_type handle_;
unsigned short tavoli_port_;
std::string tavoli_host_;
};

};
}

int main(int argc, char* argv[])
{
if (argc != 5)
{
std::cerr << "Hasznalat: ./tcpproxy_server helyi_ip helyi_port tavoli_ip tavoli_port" << std::endl;
return 1;
}

const unsigned short helyi_port = static_cast<unsigned short>(::atoi(argv[2]));
const unsigned short tavoli_port = static_cast<unsigned short>(::atoi(argv[4]));
const std::string helyi_host = argv[1];
const std::string tavoli_host = argv[3];

boost::asio::io_service ios;

try
{
tcp_proxy::tcp_bridge::acceptor acceptor(ios,helyi_port,tavoli_port,helyi_host,tavoli_host);// proxy ostály
acceptor.kapcsolat_elfogadasa();
ios.run();
}
catch(std::exception& e)
{
std::cerr << e.what() << std::endl;
return 1;
}

return 0;
}

szimih 2011.05.01. 21:07:54

(ÉLES) Foci 3: írj progit "igazi" (pl. YouTube-os) videón a labda követésére!

www.youtube.com/watch?v=PoXvcy9MmRQ

És és Joe89 kolega továbbfejlesztettük az előző programot bár még korántsem tökéletes ( gyors mozgást nem szívleli lehet a videó minősége is közrejátszik, videó végén lévő képsor ). Már korábban is voltak társulások most mi is osztozni szeretnénk a pontokon, én úgyse kaphatom meg az össze pontot mivel egy hasonlót beküldtem másrészt mégiscsak ketten vittük tovább.

kecske20 2011.05.01. 22:04:22

(ÉLES) Obi-Wan Kenobi: készíts egy olyan programot, ami az előadás videóira képes az előadó kezébe a mester kék fénykardját rajzolni:

Kiegészítve a "homályosítással".

imagerz.com/QFdDXV0CAQc

nb · http://fersml.blog.hu 2011.05.03. 15:10:22

@Veyron007: de itt nem kéne a lol.hu linkjeit is látni?

nb · http://fersml.blog.hu 2011.05.03. 15:30:43

@vlacka: kép a fordításról, futtatásról?

nb · http://fersml.blog.hu 2011.05.03. 15:49:02

@szimih: 10-et feleztem (ha gyors lasztira is megy majd +1.5 +1.5) de ebben a félévben több "trófeás kooperáció" ne legyen, (prog2-n lesz ez majd alapkövetelmény, de most kerülendő)

Veyron007 2011.05.03. 22:45:46

@nb: " de itt nem kéne a lol.hu linkjeit is látni? "
Ja igen tényleg, ezt nem sikerűlt megoldani. Erre így hány pontot kaphatok?
süti beállítások módosítása