Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet txt-ből beolvasot...

Hogyan lehet txt-ből beolvasott adatokat rendszerezve tárolni C++ -ban? (struktúrával? )

Figyelt kérdés

Önszorgalomból elkezdtem gyakorolni a májusi emelt infó érettségire (az előző évek feladataiból), és kb 1 órája próbálkozom, de sehogy se sikerül beolvasni a txt-ből rendszerezve az adatokat. Muszáj C++ -ban megcsinálni (ezt tanultuk infó fakton a suliban és nem tudok májusig egy új nyelvet megtanulni). A beolvasás után már tudok műveleteket végezni velük, de nem tudom hogyan kéne rendszerezve tárolni.


Ez a feladat: A fájlban legfeljebb 500 versenyző adatai szerepelnek. A fájl első sorában a helyes válaszok szerepelnek. A fájl többi sora a versenyzők kódjával kezdődik, ezt egy szóköz, majd az adott versenyző által adott válaszok sorozata követi. A versenyzők kódja legfeljebb 5 karakterből áll. A válaszok a feladatokkal egyező sorrendben, elválasztójel nélkül,

nagybetűvel szerepelnek.


így néz ki a txt:

BCCCDBBBBCDAAA

AB123 BXCDBBACACADBC

AD995 BABCDABCBCBBBA

AH97 BCACDBDDBCBBCA

.

.

így tovább a versenyzők és a válaszaik.


Hogy tudom tárolni a helyes válaszokat és külön, hogy egy versenyző milyen választ adott?


2018. febr. 2. 16:39
 1/5 anonim ***** válasza:
2018. febr. 2. 17:04
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Ezzel nem lettem előrébb!!!
2018. febr. 2. 17:22
 3/5 sharkxxx ***** válasza:

#include <string>

#include <iostream>

#include <map>

#include <fstream>

#include <algorithm>


using std::cout;

using std::endl;

using std::string;

using std::multimap;

using std::ifstream;

using std::min;


typedef multimap<string, string> TCompetitorList;

typedef TCompetitorList::value_type TCompetitor;

typedef TCompetitorList::iterator TIterator;


const string FileName = "input.txt";


int GetScore(const string & Answer, const string & CorrectAnswer);


int main()

{

    TCompetitorList Competitors;

    string CorrectAnswer;

    string Code;

    string Answer;

    TIterator i;

    int Score;

   

    ifstream fin;

    fin.open(FileName.c_str());

    if (fin.is_open()) {

        fin >> CorrectAnswer;

        while (not fin.eof()) {

            fin >> Code;

            fin >> Answer;

            Competitors.insert(TCompetitor(Code, Answer));

        }

        fin.close();

    }

   

    cout << "CorrectAnswer: " << CorrectAnswer << endl;

    for (i = Competitors.begin(); i != Competitors.end(); i++) {

        Code = i->first;

        Answer = i->second;

        Score = GetScore(Answer, CorrectAnswer);

        cout << "Code: " << Code << "\t";

        cout << "Answer: " << Answer << "\t";

        cout << "Score: " << Score << endl;

    }

    return 0;

}


int GetScore(const string & Answer, const string & CorrectAnswer)

{

    int i;

    int n = min(Answer.length(), CorrectAnswer.length());

    int Score = 0;

    for (i = 0; i < n; i++) {

        if (Answer[i] == CorrectAnswer[i]) {

            Score++;

        }

    }

    return Score;

}

2018. febr. 2. 17:35
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

Köszönöm, közben rájöttem egy egyszerűbb megoldásra.


#include <iostream>

#include <fstream>

#include <string>


using namespace std;


int main()

{

string helyesvalasz, kodszama[500], valaszok[500];

int x=0;


fstream aa;

aa.open ("valaszok.txt");


getline (aa, helyesvalasz);

cout<<helyesvalasz<<endl;


while (aa)

{

aa>>kodszama[x]>>valaszok[x];

cout<<kodszama[x]<<" "<<valaszok[x]<<endl;

x++;

}


aa.close();


return 0;

}

2018. febr. 2. 17:54
 5/5 A kérdező kommentje:
Neked meg pár pofon hülye gyerek. Nem csodálom, hogy 47% vagy. Annyit is érsz.
2018. febr. 2. 20:58

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!