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

A negyedik és ötödik labor anyaga - Gyönyör a tömör - C-ből C++-ba

2013.02.24. 17:52 nb

A laborhoz ajánlott muzsika a Fort Minor - Remember The Name: http://youtu.be/VDvr08sCPOc

A negyedik laborig a kötelező (márc. 11-i)

A KÖNYVből olvassuk el a

  • a 190-218 oldalt
  • a 295-301 oldalt

ahonnan 3 olyan dolgot kérdezz meg a binomodtól, amelyet nem, vagy nehezebben értesz, a binom pedig próbáljon meg válaszolni. Globális ellenőrző kérdések:

  • Mi történik, ha egy függvényparaméter tömb?
  • Mi a túlterhelés?
  • Mik a tagfüggvények?

Laborkártyák

  • 5. ea 60-64.
  • 3. ea. 84.
  • Magyarázd meg a KÖNYV 5.9.1 feladata kapcsán a "10 egészbõl álló tömb referenciája" részkérdéssel felmerült alábbi progit:
    #include <iostream>
    
    int main()
    {
    
      char tomb[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
    
      char& ref_elso_elemre = *tomb;
      std::cout << ref_elso_elemre << std::endl;
    
      /*
      // Mi történik, ha ezt próbálod fordítani?
      //  error: invalid types ‘char[int]’ for array subscript
      for ( int i ( 0 ); i<7; ++i )
        std::cout << ref_elso_elemre[i] << " ";
      */
    
      char ( &ref_tombre ) [7] = tomb;
    
      for ( int i ( 0 ); i<7; ++i )
        std::cout << ref_tombre[i] << " ";
    
      std::cout << std::endl;
    
      char c = 'x', ( &masik_ref_tombre ) [7] = tomb, 
    & masik_ref_elso_elemre = *tomb, *cp = tomb; std::cout << c << std::endl; std::cout << *cp << std::endl; std::cout << masik_ref_elso_elemre << std::endl; for ( int i ( 0 ); i<7; ++i ) std::cout << masik_ref_tombre[i] << " "; std::cout << std::endl; return 0; }

Az ötödik laborig a kötelező olvasmány (márc. 18-i hét)

A KÖNYVből olvassuk el a

  • a 262-272; 276-290 oldalt
  • a 295-305; 309-336 oldalt

ahonnan 3-3 (=6) olyan dolgot kérdezz meg a binomodtól, amelyet nem, vagy nehezebben értesz, a binom pedig próbáljon meg válaszolni. Globális ellenőrző kérdések:

  • Mutass be egy saját vagy felélesztett "állományőrszemes" fejlécállományt!
  • Éleszd fel az 5. ea. 16-22 fóliákon bevezetett normális véletlenszámgenerátor C++ változatát!
  • Osztály típusú "tagok konstruktorainak végrehajtása megelőzi a tartalmazó osztály saját konstruktora törzsének a végrehajtását"?

Laborkártyák

Éleszd fel az 5. előadás

  • Mandelbtrotos
  • Conway-féle életjátékos
  • Humág genom megjelenítő
  • Arecibói üzi

programjait! (Ha bármi gondod van, kérd közösségünk segítségét egy kommentben, s a hasznos válaszokat ne feledd jutalmazni :)

A http://progpater.blog.hu/2013/03/09/az_elso_nehany_het_tapasztalatai poszt forrásának kipróbálása, celebrálása.

Az negyedik és ötödik labor feladatai, poszt-pontjai

Opcionális feladatok
  • A KÖNYV 218 oldali feladatai: 1-től 19-ig, pontozásuk most: (*SZAM -1) * 5 + 3
  • A KÖNYV 351. oldalán megkezdett (folytatott) complex osztályt éleszd fel 8 pontért.
  • Glibc fgv. felülírása: implementáld a 3. ea 13-15 fóliájának példáját, ahol a rendszerbeli printf föggvényt meghekkeled!
  • 15 pont az első 10 hallgatónak, aki lejátszik egy meccset a kvantum-tudatos focival (Quantum Consciousness Soccer Simulator),  s a letöltés, fordítás, futtatás menetét bemutatja egy YouTube videón (ez persze triviálisan összevonható a globális "akinek elfogadjuk egy megoldását a pontversenyben, az további 5 pontot kap, ha a megoldását egy YouTube videóban be is mutatja, röviden el is magyarázz. A videóban töntessük fel (cím, leírás), hogy a Prog1 kurzus keretében vagy a kurzus-közösség támogatására stb. készült." c. feladattal. (Pl.: http://youtu.be/S7rnLpmZvHw, http://youtu.be/dcR2eWdyg38)

    sz4.png

187 komment

A bejegyzés trackback címe:

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

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.

Scrop 2013.03.08. 23:55:10

7_18 : 3 pont
kepfeltoltes.hu/view/130308/7_18_www.kepfeltoltes.hu_.jpg

#include <iostream>

using namespace std;

int fact(int n)
{
int szam = 1;
if (n > 0 )
for(int i = 1; i <= n; ++i)
szam *= i;
else
if (n < 0)
{
cout << "Nem megfelő szám" << endl;
return -1;
}
else
return 1;

return szam;
}

int main()
{

cout << fact(5) << endl;
cout << fact(4) << endl;
cout << fact(0) << endl;
cout << fact(-56) << endl;
return 0;
}

Scrop 2013.03.09. 13:14:59

7_8 : 10,5 pont
kepfeltoltes.hu/view/130309/7_8_www.kepfeltoltes.hu_.jpg
#include <iostream>
#include <stdlib.h>
//#include <stdio.h>
#include <unistd.h>
//#include <time.h>

using namespace std;

const int x = 7;
const int y = 5;

int** invert(int **tomb, int x, int y)
{
int** tomb_inv = new int*[y];
for(int i = 0; i < y; ++i)
tomb_inv[i] = new int[x];

for (int i = 0; i < y; ++i)
{
for (int j = 0; j < x; ++j)
{
*(*(tomb_inv+i)+j) = *(*(tomb+j)+i);
// cout << *(*(tomb+j)+i) << " ";

}
// cout << endl;
}
for(int i = 0; i < x; ++i)
{
delete [] tomb[i];
}
delete [] tomb;

return tomb_inv;
}

int main ()
{
srand(time(NULL) + getpid() );

int** tomb = new int*[x];
for(int i = 0; i < x; ++i)
tomb[i] = new int[y];

for (int i = 0; i < x; ++i )
{
for (int j = 0; j < y; ++j)
{
tomb[i][j] = (int)(rand() % (x*y+1));
cout << tomb[i][j] << " ";
}
cout << endl;
}

tomb = invert(tomb ,x,y);

cout << endl;

for (int i = 0; i < y; ++i )
{
for (int j = 0; j < x; ++j)
cout << tomb[i][j] << " ";
cout << endl;
}

for(int i = 0; i < y; ++i)
{
delete [] tomb[i];
}
delete [] tomb;

return 0;
}

Püsök Levente 2013.03.09. 13:52:31

218/7.10. / 2. Feladat

A

typedef int (&rifii) (int, int);

utasítás

bevezet egy típust, amivel referenciát deklarálhatunk az int értékkel visszatérő, két int típusú paraméterrel rendelkező függvényekre.

pl:

int fg(int a, int b)
{
/*kod*/
}

rifii fgr = fg;

3 pont

Püsök Levente 2013.03.09. 14:22:45

218/7.10. / 1. Feladat

// Karaktermutató, és egészre vonatkozó referencia paraméterrekkel
// rendelkező értéket vissza nem térítő függvény
void f(char* c, int& r)
{}

//Az előzőhöz hasonló függvényekre vonatkozó referenciák típusa
typedef void (*reff)(char*,int&);

//egy konkrét referencia deklarálása
reff rf=&f;

//függvény, amelynek ilyen mutató a paramétere
void af(reff xfr)
{}

//függvény, amely ilyen mutatót ad vissza
reff ret_reff()
{}

//függvény, amelynek ilyen mutatójú paramétere van,
//és visszatérési értékként paraméterét adja vissza

reff ret(reff f)
{
return f;
}

Püsök Levente 2013.03.09. 14:27:48

@Püsök Levente: Hoppsz, elírtam:
(5. sor)
//Az előzőhöz hasonló függvényekre vonatkozó referenciák típusa
typedef void (*reff)(char*,int&);

->

//Az előzőhöz hasonló függvényekre mutató mutatók típusa
typedef void (*reff)(char*,int&);

Püsök Levente 2013.03.09. 15:32:20

218/7.10. / 4. Feladat

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main(int argc, char* argv[])
{
int i;
ifstream f;
string s;
for(i=1;i<argc;i++)
{
f.open(argv[i]);
if(f.is_open())
{
cout<<"A(z) \" "<<argv[i]<<" \" fajl sikeresen megnyitva."<<endl;
cout<<"A(z) \" "<<argv[i]<<" \" fajl tartalma :"<<endl;
while(getline(f,s))
cout<<s<<endl;
f.close();
}
else
cout<<"A(z) \" "<<argv[i]<<" \" fajl megnyitasa sikertelen volt"<<endl;
}
return 0;
}

Futás: img259.imageshack.us/img259/7910/7104.jpg

Scrop 2013.03.09. 20:28:04

@Scrop: Javítanám a pontot, mert elszámoltam :D 5.5 pont

Püsök Levente 2013.03.09. 21:38:15

Akkor ezek szerint az 1es és 2es (3-3 pont) feladatokra nem kaptam pontot?

nb · http://fersml.blog.hu 2013.03.10. 09:28:56

@Püsök Levente: picit informatívabban kérdezzünk, hiszen eddig 32-en veszünk részt az aktív munkában, s többen számos progival, amelyek azért nem olyan izgik, hogy éjjel is a fejemben járjanak, így én ezt az alábbi formában kérdezném:

-feladat spec. (oldal, szám, régi komment linkje stb.)
-forrásban, futásban ez-az lehet a hiba?

s ha valaki észrevesz hibát, annak is +4 pont.

andr_design 2013.03.10. 10:42:55

@nb: Tanár úr, akkor megkapom a 15 pontot a videómra, mert 13volt és most 15 van feltüntetve,

csak azért kérdezem hogy megfelelő volt e a video akkor :)

Köszönöm!

nb · http://fersml.blog.hu 2013.03.10. 11:13:30

@andr_design: Srácok, ezek NP nehéz kérdések, ezért kérem ilyenkor a saját "jegyzőkönyveteket", hogy gyorsan tudjak dönteni és így válaszolni a hasonló kérdésekre. Tehát pls a saját kimutatásad küld el.

andr_design 2013.03.10. 11:40:51

@nb: megvannak a pontok, a listában kétszer van beírva a nevem egyikhez 15 másikhoz 13, tehát igazából minden oké, csak szummázni kéne egy névhez és akkor minden tiszta :)

nb · http://fersml.blog.hu 2013.03.10. 12:13:33

@andr_design: OK., ez sokszor előfordul, persze a legközelebbi frissítéskor összevonom.

cellSigma 2013.03.10. 14:51:38

KÖNYV 7.10.8 (10.5 pont) :

#include <iostream>

using namespace std;

int** inverter(int** multiArray, int rows, int columns)
{
int** invertedArray;
invertedArray=new int*[columns];
for(int i=0;i<columns;++i)
invertedArray[i]=new int [rows];

for(int i=0;i<columns;++i)
for(int j=0;j<rows;++j)
invertedArray[i][j]=multiArray[j][i];

return invertedArray;
}

int main()
{

int rows=4, columns=5;
int** multiArray;
multiArray=new int*[rows];
for(int i=0;i<rows;++i) multiArray[i]=new int [columns];

int fill=1;
for(int i=0;i<rows;++i)
{

for(int j=0;j<columns;++j)
*(*(multiArray+i)+j)=fill++;
}

cout << "Ez van a mátrixban: " << endl;
for(int i=0;i<rows;++i)
{
for(int j=0; j<columns;++j)
cout << multiArray[i][j]<< ' ';

cout << endl;
}

multiArray=inverter(multiArray, rows, columns);

cout << "Az invertált mátrix így néz ki: " << endl;
for (int i=0; i<columns;++i)
{
for(int j=0;j<rows;++j)
cout << multiArray[i][j]<<' ';
cout<<endl;

}

for(int i=0;i<columns;++i)
{

delete[] multiArray[i];
}
delete[] multiArray;

}

Kép: tinypic.com/r/2bdxyx/6

andr_design 2013.03.10. 15:18:32

@nb: rendben, semmi probléma. Köszönöm!

cellSigma 2013.03.10. 18:44:39

KÖNYV 7.10.11. (13 pont):

#include <iostream>
#include <cstdarg>

using namespace std;

void error(char* format_string, ...)
{
va_list vl;
va_start(vl, format_string);
char* temp;

while((*format_string)!='\0')
{

if(*format_string!='%') cout <<*format_string;
else if(*format_string=='%')
{

format_string++;
switch(*format_string){
case 'd':
cout<<va_arg(vl, int);
break;
case 's':
temp=va_arg(vl, char*);
cout<<temp;
break;
case 'c':
cout<<char(va_arg(vl, int));
break;
}

}

format_string++;
}

va_end(vl);

}

int main()
{

error("Teszt string: %d %d %c %s %s, de még utána is van valami", 42, 13, 'c', "string teszt", "ez egy másik tesztelö sztring");

cout << endl;
return 0;
}

Kép: tinypic.com/r/654vm1/6

cellSigma 2013.03.10. 19:07:50

KÖNYV 7.10.18 (3 pont):

Kép: tinypic.com/r/2cpamgw/6

#include <iostream>
using namespace std;

int factorial(int n)
{
if(n<0) { cout<<"Hiba!"<<endl; return -1;}
else if(n==0 || n==1) return 1;

int result=1;

for(int i=n;i>1;--i)
result*=i;
return result;

}

int main()
{
cout<<"3!="<<factorial(3)<<endl;
cout<<"5!="<<factorial(5)<<endl;
cout<<"7!="<<factorial(7)<<endl;
cout<<"0!="<<factorial(0)<<endl;
cout<<"-13!="<<factorial(-13)<<endl;

return 0;

}

Scrop 2013.03.10. 19:26:54

@Smajdam: Csak egy matematikai hozzáfűzésem lenne a dologhoz : D Az 1 es számrendszerben nem lehetnek 1 esek, csak 0- ások :D

Gergo0720 2013.03.10. 19:28:28

Könyv 7.10 16

kepfeltoltes.hu/130310/Screenshot_from_2013-03-10_19_21_49_www.kepfeltoltes.hu_.png

#include <iostream>
#include <cstdlib>
#include <stdio.h>

using namespace std;
#define HOSSZ 50

void print(int value, int base = 10)
{

if (base > 0 && base < 17)
{
if (base == 1)
{
cout << "Egyes számrendszerben a megadott szám: ";
for (int i = 0; i < value; i++)
cout << '1';
}

else
{
int maradek[ HOSSZ ];
for (int j = HOSSZ; j >=0; j--)
{
maradek[j] = value % base;
value /= base;
}

char eredmeny[HOSSZ];
int j = 0;
while ( maradek[j] == 0)
j++;
cout << "A(z) " << base << " számrendszerben a szám: ";
for (j;j <= HOSSZ; j++)
{
switch (maradek[j])
{
case 0 : eredmeny[j] = '0'; break;
case 1 : eredmeny[j] = '1'; break;
case 2 : eredmeny[j] = '2'; break;
case 3 : eredmeny[j] = '3'; break;
case 4 : eredmeny[j] = '4'; break;
case 5 : eredmeny[j] = '5'; break;
case 6 : eredmeny[j] = '6'; break;
case 7 : eredmeny[j] = '7'; break;
case 8 : eredmeny[j] = '8'; break;
case 9 : eredmeny[j] = '9'; break;
case 10 : eredmeny[j] = 'A'; break;
case 11 : eredmeny[j] = 'B'; break;
case 12 : eredmeny[j] = 'C'; break;
case 13 : eredmeny[j] = 'D'; break;
case 14 : eredmeny[j] = 'E'; break;
case 15 : eredmeny[j] = 'F'; break;
}
cout << eredmeny[j];
}

}

cout << "\n";
}

else
{
cout << "Hibás az alap!" << "\n";
exit(EXIT_FAILURE);
}

}

int main()
{
int x,y;

cout << "Adja meg a számrendszert: " << "\n";
cin >> x;

cout << "Adja meg az átváltandó számot" << "\n";
cin >> y;

print(y,x);
cout << "\n\n";

return 0;
}

8 pont

smajdam 2013.03.10. 20:45:47

@Scrop: hát, most hogy így mondod, szabály szerint tényleg így lenne, de :
"Az egyes számrendszer vagy unáris számrendszer a legegyszerűbb számrendszer amely a természetes számok ábrázolására alkalmazható. Lényege, hogy az N számot egy tetszőlegesen megválasztott, az 1 értékét jelölő szimbólum („számjegy”) N-szeri ismétlésével jelöli." (wikipédia)
Szóval itt nincs igazából jelentősége :D de azért köszi, nekem fel sem tűnt :D

Scrop 2013.03.11. 00:02:47

A 7_9 es és a 7_10 es egyszerre mutatnám be: 23.5 pont
a 7_9 es nem egy túlkomlikált dolog abban semmi édekfeszítő nincs, a feladatnak megfelelően működik
kepfeltoltes.hu/view/130310/13247243317_9_www.kepfeltoltes.hu_.jpg
kód:
docs.google.com/file/d/0By5wCYSBTSJAZ0JraFJJa0l0WUU/edit

A 7_10 es feladatnak nálam annyi a hátránya h egyelőre csak megadott méretű kulcsokat tud kezelni, azaz ha 8 méretű akkor csak 8 és nem veszi számításba a 7,6,5 stb
kép:
kepfeltoltes.hu/view/130310/7_10_www.kepfeltoltes.hu_.jpg
A "feladat" file az a 7_9 es feladatm így annak a kimenetét vezettem bele a 7_10 esbe.
Látható h mivel kis szoveget kell tobb lehetőség van, a szűrés miatt, a szűrés viszont nagy szövegekre nagyon jól működik, pl a titkos2013.szoveg re
kepfeltoltes.hu/view/130310/7_10titkos_www.kepfeltoltes.hu_.jpg
Nem tudom mi az a krickrac a kulcs végén, pedig pontosan 8 karakteres tömböt hoztam létre.
Ha elég szadó valaki akkor nem csak számokkal lehet rötni, elég ha csak a kulcs_karaterek tombjébe felvesz ojan karaktereket amik szerepeljenek a kulcsban. és maga a kód
docs.google.com/file/d/0By5wCYSBTSJAS19YWk42aGNGQVE/edit

Atka001 2013.03.13. 11:37:09

z.c prezentálása 3 pont

szelepsapka 2013.03.13. 12:32:54

Valaki nem emlékszik rá, hogy a szerda 10 órás laboron hány pont járt a binfás feladatokért?

szelepsapka 2013.03.13. 12:47:07

@Atka001: együtt voltunk laboron, te nem emlékszel rá véletlenül hány pontot értek a binfás feladatok?

Atka001 2013.03.13. 13:07:07

@szelepsapka: Nem igazán rémlik. :S Talán az is 3 pont?

szelepsapka 2013.03.13. 13:59:05

laboron: hacker how to binfa (3pont)
hs_alt_HuRef_chr2.fa binfa (5pont)

Smajdam 2013.03.13. 14:40:37

labor:
-hacker how to-s binfa (3p)
-humán genomos binfa (5p) : www.kepfeltoltes.hu/view/130313/binfagenom_www.kepfeltoltes.hu_.png

nb · http://fersml.blog.hu 2013.03.13. 14:48:17

Adnék és 7 pontot is a humán genomosra, de a d.c-t okosítsuk ki, hogy ne dolgozza fel a komment sorokat :)

