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
 1/21 anonim ***** válasza:
100%

Pontozz le ha megnyugtat, de ez így olvashatatlan.


Rendezd függvényekbe feladatonként és ne ide másolj be 100sort hanem pästebinre. Valamint nem ártana ha bőven kommentelnél, mi is értenénk mi a feladat.


Addig csak annyit vettem észre, hogy az ofstreamet nem zártad le.

2013. nov. 5. 19:11
Hasznos számodra ez a válasz?
 2/21 anonim ***** válasza:
Most nem gondolod komolyan, hogy valaki ezt kibogarássza...
2013. nov. 5. 19:12
Hasznos számodra ez a válasz?
 3/21 A kérdező kommentje:

Annyit mondtam, hogy aki hasznosat ad annak adok 100%ot, nem azt hogy lepontozom azt aki nem.

A másik én annyit mondtam hogy egy függvényt kell átnézni, amihez szerintem nem kell komment, ha valaki rágooglizik a feladatra.

ctrl+f el meg lehet keresni az utolsó előtti "ellenorzott" nevű függvényt azt kb. valszeg az if-el lesz valami.

Nem lehetetlent kértem szerintem.

2013. nov. 5. 19:30
 4/21 A kérdező kommentje:
és az Perry>.>
2013. nov. 5. 19:30
 5/21 anonim ***** válasza:

Magyarul Kerry.

És csak a miheztartás végett:

Valahogy így néz ki egy igényesen megírt és formázott C++ program:

[link]

Valami ilyesmit dobjál te is, ha valóban szeretnél segítséget.

Neked negyedannyi idő megformázni, mint bárki másnak.

2013. nov. 5. 19:35
Hasznos számodra ez a válasz?
 6/21 anonim ***** válasza:

Hát nézd, harmadszor próbálok szórakozásból kihívásként tekinteni a feladatodra, de valamiért mindig elmegy a kedvem tőle.


Ez az egyik bajom az érettségivel, hogy nem kódolni tanít meg hanem gyorsan gányolni és okádani. Jobb helyen ezért akkora karót kapnál, hogy utánna műteni kellene. És ne magyarázd meg nekem hogy ez így tökéletes légyszives...

2013. nov. 5. 19:37
Hasznos számodra ez a válasz?
 7/21 A kérdező kommentje:
Jó figy foglalhatnám osztályokba is, írhatnám olyan hatékonyan, ahogy az időt nem szégyellem rá. De hahó ez egy érettségi feladat.. Nem az érdekel, hogy máshol mit kapnék rá. Itt ez majdnem hibátlan, de m1 is magamtól is kezdek ráakadni a hibára. Ilyeneknél amúgy is az számít hogy gyorsan és még annál is gyorsabban.
2013. nov. 5. 19:45
 8/21 A kérdező kommentje:
Oks megoldva, ha valakit érdekel a megoldás, bár nem hiszem hogy azokat akik eddig írtak különösebben érdekelné... A datum vektor helyett mindenhol a függvényen belül a rendszam string karaktereire hivatkoztam, így a vektor integer értékei helyett a karakterkódot kérdeztem le. Nos igen hátrány, hogy a figyelem eloszlik főleg a feladatsor legvégére, de egy ilyen feladatsornál az idő számít és nem az hogy hogy tudom s*arrányalni a kódot.
2013. nov. 5. 19:53
 9/21 anonim ***** válasza:

Ez hülyeség.

Egy szép rendezett kódban a hibát megtalálni is jóval jóval egyszerűbb.

És nem tart sokkal tovább már az elején igényesen megírni a feladatokat.

Nem kell objektumorientáltan, az fölösleges, de a normális felbontás, tagolás mindenképpen segít.

2013. nov. 5. 21:04
Hasznos számodra ez a válasz?
 10/21 A kérdező kommentje:
lehet kezd leesni, hogy min problémáztok, de azthittem, hogy ez mindenki számára alap. A gyakori kérdések kiszedi a tabulátorokat. Ez rendesen van intendálva.
2013. nov. 5. 21:24
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!