Kezdőoldal » Számítástechnika » Programozás » [C++] 2013 okt. Emelt Info...

Qaxqaxqax kérdése:

[C++] 2013 okt. Emelt Info érettségi 4. feladat (programozás) Sürgős:/ Valaki tud segíteni?

Figyelt kérdés

Segítenétek kijavítani az "ellenorozott" függvényt? (7.részfeladat)

Valszeg abban van a hiba, mert a program lefut, viszont a vizsgalt.txt-ben csak egy sor jelenik meg, ami a jarmu.txt elso sora.


#include <iostream>

#include <vector>

#include <fstream>

#include <sstream>


using namespace std;


struct rendszam{

vector<int> datum;

string rendszam;

};


void beolvas(vector<rendszam> &rendszamok);

int x_ora_munka(vector<rendszam> rendszamok);

void kilistaz(vector<rendszam> v);

bool eleme(int x, vector<int> v);

vector<rendszam> ellenorzott_jarmuvek(vector<rendszam> rendszamok);

void kat_db_coutter(vector<rendszam> rendszamok);

int h_m_s_to_s(int h, int m, int s);

string max_ido_kul(vector<rendszam> rendszamok);

void rendsz_beker(string &ismrendszam);

void lehetsegesek_kilistaz(vector<string> v);

vector<string> lehetseges(vector<rendszam> rendszamok, string ismrendszam);

vector<rendszam> ellenorzott(vector<rendszam> rendszamok);

void kiirat(vector<rendszam> v);


int main()

{

vector<rendszam> rendszamok;

string ismrendszam;

beolvas(rendszamok);

cout<<"2. feladat:"<<endl;

cout<<"Ma "<<x_ora_munka(rendszamok)<<" ora hoszat dolgoztak az ellenorzest vegzok."<<endl;

cout<<"3. feladat:"<<endl;

kilistaz(ellenorzott_jarmuvek(rendszamok));

cout<<"4. feladat:"<<endl;

kat_db_coutter(rendszamok);

cout<<"5. feladat:"<<endl;

cout<<"A leghosszabb forgalommentes idoszak: "<<max_ido_kul(rendszamok)<<endl;

cout<<"6. feladat:"<<endl;

rendsz_beker(ismrendszam);

lehetsegesek_kilistaz(lehetseges(rendszamok, ismrendszam));

kiirat(ellenorzott(rendszamok));

return 0;

}


void beolvas(vector<rendszam> &rendszamok){

ifstream fin("jarmu.txt");

if(fin.is_open()){

string sor;

while(getline(fin, sor)){

rendszamok.push_back(rendszam());

istringstream adatok(sor);

int szam; string aktualis_rendszam;

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

adatok>>szam;

rendszamok[rendszamok.size()-1].datum.push_back(szam);

}

adatok>>aktualis_rendszam;

rendszamok[rendszamok.size()-1].rendszam=aktualis_rendszam;

}

}else{

cout<<"A jarmu.txt nem talalhato!"<<endl;

}

}

int x_ora_munka(vector<rendszam> rendszamok){

return rendszamok[rendszamok.size()-1].datum[0]-rendszamok[0].datum[0];

}

void kilistaz(vector<rendszam> v){

for(int i=0;i<v.size();i++){

cout<<v[i].datum[0]<<" ora: "<<v[i].rendszam<<endl;

}

}

bool eleme(int x, vector<int> v){

int i=0;

while(i<v.size() && x!=v[i]){

i++;

}

return i<v.size();

}

vector<rendszam> ellenorzott_jarmuvek(vector<rendszam> rendszamok){

vector<rendszam> ell_j; vector<int> orak;

for(int i=0;i<rendszamok.size();i++){

if(!eleme(rendszamok[i].datum[0],orak)){

orak.push_back(rendszamok[i].datum[0]);

ell_j.push_back(rendszamok[i]);

}

}

return ell_j;

}

void kat_db_coutter(vector<rendszam> rendszamok){

int a=0,b=0,k=0,m=0;

for(int i=0;i<rendszamok.size();i++){

switch (rendszamok[i].rendszam[0]){

case 'B' : b++;

break;

case 'K' : k++;

break;

case 'M' : m++;

break;

default : a++;

}

}

cout<<b<<"db autobusz, "<<k<<"db kamion, "<<m<<"db motor es "<<a<<"db szemelygepkocsi haladt el az ellenorzo pont elott."<<endl;

}

int h_m_s_to_s(int h, int m, int s){

return h*3600+m*60+s;

}