Ugyanez 5 pontért is kell, tehát jobban jár mindenki a héttel :)

nb · http://fersml.blog.hu 2013.03.13. 14:49:28

@nb: ja, de a d.c hekkelésében ne legyen külön ciklusban read a fő read-es cikluson belül! Figyeljük, hogy mikor vagyunk kommantben és akkor egyszerűen continue; arra betűre.

cellSigma 2013.03.13. 16:07:16

A mai 10-es laboron szereztem 3 pontot a hacker how-to-s binfára.

DeeGort 2013.03.13. 17:03:16

Órai munka: Bináris fa elmagyarázás
10 pont

cellSigma 2013.03.13. 17:06:13

d.c hack (7 pont):

#include <stdio.h>
#include <unistd.h>

int
main (void)
{
int i, egy_e, in_comment=0;
unsigned char b, c;

while (read (0, (void *) &b, sizeof (unsigned char)))
{
for (i = 0; i < 8; ++i)
{
if(in_comment) continue;

if(b=='/')
{
c=b+1;
if(c=='/') in_comment=1;
}
if(b=='\n') in_comment=0;

egy_e = b & 0x80;
if ((egy_e >> 7) == 1)
printf ("1");
else
printf ("0");
b <<= 1;
}
}
}

Hacker how-to ezzel dumpolva, majd z-t lefuttatva helyes eredményt ad:

