• Nem Talált Eredményt

Szlávi-Zsakó: Programozási alapismeretek 6. - ELTE

N/A
N/A
Protected

Academic year: 2023

Ossza meg "Szlávi-Zsakó: Programozási alapismeretek 6. - ELTE"

Copied!
51
0
0

Teljes szövegt

(1)

Szlávi-Zsakó: Programozási alapismeretek 6. 1

Programozási alapismeretek 2009/2010

(2)

Szlávi-Zsakó: Programozási alapismeretek 6. 2

Programozási alapismeretek 2009/2010

(3)

Programozási alapismeretek 2009/2010

Szlávi-Zsakó: Programozási alapismeretek 6. 3

(4)

Programozási alapismeretek 2009/2010

Szlávi-Zsakó: Programozási alapismeretek 6. 4

(5)

Szlávi-Zsakó: Programozási alapismeretek 6. 5

Programozási alapismeretek 2009/2010

(6)

Programozási alapismeretek 2009/2010

Szlávi-Zsakó: Programozási alapismeretek 6. 6

(7)

Szlávi-Zsakó: Programozási alapismeretek 6. 7

Programozási alapismeretek 2009/2010

(8)

Szlávi-Zsakó: Programozási alapismeretek 6. 8

Programozási alapismeretek 2009/2010

(9)

Szlávi-Zsakó: Programozási alapismeretek 6. 9

Programozási alapismeretek 2009/2010

(10)

//Szlávi Péter //SZPKAFT.ELTE //szlavip@elte.hu //

//Feladat:

// Adjuk meg, hogy egy P síkbeli pont melyik síknegyedbe esik!

////Specifikáció:

// Be: Bemenet: P:TPont, TPont=Rekord(x,y:Valós) // Ki: SN:Egész

// Ef: –

// Uf: P.x>=0 és P.y>=0 -> SN=1 és // P.x<0 és P.y>=0 -> SN=2 és // P.x<0 és P.y<0 -> SN=3 és

// P.x>=0 és P.y<0 -> SN=4

//

#include <iostream>

#include <windows.h> //Code::Blocks 10.05-höz már kell a system kedvéért using namespace std;

//típusdefiníció(k):

struct TPont{double x,y;};

