[C++] 2013 okt. Emelt Info érettségi 4. feladat (programozás) Sürgős:/ Valaki tud segíteni?
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.
"Ez az egyik bajom az érettségivel, hogy nem kódolni tanít meg hanem gyorsan gányolni és okádani."
Ez egy alapvető félreértés. Az érettségi nem tanít semmire, hanem egy vizsga. A középiskolai képzés pedig végképp nem kódolni tanít, és nem is ez a célja, csak itt a GYIK-on divat olyasmit várni tőle, ami nem feladata. Minden középiskolai tárgynak megvan a maga szakmai és nevelési célja, az informatikának köze nincs sem a kódoláshoz, sem a gányoláshoz. Ha elolvasod a tantárgyi és vizsgakövetelményeket, az lesz ott, hogy ALGORITMIZÁLÁS, ADATMODELLEZÉS. Na ez a tantárgyi cél, amiben a kódolás egy segédeszköz. A programozóképzés a felsőoktatás dolga, nem a középiskoláé! (Az informatikai szakközépről nem beszélek, az külön tészta, külön érettségivel.) A magyarórán nem képeznek költőket, a matekórán nem képeznek matematikusokat, a tesiórán nem képeznek élsportolókat, az informatikaórán nem képeznek se programozókat, se kódereket, ez egyszerűen nem feladatuk, az elvárásban van a hiba. Amit tanítaniuk kell, az egy gondolkodási struktúra, aminek a birtokában vidáman mehet progmatra vagy mérnök-infóra a user, és helyt fog állni.
A kérdező meg nem érdemel semmiféle segítséget!
1. Le volt írva az első válaszban, hogy pastebin.com, ne nyavalyogjál egy oldallal lejjebb, hogy a GYIK kiszedi a tabulátort. Kiszedi, na és?
2. Nem úgy van, hogy akit érdekel, majd ráguglizik a feladatra, hanem alapvető udvariasság a segítségnyújtókkal szemben, hogy te magad linkeld be kérés nélkül. Én gugli nélkül is tudom, hol keressem, mégse állnék neki matatni ennyi arrogancia láttán.
Rettentő kínos, hogy ilyen alapvető viselkedési normákra kell felhívni a figyelmedet, de ha te kérsz segítséget másoktól, akkor becsüld meg az idejüket, amit rád fordítanának, és adj meg minden segítséget külön kérés nélkül, hogy segíteni tudjunk. Ha te oktatod ki a segítőket, azzal a pofátlanság kategóriába versenyzel. Én pl. biztos több időt el tudok tölteni itt olyanokkal, akik megérdemlik, mint amennyit a GYIK-ra szánok...
Te aztán vissza tudsz vágni! A gyik-os nicknevemmel! :D Ez igen!
You won the internet!
"és én vagyok az arrogáns."
Konkrétan igen, mert szalonképesen fejeztem ki magam.
#12:
Értem mire gondolsz feladat alatt, DE:
Magyar érettségin ha rondán írok, kihagyom a bekezdéseket, ömlesztem a szöveget, áthúzgálok, firkálok, netalán helyesírási hibákat vétek akkor eléggé megcsonkítják a pontszámomat.
Infon mindegy a "külalak", csak működjön, a tanár meg bogarászhatja a részpontokat. Szerintem ez így hülyeség, annak fényében is hogy kb 8-10 programozási tételt kell megtanulni.
Bónusz: az emelt info többlettudását pár hét alatt letanítják mérnökinfón, matek nélkül meg meg lehet kb halni. Nem nagy érv, de akkor sem érzem egyenlőnek a színvonalat.
Kérdező:
Aludd ki magad és olvasd vissza a leírtakat építő jellegű kritikaként és legközelebb eszerint tegyél fel kérdést. Azzal hogy magadban lezárod, most könnyebb lesz, de sehova nem fogsz fejlődni és nem sajátítod el a kérdezés művészetét. Olvasnivaló: [link]
Bármelyik tárgy érettségi anyagával hetek alatt végeznek az egyetemen...
Az érettségin olyan követelményrendszernek kell lennie, ami az egységes javíthatóságot és a lehetőség szerint objektív és egyforma értékelést biztosítja. Számold meg, hányféle oprendszeren, programnyelven, programozási környezetben/IDE-vel lehet érettségizni. Az egyik magától tesz behúzásokat, a másik nem... Aztán nézd meg ugyanezt a magyarérettségin, ahol mindenki ugyanolyan papírra írja a dolgozatot a golyóstollával. És még ott is maximum 3 pontot lehet veszíteni egészen ordenáré külalakkal, ha alig olvasható vagy értelemzavaróan rendezetlen. ( [link] Tehát az "eléggé megcsonkítják" erős túlzás.
Viszont egy jó tanár a tanítás során elvárja a normális behúzásokat, és kőkeményen számon is kéri a dolgozatokban, már csak a saját érdekében is, hiszen neki kell hibát keresnie. Nem az érettségin kell mindennek kibuknia, ott az egységes értékelhetőség a fő szempont.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!