tinypic.com/r/1zoux6r/6

Ahogy a humán genom is:

Egy kép a dumpolásról:

tinypic.com/r/bis120/6

Egy az eredményről:

tinypic.com/r/21afhn4/6

nb · http://fersml.blog.hu 2013.03.13. 17:19:42

@cellSigma: szerintem ezt még alaposan át kell gondolni!

- mi a '/' jel? ez a humán genomban a komment?
- miért ez a bonyolult kódszervezés? pl. a continue miért van a for-on belül?

Püsök Levente 2013.03.13. 17:41:14

A mai laboron (12-14 Godó Zoltán) 4 pontot szereztem.

cellSigma 2013.03.13. 17:51:42

@nb: Valamit nagyon félreértettem és elkapkodtam a feladat kapcsán (nem is értem, mire gondoltam, amikor c-stílusú kommentre próbáltam megoldani :/ ), elnézést kérek! Dolgozom a helyes megoldáson.

Scrop 2013.03.13. 18:19:59

Tanárúr ezt a glbic -s dolgot hogy tudom visszaállítani? e.a3 13 as fólia. Mert probálkoztam vele de csak hibákat ír mikor fordítottam a teszt.c, és futtatva nem voltak szinesek a betűk, gondolom a hibaüzenetek miatt :D
kepfeltoltes.hu/view/130313/hiba_www.kepfeltoltes.hu_.png