int main() { //bemenet:

TPont p;

//kimenet:

int sn;

//beolvasás ellenőrzéséhez:

bool hiba;

string tmp;

cout << "Melyik siknegyedbe esik a P?" << endl;

//beolvasás:

do{

cout << "Add meg P x-koordinatajat!"; cin >> p.x;

hiba=cin.fail();

if (hiba)

{ cout << "Hibas adat!" << endl;

cin.clear(); getline(cin,tmp,'\n');//a sorvégjel megevése }

}while (hiba);

//TODO unom még egyszer majdnem ugyanazt leírni... alprogrammal kellene!!!

do{cout << "Add meg P y-koordinatajat!"; cin >> p.y;

hiba=cin.fail();

if (hiba)

{ cout << "Hibas adat!" << endl;

cin.clear(); getline(cin,tmp,'\n');//a sorvégjel megevése

Szlávi-Zsakó: Programozási alapismeretek 6. 10

Programozási alapismeretek 2009/2010

(11)

INFOÉRA 2006 2009/2010

Szlávi-Zsakó: Programozási alapismeretek 6. 11

(12)

INFOÉRA 2006 2009/2010

Szlávi-Zsakó: Programozási alapismeretek 6. 12

(13)

Szlávi-Zsakó: Programozási alapismeretek 6. 13

Programozási alapismeretek 2009/2010

(14)

Itt már a

z „egy irányban látszik” helyett jobb lenne: „egy egyenesre esnek”-et mondani. Pl.

P=(1,1) és a Q=(-1,-1) esetében a P és a Q nem egy irányban, hanem ellentétes irányban látszanak (az origóból)… Az is igaz viszont, hogy éppúgy hibás lenne balrát, vagy jobbrát mondani.

Szlávi-Zsakó: Programozási alapismeretek 6. 14

Programozási alapismeretek 2009/2010

(15)

Szlávi-Zsakó: Programozási alapismeretek 6. 15

Programozási alapismeretek 2009/2010

(16)

Szlávi-Zsakó: Programozási alapismeretek 6. 16

Programozási alapismeretek 2009/2010

(17)

Szlávi-Zsakó: Programozási alapismeretek 6. 17

Programozási alapismeretek 2009/2010

(18)

Szlávi-Zsakó: Programozási alapismeretek 6. 18

Programozási alapismeretek 2009/2010

(19)

Szlávi-Zsakó: Programozási alapismeretek 6. 19

Programozási alapismeretek 2009/2010

(20)

Szlávi-Zsakó: Programozási alapismeretek 6. 20

Programozási alapismeretek 2009/2010

(21)

//Szlávi Péter //SZPKAFT.ELTE //szlavip@elte.hu //

//Feladat:

// Adjuk meg, hogy az origóból nézve az 1. sík-negyedbe eső P ponthoz // képest a Q balra, jobbra, vagy pedig egy irányban látszik-e!

// Irany(P,Q):=-1, ha balra, +1, ha jobbra; 1, ha egyirányba esik.

//

//Specifikáció:

// Be: P,Q:TPont, TPont=Rekord(x,y:Valós) // Ki: Ir:Egész

// Ef: –

// Uf: Ir=Irany(P,Q)

// Def: Irany(p,q):=p.y*q.x–q.y*p.x

#include <iostream>

#include <windows.h> //Code::Blocks 10.05-höz már kell a system kedvéért

using namespace std;

//típusdefiníció(k):

struct TPont{double x,y;};

//finomítás(ok) fejsora(i):

int Irany(TPont _p, TPont _q);

double BeKoordinata(string _kerd);

TPont BePont(string _pontNev);

void KiEredmeny(TPont _p, TPont _q, int _ir);

void BillentyureVar();

int main() {

//bemenet:

TPont p,q;

//kimenet:

int ir;

cout << "Q iranya a P-tol\n" << endl;

Szlávi-Zsakó: Programozási alapismeretek 6. 21

Programozási alapismeretek 2009/2010

(22)

Szlávi-Zsakó: Programozási alapismeretek 6. 22

Programozási alapismeretek 2009/2010

(23)

Szlávi-Zsakó: Programozási alapismeretek 6. 23

Programozási alapismeretek 2009/2010

(24)

Szlávi-Zsakó: Programozási alapismeretek 6. 24

Programozási alapismeretek 2009/2010

(25)

Szlávi-Zsakó: Programozási alapismeretek 6. 25

Programozási alapismeretek 2009/2010

(26)

Szlávi-Zsakó: Programozási alapismeretek 6. 26

Programozási alapismeretek 2009/2010

(27)

Az világos, hogy a maxN konstans felbukkanása a függvény fejsorában csak akkor lehetséges, ha addigra már a maxN deklarálva lett! Tehát az eddigi

„szokásunktól” eltérve: kiemeljük a tömbdeklarációkban szereplő

méretparaméterek deklarációit a program elejére, a függvényfejsorok elé.

Szlávi-Zsakó: Programozási alapismeretek 6. 27

Programozási alapismeretek 2009/2010

(28)

Ez a második intőjel arra, hogy a programparamétereket és a kapcsolódó típusokat (azaz a specifikációból közvetlenül származtatandó adatokat és leírásukat) célszerű globálisan deklarálni, definiálni. Vagyis kiemelendők a main() függvényből!

Szlávi-Zsakó: Programozási alapismeretek 6. 28

Programozási alapismeretek 2009/2010

(29)

Szlávi-Zsakó: Programozási alapismeretek 6. 29

Programozási alapismeretek 2009/2010

(30)

Szlávi-Zsakó: Programozási alapismeretek 6. 30

Programozási alapismeretek 2009/2010

(31)

Szlávi-Zsakó: Programozási alapismeretek 6. 31

Programozási alapismeretek 2009/2010

(32)

Szlávi-Zsakó: Programozási alapismeretek 6. 32

Programozási alapismeretek 2009/2010

(33)

Szlávi-Zsakó: Programozási alapismeretek 6. 33

Programozási alapismeretek 2009/2010

(34)

Szlávi-Zsakó: Programozási alapismeretek 6. 34

Programozási alapismeretek 2009/2010

(35)

Szlávi-Zsakó: Programozási alapismeretek 6. 35

Programozási alapismeretek 2009/2010

(36)

Szlávi-Zsakó: Programozási alapismeretek 6. 36

Programozási alapismeretek 2009/2010

(37)

Szlávi-Zsakó: Programozási alapismeretek 6. 37

Programozási alapismeretek 2009/2010

(38)

//név: Szlávi Péter

//ETR-azonosító: SZPKAFT.ELTE //drótposta-cím: szlavip@elte.hu //Feladat:

// Nyelvvizsgán a nyelvtani tesztek pontszámait (0..maxP, maxP>0) // ülési sorrendben jegyezték föl. Keressünk olyan vizsgázót, aki // ugyanannyi pontot kapott, mint valamelyik szomszédja!

// Mo.: keresés tétel //Megjegyzés:

// A kiírások mindig egy '\n' kezdődnek azért, hogy // viszonylag olvasható legyen a konzol-input fájllal // helyettesítésekor.

#include <iostream>

#include <windows.h> //Code::Blocks 10.05-höz már kell a system kedvéért

using namespace std;

//Paraméterbeolvasás:

// int tömb beolvasása, elemszáma -- n (<=maxN) // elemei minE és maxE közöttiek

void be_int_tomb(string kerd, int &n, int t[], int maxN, int minE, int maxE);

//Azonos, egymásmellettiek keresése:

void azonosSzomszedokKeresese(int n, const int t[], bool &van, int &hol);

//A keresés eredményének a kiírása:

void ki_van_sorsz(string igaz, string hamis, bool van, int sorsz);

//konvertálás: int -> string string intToStr(int x);

//beolvassa a minN..maxN közötti egész számot (maxN<minN => végtelen) void be_int(string kerdes, int &n, int minN, int maxN, string uzenet);

void billentyureVar();

int main() {

//Bemenet:

int vDb;//a vizsgázók száma

const int maxP=100;//maximális pontszám

const int maxDb=100;//a tesztet írók maximális száma int tesztek[maxDb];//a tesztek pontszámai

Szlávi-Zsakó: Programozási alapismeretek 6. 38

Programozási alapismeretek 2009/2010

(39)

Szlávi-Zsakó: Programozási alapismeretek 6. 39

Programozási alapismeretek 2009/2010

(40)

Szlávi-Zsakó: Programozási alapismeretek 6. 40

Programozási alapismeretek 2009/2010

(41)

Szlávi-Zsakó: Programozási alapismeretek 6. 41

Programozási alapismeretek 2009/2010

(42)

Szlávi-Zsakó: Programozási alapismeretek 6. 42

Programozási alapismeretek 2009/2010

(43)

A Közte dupla hívása nem spórolható meg! Gondoljon a tengelyek valamelyikére eső a, b, c esetre!

Szlávi-Zsakó: Programozási alapismeretek 6. 43

Programozási alapismeretek 2009/2010

(44)

Szlávi-Zsakó: Programozási alapismeretek 6. 44

Programozási alapismeretek 2009/2010

(45)

Szlávi-Zsakó: Programozási alapismeretek 6. 45

Programozási alapismeretek 2009/2010

(46)

Szlávi-Zsakó: Programozási alapismeretek 6. 46

Programozási alapismeretek 2009/2010

(47)

Szlávi-Zsakó: Programozási alapismeretek 6. 47

Programozási alapismeretek 2009/2010

(48)

Szlávi-Zsakó: Programozási alapismeretek 6. 48

Programozási alapismeretek 2009/2010

(49)

Szlávi-Zsakó: Programozási alapismeretek 6. 49

Programozási alapismeretek 2009/2010

(50)

Szlávi-Zsakó: Programozási alapismeretek 6. 50

Programozási alapismeretek 2009/2010

(51)

Programozási alapismeretek 2009/2010

Szlávi-Zsakó: Programozási alapismeretek 6. 51

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

évi népszámlálás alkalmával 5 szá- zalékos minta alapján a lakáshelyzetről is gyűjtenek megfelelő adatokat..