string max_ido_kul(vector<rendszam> rendszamok){

if(rendszamok.size()>=2){

int max = h_m_s_to_s(rendszamok[1].datum[0],rendszamok[1].datum[1],rendszamok[1].datum[2])-h_m_s_to_s(rendszamok[0].datum[0],rendszamok[0].datum[1],rendszamok[0].datum[2]), maxi=0;

for(int i=1;i<rendszamok.size()-1;i++){

if(max<h_m_s_to_s(rendszamok[i+1].datum[0],rendszamok[i+1].datum[1],rendszamok[i+1].datum[2])-h_m_s_to_s(rendszamok[i].datum[0],rendszamok[i].datum[1],rendszamok[i].datum[2])){

max=h_m_s_to_s(rendszamok[i+1].datum[0],rendszamok[i+1].datum[1],rendszamok[i+1].datum[2])-h_m_s_to_s(rendszamok[i].datum[0],rendszamok[i].datum[1],rendszamok[i].datum[2]);

maxi=i;

}

}

string maxdif;

ostringstream vissza(maxdif);

vissza<<rendszamok[maxi].datum[0]<<":"<<rendszamok[maxi].datum[1]<<":"<<rendszamok[maxi].datum[2]<<" - "<<rendszamok[maxi+1].datum[0]<<":"<<rendszamok[maxi+1].datum[1]<<":"<<rendszamok[maxi+1].datum[2];

maxdif=vissza.str();

return maxdif;

}else{

return "Ma csak egy jarmu haladt el az ellenorzo pont elott.";

}

}

void rendsz_beker(string &ismrendszam){

cout<<"Adja meg a rendszamot!"<<endl;

getline(cin, ismrendszam);

while(!(isalpha(ismrendszam[0]) || ismrendszam[0]=='*' ) || ismrendszam.size()!=7){

cout<<"Rossz rendszamot adtal meg! Ird be ujra:"<<endl;

getline(cin, ismrendszam);

}

}

void lehetsegesek_kilistaz(vector<string> v){

cout<<"Lehetseges rendszamok: "<<endl;

if(v.size()!=0){

for(int i=0;i<v.size();i++){

cout<<" "<<v[i]<<endl;

}

}else{

cout<<"Nincs egyezes!"<<endl;

}

}

vector<string> lehetseges(vector<rendszam> rendszamok, string ismrendszam){

vector<string> lehetseges_rendszamok;

for(int i=0;i<rendszamok.size();i++){

bool egyezes=true;

for(int j=0;j<rendszamok[i].rendszam.size();j++){

if(ismrendszam[j]!='*'){

if(ismrendszam[j]!=rendszamok[i].rendszam[j]){

egyezes=false;

}

}

}

if(egyezes){

lehetseges_rendszamok.push_back(rendszamok[i].rendszam);

}

}

return lehetseges_rendszamok;

}

vector<rendszam> ellenorzott(vector<rendszam> rendszamok){

vector<rendszam> vizsgalt/*(1,rendszamok[0])*/;

vizsgalt.push_back(rendszamok[0]);

int date = h_m_s_to_s(rendszamok[0].rendszam[0],rendszamok[0].rendszam[1],rendszamok[0].rendszam[2]);

for(int i=1;i<rendszamok.size();i++){

if(date+300<h_m_s_to_s(rendszamok[i].rendszam[0],rendszamok[i].rendszam[1],rendszamok[i].rendszam[2])){

date=h_m_s_to_s(rendszamok[i].rendszam[0],rendszamok[i].rendszam[1],rendszamok[i].rendszam[2]);

vizsgalt.push_back(rendszamok[i]);

}

}

return vizsgalt;

}

void kiirat(vector<rendszam> v){

ofstream fout("vizsgalt.txt");

for(int i=0;i<v.size();i++){

if(v[i].datum[0]<10){

fout<<"0";

}

fout<<v[i].datum[0]<<" ";

if(v[i].datum[1]<10){

fout<<"0";

}

fout<<v[i].datum[1]<<" ";

if(v[i].datum[2]<10){

fout<<"0";

}

fout<<v[i].datum[2]<<" "<<v[i].rendszam<<endl;

}

}


A segítségért előre is köszi(:

Aki hasznos megoldást ad, annak megadom a 100%ot.

UI.: Tudom, hogy pár dolgot meg lehet oldani szebben, de most nem ez a lényeg.



2013. nov. 5. 19:00
1 2 3
 21/21 anonim ***** válasza:

[link]

Azért ha megnézed itt a követelményeket, világosan látszik, hogy ez kicsit több, mint "néhány programozási tétel". Mire idáig eljut egy ember a nulláról, az nem kevés. Az más kérdés, hogy egy érdeklődő diák sokszor lényegesen több időt szán az egyéni gyakorlásra és magasabb szintre jut el programozásból, mint a középiskolai követelmény. Ezzel én is így voltam gimnazista koromban. De ez nem azt jelenti, hogy a követelmény alacsony! Csak azt, hogy népszerű a tantárgy, és sokan nem elégszenek meg a tananyaggal.

2013. nov. 6. 18:13
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!