Smajdam 2013.03.13. 19:05:25

dump hack: (7p)
www.kepfeltoltes.hu/view/130313/436056183komment_www.kepfeltoltes.hu_.png

nyilván készítettem egy saját humán genom stílusú fájlt, így látható hogy sok, a komment utáni karakter nem szerepel a kimenetben, ezért lett olyan rövid.

Megjegyzés: ahogy cellSigma, én is először c stílusú kommentekre csináltam meg a feladatot :D azért nem volt szerintem egyértelmű, mert én pl nem nyitottam meg a humán genomos fájlt, szóval nem is tudtam ezelőtt, hogy vannak benne kommentek.

Scrop 2013.03.13. 19:20:01

@Scrop: Problem solved :D vagyis nem is volt probléma :D, csak én azt hittem h az egész printf emt felülírta, de nem :D

cellSigma 2013.03.13. 19:25:57

A dump hack program:

#include <stdio.h>
#include <unistd.h>

int
main (void)
{
int i, egy_e, in_comm=0;
unsigned char b;

while (read (0, (void *) &b, sizeof (unsigned char)))
{

if(b=='>') in_comm=1;
if(b=='\n' && in_comm) in_comm=0;
if(in_comm) continue;

for (i = 0; i < 8; ++i)
{

egy_e = b & 0x80;
if ((egy_e >> 7) == 1)
printf ("1");
else
printf ("0");
b <<= 1;
}
}
}

