Dovolil jsem si tedy do vašeho projektu přidat komentáře své, snad odpovídají tomu, co jednotlivé řádky skutečně dělají. Jinak děkuju za pomoc.
//IMPORT KNIHOVEN
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main(){
//ZALOZENI PROMENNYCH
int konec_jm;
int znamky=0;
int poc_zn=0;
int projekty=0;
int poc_pr=0;
int oddelovac;
int pocet_mez=0;
//VYPIS NA KONZOLU
cout<< "PROSPECH:"<< endl;
cout << "==========================================" << endl;
cout << "JMENO" << '\t' << '\t' << " HODNOCENI" << endl;
cout << "==========================================" << endl;
fstream vstup("data.txt"); //urceni odkud se data budou do proudu cerpat
string radek; //zalozeni promenne radek
while(getline(vstup,radek)){ //nacitani jednotlivych radku
int delka=radek.size(); //nastaveni promenne delka na hodnotu poctu znaku na radku
// cyklus urcuje, kdy konci jmeno, pracuje dokud neni na konci radku
for(int i=0;i<delka;i++){
if(radek[i]==' '){ //pokud najde znak mezery, promenna pocet_mez
pocet_mez++; //se zvysi o 1
}
if(pocet_mez==2){ //pokud je pocet mezer roven dvema, konci jmeno
konec_jm=i-1; //a zacinaji znamky
}
}
cout << radek.substr(0,konec_jm) << '\t' ; //na konzolu se vypise jmeno a prijmeni
//dalsi cyklus nacita znamky
for(int i=konec_jm+1;i<delka;i++){ //zacina tam, kde skoncil predchozi cyklus
//(za koncem jmena)a pokracuje do konce radku
if(radek[i]==' '){
continue; //pokud narazi na mezeru mezi znamkami, pokracuje
}
if(radek[i]=='|'){
oddelovac=i; //pokud ale narazi na oddelovac ("|"), nastavi promenne oddelovac
break; //konecnou pozici a dale uz nepokracuje
}
else{
znamky+=int(radek[i])-48;
poc_zn++;
}
}
//nasledujici cyklus nacita znamky z projektu
for(int i=oddelovac+1;i<delka;i++){ //opet zacina tam, kde skoncil predchozi cyklus
//tzn. za oddelovacem
if(radek[i]==' '){
continue; //pokud narazi na mezeru mezi znamkami, pokracuje
}
else{
projekty+=int(radek[i])-48;
poc_pr++;}
}
//dale program rozhodne, zda zak uspel
if(poc_pr<3){
cout<<" neprospel/a"<<endl; //pokud ma zak mene nec 3 projekty, potom neprospel
}
else{
if(poc_zn<3){ //pokud ma zak mene nez 3 bezne znamky, potom je neklasifikovan
cout<<" neklasifikovan/a"<<endl;
}
else{
double prumer=(znamky+projekty*2.0)/(poc_zn+poc_pr*2.0); //pokud uspel v obojim,
cout << " " << prumer << endl; //muze se vypocitat prumer a vypsat se
}
}
//nastaveni promennych na deafultni hodnoty (0), pro pouziti v dalsim radku
poc_zn=0;
znamky=0;
projekty=0;
poc_pr=0;
}
cout << "==========================================" << endl;
system("PAUSE");
}
potřeboval bych ale vysvětlit toto:
else{
znamky+=int(radek[i])-48;
poc_zn++;
}