Szlávi-Zsakó: Programozási alapismeretek 6. 1
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 2
Programozási alapismeretek 2009/2010
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 3
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 4
Szlávi-Zsakó: Programozási alapismeretek 6. 5
Programozási alapismeretek 2009/2010
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 6
Szlávi-Zsakó: Programozási alapismeretek 6. 7
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 8
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 9
Programozási alapismeretek 2009/2010
//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
INFOÉRA 2006 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 11
INFOÉRA 2006 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 12
Szlávi-Zsakó: Programozási alapismeretek 6. 13
Programozási alapismeretek 2009/2010
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
Szlávi-Zsakó: Programozási alapismeretek 6. 15
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 16
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 17
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 18
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 19
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 20
Programozási alapismeretek 2009/2010
//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
Szlávi-Zsakó: Programozási alapismeretek 6. 22
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 23
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 24
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 25
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 26
Programozási alapismeretek 2009/2010
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
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
Szlávi-Zsakó: Programozási alapismeretek 6. 29
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 30
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 31
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 32
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 33
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 34
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 35
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 36
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 37
Programozási alapismeretek 2009/2010
//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
Szlávi-Zsakó: Programozási alapismeretek 6. 39
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 40
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 41
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 42
Programozási alapismeretek 2009/2010
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
Szlávi-Zsakó: Programozási alapismeretek 6. 44
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 45
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 46
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 47
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 48
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 49
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 50
Programozási alapismeretek 2009/2010
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 6. 51