Itt egymás alatt látható a fa mélysége az eredetivel és a hackelt változattal:

tinypic.com/r/3589zmf/6

@Smajdam: Megnyugtat, hogy nem vagyok egyedül :D Egyébként bevallom, a genomos fájlt én sem néztem meg, csak egyből ugrottam a "komment" szóra, tanultam belőle :)

cellSigma 2013.03.13. 19:36:53

Itt látszik, hogy működik a dump program:

Kép:

tinypic.com/r/2gy15px/6

@Smajdam: A programom teszteléséhez a te ötletedet használtam fel, ezért ha tanár úr is elfogadja, 1 pontot adnék érte.

Pintyő90 2013.03.14. 18:13:00

oi46.tinypic.com/eapkjd.jpg

a 4. laboron beszélt feladat végre kész:)(3 pont)

illetve a 3. laboron is kaptam 3 pontot.

Smajdam 2013.03.14. 19:57:02

@cellSigma: köszi:)

A szerda 10 órási laboron lett kiadva egy feladat a new handlerrel kapcsolatban: kipróbálva!

Default beállítással: www.kepfeltoltes.hu/view/130314/new_handler_default_www.kepfeltoltes.hu_.png

set_new_handler-rel: www.kepfeltoltes.hu/view/130314/new_handler_own_www.kepfeltoltes.hu_.png

(6pont)

DeeGort 2013.03.14. 23:54:23

KÖNYV 7.10 Gyakorlatok 11.
kepfeltoltes.hu/130314/495674273error_www.kepfeltoltes.hu_.png

#include <iostream>
#include <cstdarg>
#include <cstdio>
using namespace std;

void error(char * str ...)
{
va_list arg_pointer;
char *p = str, c;

va_start(arg_pointer, str);

for (c = *p; *p; p++)
{
if (*p == '%')
{
c = *++p;
if (*p == 's')
{
char *pStr = va_arg(arg_pointer, char*);
cout << pStr;
}
else if (*p == 'c')
{
putchar(va_arg(arg_pointer, int));
}
else if (*p == 'd')
{
int val = va_arg(arg_pointer, int);
cout << val;
}
}
else
putchar(*p);
}

va_end(arg_pointer);
}

int main()
{
int alma = 55;
char world[] = "world";
error("Hello %s %c %d %d", world, '!', 45, alma);

return 0;
}

13 Pont

PHP_Barbar 2013.03.15. 10:21:15

Vadászat:
- Laboron kód elmagyarázása: 3 pont.

Összesen: 36 pont.

cellSigma 2013.03.15. 12:47:02

Heti pontösszesítés:
Eddig szerzett: 269 pont

KÖNYV: 7.10.8: 5.5 pont
7.10.11: 13 pont
7.10.18: 3 pont

Laboron hacker how-to: 3 pont
d.c hack: 7 pont

PageRank átírása C++-ba + OO-val kapcsolatos
feladatok összesen: 15 pont

A héten szerzett összesen: 46.5 pont

Összesen: 315.5 pont

cellSigma 2013.03.15. 13:30:36

Az előadáson elhangzott glibc hack feladat (6 pont, ha jól emlékszem?):

tinypic.com/r/2w5iut0/6

DeeGort 2013.03.15. 17:58:20

KÖNYV 7.10 Gyakorlatok 9.
kepfeltoltes.hu/130315/exor_www.kepfeltoltes.hu_.png

#include <iostream>
#include <cstdio>
using namespace std;

int main(int argc, char* argv[])
{
string key = (argc == 2) ? argv[1] : "";
int key_len =(argc == 2) ? key.length() : 1;

int i = 0;
char c;
while((c = cin.get()) && c != EOF)
{
c ^= key[i];
cout << c;
i = (i + 1) % key_len;
}
cout << endl;

return 0;
}

8 Pont

nb · http://fersml.blog.hu 2013.03.17. 15:54:43

@Scrop: majd figyeljünk a stílusra, hogy pl. az utolsó feladatban ne a mainben legyen minden, hanem kis C-s filozófiával kisebb függvényekre bontva oldódjon meg a feladat.

RunOfTheMill 2013.03.17. 19:11:22

A március 13.-i 12:00-kor kezdődő laboron a hacker howto bináris fára való leképezéséért kaptam 3 pontot.

Gergo0720 2013.03.17. 21:53:15

Elkészítettem a dockbookomat, igaz a kiíráshoz képest kicsit később, de meg van. Remélem így is bezsebelhetem érte a pontot. Továbbá készítettem egy összefoglalót az eddigi pontjaimról.

www.dropbox.com/s/6unj0m2hrcbp6yp/ossz.ods

www.dropbox.com/s/pjaqeiogppege3r/prog.xml

www.dropbox.com/s/y38jww03vnmzkq5/prog.pdf

Scrop 2013.03.18. 09:04:27

@nb: Valójában szándékosan vettem ki azt a sok fügvényhívást, egy nagyon egyszerű okból, ugyanis lassítja a törést, és ha jól tudom egy törésnél azért számít a gyorsaság :D Az eredti fügvényes kódnak 20 perc kellet a szöveg feltörésésre, miután kivettem a fügvényeket ez 10 percre esett vissza.

nb · http://fersml.blog.hu 2013.03.18. 10:15:39

@Gergo0720: eltöröltük a heti scope-ot a blogos feladatoknál, mert sokan későn kaptak észbe, hogy a kurzusban dolgozni kell ám :-)))

Szóval persze jönnek majd a pontok.

Esetleg aki ugyanettől félnek a környezetedben, hogy már késő, nyugodtan bíztasd őket, hogy sosincs késő. Mert az igazság az, hogy kicsit keveslem a 32 vadászt.

nb · http://fersml.blog.hu 2013.03.18. 10:17:46

@Scrop: OK., valamit-valamiért elv, értem. Viszont a futási idő felezését kicsit sokallom a veremre írogatás eliminálásának javára írni. Hogy mérted?

time ./toro

parancssorral? (Ez ugye még a sima 1 szálas törő, nem az OpenMP vagy a GPU-CUDA változat?)

Scrop 2013.03.18. 19:06:14

@nb: igen time - al mértem, és én úgy oldottam meg a több szálast, hogy az intervallumot 4 részre osztottam és akkor annak a négy résznek külön procin futott a számítása, így kevesebb idő kellet a törésre :D. Nem tudom h ez így mennyire számít több szálnak ? .

nb · http://fersml.blog.hu 2013.03.18. 20:25:00

@Scrop: a kód látása nélkül látatlanban tehát ha nincs benne az alábbiak valamelyike, akkor "egy szálas" legalábbis az a programozási modell, amely alapján készült

- pthread_create
- pragma paralell opm

km92 2013.03.19. 21:17:00

Segítséget szeretnék kérni ! :) Próbáltam lefuttatni a Mandelbtrot-t fájlt, de folyamatosan nyavalyog, hogy nem létezik "iostream.h" fájl vagy mappa. Utána rájöttem, hogy a .h nem kell, kitöröltem, de így sem változik semmi, és nem engedi lefuttatni :( Ötletek ? :)

Pumuckl 2013.03.19. 21:34:34

Március 13. (szerda) 12-14 h laboron a hacker howto binfa bemutatása 3 pont.
Összesen ( docs.google.com/spreadsheet/ccc?key=0ArEDrdxF2lMBdE1zR1p0LUVwNnVPTWl6ellUdkp2aGc&usp=sharing ) : 30 pont

kun.t1992 2013.03.20. 00:50:01

Ubuntu zsenik jelentkezését várom. Néhány órával ezelőtt amikor Linuxra váltottam volna, akkor valószínűleg a compiz valamiért nem indult el és így csak az asztalt látom és az asztalon lévő ikonokat. Eddigi próbálkozásaim nem sikerültek(próbáltam újraindítani a compiz-t meg leszedni és újra visszatenni, semmi nem segített) és nyilvánvaló okok miatt szükségem lenne rá.

Atka001 2013.03.20. 08:34:58

@Sh00ter: Hülye felvetés (csak azért írom, mert én is jártam így), mentettél előtte? :)

Atka001 2013.03.20. 08:35:58

@Sh00ter: Másik felvetés, jól írtad le?
#include <iostream>

km92 2013.03.20. 08:53:03

@Atka001: Igen, mentettem, és így van leírva :)

nb · http://fersml.blog.hu 2013.03.20. 09:46:15

@Sh00ter: pontos hibát pls! legjobb, ha bevágod ide karakteresen, amit üzen a fordító vagy a linker.

Atka001 2013.03.20. 10:27:28

Szerdai laboron kérdés volt binomomtól:
"289. o, 290.o : Az exit() problémás volt, mert a 289. o-n azt írja: "Ha a program befejezésére a standard könyvtárbeli exit() fv-t használjuk, akkor meghívódnak a létrehozott statikus objektumok destruktorai". 290.o-n ezt: Az exit() meghívása azt jelenti, hogy a hívó fv. lokális változóinak és az azt hívó függvények változóinak desturktorai nem hívódnak meg." Nekem ellentmondás van a kettő között, nem tiszta, hogy melyik állítás mire vonatkozik, mi a különbség köztük?"

Az én elgondolásom a leírtak alapján:
"Ez gondolom azt jelentené, hogy amikor meghívjuk az exit()-et, akkor a globális változóknak és függvényeknek hívja a destruktorát, míg a lokálisoknak nem."

Helyes, helytelen? Egy kis segítséget szeretnék kérni!

Atka001 2013.03.20. 11:27:25

z3a7.cpp a humángenomra: 3 pont (Szerda 10-es labor)

szitam01 2013.03.20. 11:28:09

Szerda 10-es laboron 2 pontot szereztem.

MandelBrot átszinezése (3 pont)
kepfeltoltes.hu/130320/Screenshot_from_2013-03-20_11_12_06_www.kepfeltoltes.hu_.png

DeeGort 2013.03.20. 16:50:48

Órai pontok: összesen 10 pont.

I.Csaba 2013.03.20. 22:35:12

a kotott alku alapjan (fekete vagy 2 pont) osszedobtam a map hasznalatara egy peldat:

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main ()
{
map<string,string> lakas;
lakas["Baldo"]="itt lakik";

cout << "Baldo " << lakas["Baldo"] << endl;
}

nb · http://fersml.blog.hu 2013.03.21. 07:21:46

@I.Csaba: további 2 pont a map-es szószámlálóért? (Lásd az előadás fóliákat; rajtad kívül az első háromnak ide.)

kpr 2013.03.21. 18:26:26

Órán szerzett pontok: 3

I.Csaba 2013.03.21. 19:43:49

#include <iostream>
#include <string>
#include <map>
using namespace std;

int main(){
string be;
int i = 0;

map<string,int>words;
while(cin>>be){
words[be]++;
}
for (map<string,int>::const_iterator p = words.begin(); p!=words.end(
cout << p->first << '\t' << p->second<<endl;
}

I.Csaba 2013.03.21. 19:45:14

hopp, az int i = 0; sor nem kell,elfelejtettem torolni

Kiemc (törölt) 2013.03.21. 23:03:35

Ötödik labor, csütörtök 16–18 óra:

LZWBinFa b1, b2;
kiFile << b1 << b2;

függvényes formára való átírásáért 6 pont.

d_khaba 2013.03.22. 12:25:18

péntek 8-10

Humán genom megjelenítő:
www.kepfeltoltes.hu/view/130322/1240042175GenAblak_www.kepfeltoltes.hu_.png

3-3 pont Tasnádi Dániel-nek, ill nekem

gyzsolt 2013.03.24. 23:55:36

szerda 12-14(13-án) 3 pont hacker howto bináris fára való leképezéséért
szerda 12-14(20-án) 2 pont LZWBinFa 200. sora miatt

nb · http://fersml.blog.hu 2013.03.31. 13:44:19

@DeeGort: jobb szeretek látni egy uname -a kimenetet az elején és a rebbot után, de OK.

RunOfTheMill 2013.04.02. 21:50:03

A március 20.-i gyakorlaton kaptam 7 pontot az LZWBinFás << operátoros kifejezés teljes alakos felírásáért, illetve még 3 pontot, azt már nem tudom, hogy mire.
Így mostanáig összesen 13 pontom van.

nb · http://fersml.blog.hu 2013.04.14. 11:36:11

@RunOfTheMill: ha nem tudod mire, az definíció szerint azt jelenti, hgy nincs meg a kért saját nyilvántartásodban, így marad a 10 pont (a jelen pillanatban, mert most dolgozom fel a kommeneteket persze folyamatosan)

nb · http://fersml.blog.hu 2013.05.22. 09:17:17

@I.Csaba: a 3.-at kezdtem nézni: mi történik, ha a szöveg sokkal hosszabb (vagy csak szimplán hosszabb) mint a kulcs?

I.Csaba 2013.05.23. 18:29:58

@nb: SSH_AGENT_PID=1660GPG_AGENT_INFO=/... hiba uzenettel titkositja a megmaradt szoveg reszt, ezt a visszajelzest elkezdi beirni a kulcsba.
süti beállítások módosítása